@@ -199,3 +199,94 @@ jobs:
199199 idp_aws_report_upload_region : " ${{ secrets.IDP_AWS_REPORT_UPLOAD_REGION }}"
200200 idp_aws_report_upload_role_name : " ${{ secrets.IDP_AWS_REPORT_UPLOAD_ROLE_NAME }}"
201201 idp_aws_report_upload_bucket_endpoint : " ${{ secrets.IDP_AWS_REPORT_UPLOAD_BUCKET_ENDPOINT }}"
202+
203+ detect-event-schema-package-changes :
204+ name : " Check for changes to event schema package compared to main branch"
205+ runs-on : ubuntu-latest
206+ permissions :
207+ contents : read
208+ outputs :
209+ changed : ${{ steps.check.outputs.changed }}
210+ main_version : ${{ steps.check.outputs.main_version }}
211+
212+ steps :
213+ - name : " Checkout code"
214+ uses : actions/checkout@v4
215+ with :
216+ fetch-depth : 0
217+
218+ - name : Detect package changes and current version
219+ id : check
220+ run : |
221+ git fetch origin main
222+
223+ if git diff --quiet origin/main...HEAD -- internal/events; then
224+ echo "No changes in event schemas package"
225+ echo "changed=false" >> $GITHUB_OUTPUT
226+ else
227+ echo "Changes detected in event schemas"
228+ echo "changed=true" >> $GITHUB_OUTPUT
229+ fi
230+
231+ if content=$(git show origin/main:internal/events/package.json 2>/dev/null); then
232+ version=$(jq -r .version <<< $content);
233+ else
234+ version=null;
235+ fi
236+
237+ echo "Detected package version $version in main branch"
238+ echo "main_version=$version" >> $GITHUB_OUTPUT
239+
240+ # check-schemas-generated:
241+ # name: Check event schemas have been regenerated
242+ # needs: detect-event-schema-package-changes
243+ # if: needs.detect-event-schema-package-changes.outputs.changed == 'true'
244+ # runs-on: ubuntu-latest
245+ # permissions:
246+ # contents: read
247+ # steps:
248+ # - name: "Checkout code"
249+ # uses: actions/checkout@v4
250+ #
251+ # - name: "Cache node_modules"
252+ # uses: actions/cache@v4
253+ # with:
254+ # path: |
255+ # **/node_modules
256+ # key: ${{ runner.os }}-node-${{ inputs.nodejs_version }}-${{ hashFiles('**/package-lock.json') }}
257+ # restore-keys: |
258+ # ${{ runner.os }}-node-${{ inputs.nodejs_version }}-
259+ #
260+ # - name: "Re-generate schemas"
261+ # run: |
262+ # npm ci
263+ # npm --workspace internal/events run gen:jsonschema
264+ #
265+ # - name: Check for schema changes
266+ # run: git diff --quiet internal/events/schemas
267+
268+ check-schema-version-change :
269+ name : Check event schema version has been updated
270+ needs : detect-event-schema-package-changes
271+ if : needs.detect-event-schema-package-changes.outputs.changed == 'true'
272+ runs-on : ubuntu-latest
273+ permissions :
274+ contents : read
275+ steps :
276+ - name : Checkout code
277+ uses : actions/checkout@v4
278+
279+ - name : Check schema versions
280+ run : |
281+ source scripts/is_valid_increment.sh
282+
283+ main_version="${{ needs.detect-event-schema-package-changes.outputs.main_version }}"
284+ echo "Main version: ${{ needs.detect-event-schema-package-changes.outputs.main_version }}"
285+
286+ local_version=$(jq -r '.version' internal/events/package.json)
287+ echo "Local version: $local_version"
288+
289+ if ! is_valid_increment "$main_version" "$local_version" ; then
290+ 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)."
291+ exit 1
292+ fi
0 commit comments