23
23
24
24
outputs :
25
25
checksum : ${{ steps.checksum.outputs.md5 }}
26
+ changes : ${{ steps.changes.outputs }}
26
27
27
28
steps :
28
29
- name : " Checkout"
@@ -107,6 +108,15 @@ jobs:
107
108
- name : " Delete checksum PHAR"
108
109
run : " rm tmp/phpstan.phar"
109
110
111
+ - uses : dorny/paths-filter@v3
112
+ id : changes
113
+ with :
114
+ filters : |
115
+ compiler:
116
+ - 'compiler/**'
117
+ - '.github/workflows/phar.yml'
118
+ - '.github/scripts/**'
119
+
110
120
integration-tests :
111
121
if : github.event_name == 'pull_request'
112
122
needs : compiler-tests
@@ -131,6 +141,72 @@ jobs:
131
141
ref : 2.1.x
132
142
phar-checksum : ${{needs.compiler-tests.outputs.checksum}}
133
143
144
+ checksum-phar :
145
+ if : github.event_name == 'pull_request' && needs.compiler-tests.outputs.changes.compiler == 'true'
146
+ needs : compiler-tests
147
+ runs-on : " ubuntu-latest"
148
+ steps :
149
+ - uses : actions/checkout@v4
150
+
151
+ - name : Get base commit SHA
152
+ id : base
153
+ run : echo "base_sha=${{ github.event.pull_request.base.sha }}" >> "$GITHUB_OUTPUT"
154
+
155
+ - name : Set up Node.js
156
+ uses : actions/setup-node@v4
157
+ with :
158
+ node-version : 20
159
+
160
+ - name : Install dependencies
161
+ working-directory : .github/scripts
162
+ run : npm ci
163
+
164
+ - name : " Compile TS scripts"
165
+ working-directory : .github/scripts
166
+ run : npx tsc
167
+
168
+ - name : Find phar-file-checksum from base commit
169
+ id : find-artifact
170
+ uses : actions/github-script@v7
171
+ env :
172
+ BASE_SHA : ${{ steps.base.outputs.base_sha }}
173
+ ARTIFACT_NAME : phar-file-checksum
174
+ WORKFLOW_NAME : Compile PHAR
175
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
176
+ with :
177
+ script : |
178
+ const script = require('./.github/scripts/dist/find-artifact.js');
179
+ await script({github, context, core})
180
+
181
+ - name : Download old artifact by ID
182
+ uses : actions/download-artifact@v4
183
+ with :
184
+ artifact-ids : ${{ steps.find-artifact.outputs.artifact_id }}
185
+ run-id : ${{ steps.find-artifact.outputs.run_id }}
186
+ github-token : ${{ secrets.GITHUB_TOKEN }}
187
+ path : ./phar-file-checksum-old.phar
188
+
189
+ - name : " Save old checksum"
190
+ id : " old_checksum"
191
+ run : echo "md5=$(md5sum phar-file-checksum-old.phar | cut -d' ' -f1)" >> $GITHUB_OUTPUT
192
+
193
+ - name : Download new artifact
194
+ uses : actions/download-artifact@v4
195
+ with :
196
+ name : phar-file-checksum
197
+ path : ./phar-file-checksum-new.phar
198
+
199
+ - name : " Save new checksum"
200
+ id : " new_checksum"
201
+ run : echo "md5=$(md5sum phar-file-checksum-new.phar | cut -d' ' -f1)" >> $GITHUB_OUTPUT
202
+
203
+ - name : " Assert checksum"
204
+ run : |
205
+ old_checksum=${{ steps.old_checksum.outputs.md5 }}
206
+ new_checksum=${{ steps.new_checksum.outputs.md5 }}
207
+ [[ "$old_checksum" == "$new_checksum" ]];
208
+
209
+
134
210
commit :
135
211
name : " Commit PHAR"
136
212
if : " github.repository_owner == 'phpstan' && (github.ref == 'refs/heads/2.1.x' || startsWith(github.ref, 'refs/tags/'))"
0 commit comments