@@ -199,3 +199,85 @@ 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+
211+ steps :
212+ - name : " Checkout code"
213+ uses : actions/checkout@v4
214+ with :
215+ fetch-depth : 0
216+
217+ - name : Detect package changes and current version
218+ id : check
219+ run : |
220+ git fetch origin main
221+
222+ if git diff --quiet origin/main...HEAD -- packages/event-schemas; then
223+ echo "No changes in event schemas package"
224+ echo "changed=false" >> $GITHUB_OUTPUT
225+ else
226+ echo "Changes detected in event schemas"
227+ echo "changed=true" >> $GITHUB_OUTPUT
228+ fi
229+
230+ if content=$(git show main:packages/event-schemas/package.json 2>/dev/null); then
231+ version=$(jq -r .version <<< $content);
232+ else
233+ version=null;
234+ fi
235+
236+ echo "Detected package version $version in main branch"
237+ echo "main_version=$version" >> $GITHUB_OUTPUT
238+
239+ check-schemas-generated :
240+ name : Check event schemas have been regenerated
241+ needs : detect-event-schema-package-changes
242+ if : needs.detect-event-schema-package-changes.outputs.changed == 'true'
243+ runs-on : ubuntu-latest
244+ permissions :
245+ contents : read
246+ steps :
247+ - name : " Checkout code"
248+ uses : actions/checkout@v4
249+
250+ - name : Install dependencies
251+ run : npm ci
252+
253+ - name : Re-generate schemas
254+ run : npm --workspace packages/event-schemas run generate-json-schemas
255+
256+ - name : Check for schema changes
257+ run : git diff --quiet packages/event-schemas/schemas
258+
259+ check-schema-version-change :
260+ name : Check event schema version has been updated
261+ needs : detect-event-schema-package-changes
262+ if : needs.detect-event-schema-package-changes.outputs.changed == 'true'
263+ runs-on : ubuntu-latest
264+ permissions :
265+ contents : read
266+ steps :
267+ - name : Checkout code
268+ uses : actions/checkout@v4
269+
270+ - name : Check schema versions
271+ run : |
272+ source scripts/is_valid_increment.sh
273+
274+ main_version="${{ needs.detect-event-schema-package-changes.outputs.main_version }}"
275+ echo "Main version: ${{ needs.detect-event-schema-package-changes.outputs.main_version }}"
276+
277+ local_version=$(jq -r '.version' packages/event-schemas/package.json)
278+ echo "Local version: $local_version"
279+
280+ if ! is_valid_increment "$main_version" "$local_version" ; then
281+ 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)."
282+ exit 1
283+ fi
0 commit comments