-
Notifications
You must be signed in to change notification settings - Fork 98
102 lines (101 loc) · 3.87 KB
/
roll-stable.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
name: Roll Stable
on:
workflow_dispatch:
schedule:
# Every day at 10:00 UTC
- cron: "0 10 * * *"
permissions:
contents: write
jobs:
build:
name: Build
runs-on: ubuntu-22.04
steps:
- uses: actions/github-script@v7
id: determine-version
with:
script: |
const allBranches = await github.paginate("GET /repos/{owner}/{repo}/branches", {
owner: 'microsoft',
repo: 'playwright',
});
const relevantBranches = allBranches.filter(branch => branch.name.startsWith('release-'));
relevantBranches.sort((a, b) => {
const aVersion = parseFloat(a.name.split('-')[1]);
const bVersion = parseFloat(b.name.split('-')[1]);
return aVersion - bVersion;
});
return relevantBranches.pop().name.replace(/^release-/, '');
result-encoding: string
- uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
repository: 'microsoft/playwright'
path: playwright
ref: 'release-${{ steps.determine-version.outputs.result }}'
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
- name: Delete previous Stable
run: node src/versions.js --delete stable
- name: Roll
run: npm run roll
env:
SRC_DIR: ./playwright
- name: Create new version
run: npm run version-all
- name: Prepare branch
id: prepare-branch
run: |
VERSION=${{ steps.determine-version.outputs.result }}
BRANCH_NAME="roll/stable-$VERSION"
set +e
git diff -s --exit-code
HAS_CHANGES="$?"
set -e
GIT_COMMIT="$(cd playwright && git rev-parse HEAD && cd ..)"
echo "HAS_CHANGES=$HAS_CHANGES" >> $GITHUB_OUTPUT
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_OUTPUT
echo "GIT_COMMIT=$GIT_COMMIT" >> $GITHUB_OUTPUT
if [[ $HAS_CHANGES == 0 ]]; then
echo "No changes detected, skipping PR"
exit 0
fi
git config --global user.name github-actions
git config --global user.email 41898282+github-actions[bot]@users.noreply.github.com
git checkout -b "$BRANCH_NAME"
# We only want to upgrade the version itself, not the next release
git add "*versioned*"
git add "**/versions.json"
git commit -m "feat(roll): roll to $VERSION Playwright"
git push origin $BRANCH_NAME --force
- name: Check for existing Pull Request
id: check-pr
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }}
script: |
const { data: pullRequests } = await github.rest.pulls.list({
owner: 'microsoft',
repo: 'playwright.dev',
head: `microsoft:${{ steps.prepare-branch.outputs.BRANCH_NAME }}`,
state: 'open'
});
return pullRequests.length > 0 ? 'true' : 'false';
result-encoding: string
- name: Create Pull Request
uses: actions/github-script@v7
if: ${{ steps.prepare-branch.outputs.HAS_CHANGES == '1' && steps.check-pr.outputs.result == 'false' }}
with:
github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }}
script: |
await github.rest.pulls.create({
owner: 'microsoft',
repo: 'playwright.dev',
head: 'microsoft:${{ steps.prepare-branch.outputs.BRANCH_NAME }}',
base: 'main',
title: 'feat(roll): roll to ${{ steps.determine-version.outputs.result }} Playwright',
body: 'Upstream commit: https://github.com/microsoft/playwright/commit/${{ steps.prepare-branch.outputs.GIT_COMMIT }}',
});