diff --git a/.github/workflows/update-compat-data.yml b/.github/workflows/update-compat-data.yml new file mode 100644 index 000000000000..73582e81b566 --- /dev/null +++ b/.github/workflows/update-compat-data.yml @@ -0,0 +1,74 @@ +name: Update compat data +env: + YARN_ENABLE_SCRIPTS: false # disable post-install scripts +on: + workflow_dispatch: + inputs: {} + schedule: + - cron: "0 0 * * 5" + +jobs: + createPullRequest: + name: Update compat-table + runs-on: ubuntu-latest + permissions: + contents: write # for Git to git push + steps: + - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + with: + repository: kangax/compat-table + path: packages/babel-compat-data/build/compat-table + - name: Use Node.js latest + uses: actions/setup-node@v2-beta + with: + node-version: "*" + - name: Get latest kangax/compat-table commit + id: lastCommit + run: echo "::set-output name=sha1::$(./scripts/update-compat-table/get-last-commit.sh)" + - name: Update compat-table commit + run: echo ${{ steps.lastCommit.outputs.sha1 }} | ./scripts/update-compat-table/bump-compat-table-commit.sh + - name: Check if it has been updated + run: | + [[ -z $(git status -s) ]] && + echo "::set-output name=updated::false" || + echo "::set-output name=updated::true" + id: updated + - name: Bootstrap + if: steps.updated.outputs.updated == 'true' + run: make bootstrap + - name: Run update script + if: steps.updated.outputs.updated == 'true' + run: make build-compat-data + - name: Update tests + if: steps.updated.outputs.updated == 'true' + continue-on-error: true + run: yarn jest + env: + OVERWRITE: true + - name: Update tests (Babel 8) + if: steps.updated.outputs.updated == 'true' + continue-on-error: true + run: yarn jest + env: + OVERWRITE: true + BABEL_8_BREAKING: true + - name: Commit changes + if: steps.updated.outputs.updated == 'true' + run: | + git config user.name "Babel Bot" + git config user.email "babel-bot@users.noreply.github.com" + git checkout -b update-compat-data + git commit -am "chore: update compat data to ${{ steps.lastCommit.outputs.sha1 }}" + git push --force origin update-compat-data + - name: Create Pull Request + if: steps.updated.outputs.updated == 'true' + uses: babel/actions/create-pull-request@v2 + with: + token: ${{ secrets.BOT_TOKEN }} + branch: update-compat-data + title: Update compat data + description: Update compat data to [${{ steps.lastCommit.outputs.sha1 }}](https://github.com/kangax/compat-table/commit/${{ steps.lastCommit.outputs.sha1 }}). + labels: | + area: compat-data + repo automation :robot: diff --git a/.github/workflows/update-parser-tests.yml b/.github/workflows/update-parser-tests.yml index 960aa4ab55a8..f4c00010f907 100644 --- a/.github/workflows/update-parser-tests.yml +++ b/.github/workflows/update-parser-tests.yml @@ -12,8 +12,9 @@ permissions: jobs: createPullRequest: + name: Update parser test262 tests permissions: - contents: write # for Git to git push + contents: write # for Git to git push runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -47,40 +48,12 @@ jobs: git commit -am "chore: update test262 to ${{ steps.test262.outputs.sha1 }}" git push --force origin update-test262-parser - name: Create Pull Request - uses: actions/github-script@v4 + uses: babel/actions/create-pull-request@v2 with: - github-token: ${{ secrets.BOT_TOKEN }} - script: | - const base = process.env.GITHUB_REF.replace("refs/heads/", ""); - const requestParam = { - owner: context.repo.owner, - repo: context.repo.repo, - head: context.repo.owner + ":update-test262-parser", - base: base, - state: "open" - }; - const result = await github.pulls.list(requestParam); - console.log("Open PR request: ", requestParam); - console.log("Open PR response: ", result); - const prs = result.data; - if (prs.length === 0) { - const requestParam = { - owner: context.repo.owner, - repo: context.repo.repo, - head: "update-test262-parser", - base: base, - maintainer_can_modify: true, - title: "Update test262", - body: "Update test262 to [${{ steps.test262.outputs.sha1 }}](https://github.com/tc39/test262/commit/${{ steps.test262.outputs.sha1 }}).", - }; - const result = await github.pulls.create(requestParam); - console.log("Create PR request: ", requestParam) - console.log("Create PR response: ", result); - - github.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: result.data.number, - labels: ["area: test262", "repo automation :robot:"] - }) - } + token: ${{ secrets.BOT_TOKEN }} + branch: update-test262-parser + title: Update test262 + description: Update test262 to [${{ steps.test262.outputs.sha1 }}](https://github.com/tc39/test262/commit/${{ steps.test262.outputs.sha1 }}). + labels: | + area: test262 + repo automation :robot: diff --git a/scripts/update-compat-table/bump-compat-table-commit.sh b/scripts/update-compat-table/bump-compat-table-commit.sh new file mode 100755 index 000000000000..29209287c525 --- /dev/null +++ b/scripts/update-compat-table/bump-compat-table-commit.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# read given commit SHA1 from stdin, update to COMPAT_TABLE_COMMIT in download-compat-table.sh +# usage: +# ./scripts/update-compat-table/get-last-commit.sh | ./scripts/update-compat-table/bump-compat-table-commit.sh + +set -e +perl -i -pe 's/^COMPAT_TABLE_COMMIT.+$/COMPAT_TABLE_COMMIT='$(cat)'/' ./packages/babel-compat-data/scripts/download-compat-table.sh diff --git a/scripts/update-compat-table/get-last-commit.sh b/scripts/update-compat-table/get-last-commit.sh new file mode 100755 index 000000000000..3ad689d9a719 --- /dev/null +++ b/scripts/update-compat-table/get-last-commit.sh @@ -0,0 +1,4 @@ +set -e +cd ./packages/babel-compat-data/build/compat-table +git fetch -q origin HEAD +git rev-parse FETCH_HEAD