@@ -10,22 +10,60 @@ permissions:
1010
1111jobs :
1212 update-snapshots :
13- if : ${{ github.event.issue.pull_request && contains(github.event.comment.body, 'please update playwright snapshots') }}
13+ if : >
14+ (
15+ github.event.issue.author_association == 'OWNER' ||
16+ github.event.issue.author_association == 'COLLABORATOR' ||
17+ github.event.issue.author_association == 'MEMBER'
18+ ) && github.event.issue.pull_request && contains(github.event.comment.body, 'please update snapshots')
1419 runs-on : ubuntu-latest
1520
1621 steps :
22+ - name : React to the triggering comment
23+ run : |
24+ gh api repos/${{ github.repository }}/issues/comments/${{ github.event.comment.id }}/reactions --raw-field 'content=+1'
25+ env :
26+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
27+
1728 - name : Checkout
1829 uses : actions/checkout@v4
1930 with :
2031 token : ${{ secrets.GITHUB_TOKEN }}
2132
22- - name : Configure git to use https
23- run : git config --global hub.protocol https
33+ - name : Get PR Info
34+ id : pr
35+ env :
36+ PR_NUMBER : ${{ github.event.issue.number }}
37+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
38+ GH_REPO : ${{ github.repository }}
39+ COMMENT_AT : ${{ github.event.comment.created_at }}
40+ run : |
41+ pr="$(gh api /repos/${GH_REPO}/pulls/${PR_NUMBER})"
42+ head_sha="$(echo "$pr" | jq -r .head.sha)"
43+ pushed_at="$(echo "$pr" | jq -r .pushed_at)"
44+
45+ if [[ $(date -d "$pushed_at" +%s) -gt $(date -d "$COMMENT_AT" +%s) ]]; then
46+ echo "Updating is not allowed because the PR was pushed to (at $pushed_at) after the triggering comment was issued (at $COMMENT_AT)"
47+ exit 1
48+ fi
49+
50+ echo "head_sha=$head_sha" >> $GITHUB_OUTPUT
2451
2552 - name : Checkout the branch from the PR that triggered the job
26- run : hub pr checkout ${{ github.event.issue.number }}
2753 env :
2854 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
55+ run : gh pr checkout ${{ github.event.issue.number }}
56+
57+ - name : Validate the fetched branch HEAD revision
58+ env :
59+ EXPECTED_SHA : ${{ steps.pr.outputs.head_sha }}
60+ run : |
61+ actual_sha="$(git rev-parse HEAD)"
62+
63+ if [[ "$actual_sha" != "$EXPECTED_SHA" ]]; then
64+ echo "The HEAD of the checked out branch ($actual_sha) differs from the HEAD commit available at the time when trigger comment was submitted ($EXPECTED_SHA)"
65+ exit 1
66+ fi
2967
3068 - name : Base Setup
3169 uses : jupyterlab/maintainer-tools/.github/actions/base-setup@v1
4785 # Playwright knows how to start JupyterLab server
4886 start_server_script : ' null'
4987 test_folder : ui-tests
88+ npm_client : jlpm
0 commit comments