Skip to content

Commit 8e3c470

Browse files
CCM-11027: 108f9ede3daec4e9c858c54b6ba6b95fdfcb7ade
1 parent eff90d4 commit 8e3c470

File tree

3 files changed

+113
-2
lines changed

3 files changed

+113
-2
lines changed

.github/workflows/pr_closed.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,12 @@ jobs:
7878
- name: check if local version differs from latest published version
7979
id: check-version
8080
run: |
81-
published_version=$(npm view @nhsdigital/nhs-notify-event-schemas-template-management --json 2>/dev/null | jq -r '.["dist-tags"].latest')
82-
local_version=$(cat packages/event-schemas/package.json | jq -r '.version')
81+
published_version=$(npm view @nhsdigital/nhs-notify-event-schemas-template-management --json 2>/dev/null | jq -r '.["dist-tags"].latest // "null"')
82+
echo "Published version: $published_version"
83+
84+
local_version=$(jq -r '.version' packages/event-schemas/package.json)
85+
echo "Local version: $local_version"
86+
8387
if [[ $local_version = $published_version ]]; then
8488
echo "Local version is the same as the latest published version - skipping publish"
8589
echo "version_changed=false" >> $GITHUB_OUTPUT

.github/workflows/stage-1-commit.yaml

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

scripts/is_valid_increment.sh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
is_valid_increment() {
2+
local current="$1"
3+
local next="$2"
4+
5+
if [[ "$current" == "null" ]]; then
6+
if [[ "$next" == "1.0.0" ]]; then
7+
return 0 # valid initial version
8+
else
9+
return 1 # invalid first version
10+
fi
11+
fi
12+
13+
IFS='.' read -r curr_major curr_minor curr_patch <<< "$current"
14+
IFS='.' read -r new_major new_minor new_patch <<< "$next"
15+
16+
if (( new_major == curr_major && new_minor == curr_minor && new_patch == curr_patch + 1 )); then
17+
return 0 # valid patch bump
18+
elif (( new_major == curr_major && new_minor == curr_minor + 1 && new_patch == 0 )); then
19+
return 0 # valid minor bump
20+
elif (( new_major == curr_major + 1 && new_minor == 0 && new_patch == 0 )); then
21+
return 0 # valid major bump
22+
else
23+
return 1 # invalid or skipped
24+
fi
25+
}

0 commit comments

Comments
 (0)