@@ -10,7 +10,12 @@ permissions:
10
10
11
11
jobs :
12
12
update-snapshots :
13
- if : ${{ github.event.issue.pull_request && contains(github.event.comment.body, 'please update 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')
14
19
runs-on : ubuntu-latest
15
20
16
21
steps :
@@ -25,10 +30,40 @@ jobs:
25
30
with :
26
31
token : ${{ secrets.GITHUB_TOKEN }}
27
32
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
51
+
28
52
- name : Checkout the branch from the PR that triggered the job
29
- run : gh pr checkout ${{ github.event.issue.number }}
30
53
env :
31
54
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
32
67
33
68
- name : Base Setup
34
69
uses : jupyterlab/maintainer-tools/.github/actions/base-setup@v1
48
83
# Playwright knows how to start JupyterLab server
49
84
start_server_script : ' null'
50
85
test_folder : ui-tests
86
+ npm_client : jlpm
0 commit comments