@@ -199,3 +199,86 @@ 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 -- packages/event-schemas; 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:packages/event-schemas/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 : Install dependencies
252+ run : npm ci
253+
254+ - name : Re-generate schemas
255+ run : npm --workspace packages/event-schemas run generate-json-schemas
256+
257+ - name : Check for schema changes
258+ run : git diff --quiet packages/event-schemas/schemas
259+
260+ check-schema-version-change :
261+ name : Check event schema version has been updated
262+ needs : detect-event-schema-package-changes
263+ if : needs.detect-event-schema-package-changes.outputs.changed == 'true'
264+ runs-on : ubuntu-latest
265+ permissions :
266+ contents : read
267+ steps :
268+ - name : Checkout code
269+ uses : actions/checkout@v4
270+
271+ - name : Check schema versions
272+ run : |
273+ source scripts/is_valid_increment.sh
274+
275+ main_version="${{ needs.detect-event-schema-package-changes.outputs.main_version }}"
276+ echo "Main version: ${{ needs.detect-event-schema-package-changes.outputs.main_version }}"
277+
278+ local_version=$(jq -r '.version' packages/event-schemas/package.json)
279+ echo "Local version: $local_version"
280+
281+ if ! is_valid_increment "$main_version" "$local_version" ; then
282+ 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)."
283+ exit 1
284+ fi
0 commit comments