@@ -247,11 +247,15 @@ jobs:
247247 run : |
248248 git fetch origin main
249249
250- if git diff --quiet origin/main...HEAD -- packages/events; then
250+ changed_files=$(git diff --name-only origin/main...HEAD -- packages/events)
251+ non_test_changes=$(printf '%s\n' "$changed_files" | grep -Ev '(^|/)(__tests__|tests)(/|$)' || true)
252+
253+ if [[ -z "$non_test_changes" ]]; then
251254 echo "No changes in event schemas package"
252255 echo "changed=false" >> $GITHUB_OUTPUT
253256 else
254257 echo "Changes detected in event schemas"
258+ echo "$non_test_changes"
255259 echo "changed=true" >> $GITHUB_OUTPUT
256260 fi
257261
@@ -264,56 +268,66 @@ jobs:
264268 echo "Detected package version $version in main branch"
265269 echo "main_version=$version" >> $GITHUB_OUTPUT
266270
267- check-schemas-generated :
268- name : Check event schemas have been regenerated
271+ check-schema-version-change :
272+ name : Check event schema version has been updated
269273 needs : detect-event-schema-package-changes
270274 if : needs.detect-event-schema-package-changes.outputs.changed == 'true'
271275 runs-on : ubuntu-latest
272276 permissions :
273277 contents : read
274278 steps :
275- - name : " Checkout code"
279+ - name : Checkout code
276280 uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
277- - name : " Setup pnpm"
278- uses : pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
279- with :
280- version : " ${{ inputs.pnpm_version }}"
281- cache : true
282- - name : " Use Node.js"
283- uses : actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
284- with :
285- node-version-file : ' .tool-versions'
286- cache : ' pnpm'
287-
288- - name : " Re-generate schemas"
281+ - name : Check schema versions
289282 run : |
290- pnpm install --frozen-lockfile
291- pnpm --filter @nhsdigital/nhs-notify-events-client-config run gen:jsonschema
283+ source scripts/is_valid_increment.sh
292284
293- - name : Check for schema changes
294- run : git diff --quiet packages/events/schemas
285+ main_version="${{ needs.detect-event-schema-package- changes.outputs.main_version }}"
286+ echo "Main version: ${{ needs.detect-event-schema-package-changes.outputs.main_version }}"
295287
296- check-schema-version-change :
297- name : Check event schema version has been updated
288+ local_version=$(jq -r '.version' packages/events/package.json)
289+ echo "Local version: $local_version"
290+
291+ if ! is_valid_increment "$main_version" "$local_version" ; then
292+ echo "Error: Event Schema package has changed, but new version ($local_version) is not a valid increment from latest version on main branch ($main_version)."
293+ exit 1
294+ fi
295+
296+ check-event-schemas-version-change :
297+ name : Check for event schemas package version change
298298 needs : detect-event-schema-package-changes
299299 if : needs.detect-event-schema-package-changes.outputs.changed == 'true'
300+ outputs :
301+ version_changed : ${{ steps.check-version.outputs.version_changed }}
300302 runs-on : ubuntu-latest
301303 permissions :
302304 contents : read
305+ packages : read
303306 steps :
304307 - name : Checkout code
305308 uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
306- - name : Check schema versions
307- run : |
308- source scripts/is_valid_increment.sh
309309
310- main_version="${{ needs.detect-event-schema-package-changes.outputs.main_version }}"
311- echo "Main version: ${{ needs.detect-event-schema-package-changes.outputs.main_version }}"
310+ - name : Setup NodeJS
311+ uses : actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
312+ with :
313+ node-version : " ${{ inputs.nodejs_version }}"
314+
315+ - name : Check if local version differs from latest published version
316+ id : check-version
317+ env :
318+ NODE_AUTH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
319+ run : |
320+ published_version=$(npm view @nhsdigital/nhs-notify-events-client-config --registry=https://npm.pkg.github.com --json 2>/dev/null | jq -r '.["dist-tags"].latest // "null"')
321+ echo "Published version: $published_version"
312322
313323 local_version=$(jq -r '.version' packages/events/package.json)
314324 echo "Local version: $local_version"
315325
316- if ! is_valid_increment "$main_version" "$local_version" ; then
317- echo "Error: Event Schema package has changed, but new version ($local_version) is not a valid increment from latest version on main branch ($main_version)."
326+ if [[ $local_version = $published_version ]]; then
327+ echo "ERROR: Local version is the same as the latest published version, but event schemas have changed"
328+ echo "version_changed=false" >> $GITHUB_OUTPUT
318329 exit 1
330+ else
331+ echo "Local version is different to the latest published version - a new version will be published"
332+ echo "version_changed=true" >> $GITHUB_OUTPUT
319333 fi
0 commit comments