Skip to content

Commit f76c231

Browse files
committed
Refactor schemas package
1 parent 6d4b0e1 commit f76c231

31 files changed

+844
-10814
lines changed

.github/workflows/pr_closed.yaml

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
name: PR Closed
2+
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
types: [closed]
7+
branches:
8+
- main
9+
10+
concurrency:
11+
group: ${{ github.workflow }}-${{ github.ref }}
12+
cancel-in-progress: false
13+
14+
jobs:
15+
check-merge-or-workflow-dispatch:
16+
runs-on: ubuntu-latest
17+
outputs:
18+
deploy: ${{ steps.check.outputs.deploy }}
19+
steps:
20+
- name: Check if PR was merged or workflow is triggered by workflow_dispatch
21+
id: check
22+
run: |
23+
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
24+
echo "deploy=true" >> $GITHUB_OUTPUT
25+
echo "Job triggered by workflow_dispatch - running 'deploy-main'"
26+
elif [[ "${{ github.event_name }}" == "pull_request" && "${{ github.event.pull_request.merged }}" == "true" ]]; then
27+
echo "deploy=true" >> $GITHUB_OUTPUT
28+
echo "Job triggered by Merged PR - running 'deploy-main'"
29+
else
30+
echo "deploy=false" >> $GITHUB_OUTPUT
31+
echo "Job not triggered by workflow_dispatch or Merged PR - Skipping 'deploy-main'"
32+
fi
33+
34+
check-event-schemas-version-change:
35+
name: Check for event schemas package version change
36+
needs: check-merge-or-workflow-dispatch
37+
if: needs.check-merge-or-workflow-dispatch.outputs.deploy == 'true'
38+
outputs:
39+
version_changed: ${{ steps.check-version.outputs.version_changed }}
40+
runs-on: ubuntu-latest
41+
permissions:
42+
contents: read
43+
packages: read
44+
steps:
45+
- name: Checkout code
46+
uses: actions/[email protected]
47+
48+
- name: Setup NodeJS
49+
uses: actions/setup-node@v4
50+
with:
51+
node-version: ${{ inputs.nodejs_version }}
52+
53+
- name: check if local version differs from latest published version
54+
id: check-version
55+
run: |
56+
published_version=$(npm view @nhsdigital/nhs-notify-event-schemas-letter-rendering --json 2>/dev/null | jq -r '.["dist-tags"].latest // "null"')
57+
echo "Published version: $published_version"
58+
59+
local_version=$(jq -r '.version' packages/events/package.json)
60+
echo "Local version: $local_version"
61+
62+
if [[ $local_version = $published_version ]]; then
63+
echo "Local version is the same as the latest published version - skipping publish"
64+
echo "version_changed=false" >> $GITHUB_OUTPUT
65+
else
66+
echo "Local version is different to the latest published version - publishing new version"
67+
echo "version_changed=true" >> $GITHUB_OUTPUT
68+
fi
69+
70+
test-contract-provider:
71+
name: "Test contracts (provider)"
72+
needs: check-event-schemas-version-change
73+
if: needs.check-event-schemas-version-change.outputs.version_changed == 'true'
74+
runs-on: ubuntu-latest
75+
permissions:
76+
contents: read
77+
packages: read
78+
steps:
79+
- name: "Checkout code"
80+
uses: actions/[email protected]
81+
- name: Setup NodeJS
82+
uses: actions/setup-node@v4
83+
with:
84+
node-version: ${{ inputs.nodejs_version }}
85+
- name: "Install dependencies"
86+
run: npm ci
87+
- name: "Run provider contract tests"
88+
run: make test-contract-provider
89+
env:
90+
GITHUB_PACKAGES_TOKEN: ${{ secrets.GITHUB_TOKEN }}
91+
92+
publish-event-schemas:
93+
name: Publish event schemas package to GitHub package registry
94+
needs:
95+
- check-event-schemas-version-change
96+
- test-contract-provider
97+
if: needs.check-event-schemas-version-change.outputs.version_changed == 'true'
98+
runs-on: ubuntu-latest
99+
permissions:
100+
contents: read
101+
packages: write
102+
103+
steps:
104+
- name: Checkout code
105+
uses: actions/[email protected]
106+
107+
- name: Setup NodeJS
108+
uses: actions/setup-node@v4
109+
with:
110+
node-version: ${{ inputs.nodejs_version }}
111+
registry-url: 'https://npm.pkg.github.com'
112+
113+
- name: Install dependencies
114+
run: npm ci
115+
116+
- name: Publish to GitHub Packages
117+
run: npm publish --workspace packages/events
118+
env:
119+
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

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

Lines changed: 22 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -223,29 +223,22 @@ jobs:
223223
run: |
224224
git fetch origin main
225225
226-
declare -A versions
226+
if git diff --quiet origin/main...HEAD -- packages/events; then
227+
echo "No changes in event schemas package"
228+
echo "changed=false" >> $GITHUB_OUTPUT
229+
else
230+
echo "Changes detected in event schemas"
231+
echo "changed=true" >> $GITHUB_OUTPUT
232+
fi
227233
228-
for pkg in $(git ls-tree -d --name-only origin/main:cloudevents/schemas | grep -v '^cloudevents/schemas/package.json$'); do
229-
if content=$(git show "origin/main:$pkg/package.json" 2>/dev/null); then
230-
version=$(jq -r .version <<< "$content")
231-
else
232-
version=null
233-
fi
234-
pkg_name=$(basename "$pkg")
235-
if [ "$version" != "null" ]; then
236-
versions["$pkg_name"]=$version
237-
fi
238-
done
234+
if content=$(git show origin/main:packages/events/package.json 2>/dev/null); then
235+
version=$(jq -r .version <<< $content);
236+
else
237+
version=null;
238+
fi
239239
240-
echo "Detected package versions in main branch:"
241-
for pkg in "${!versions[@]}"; do
242-
echo "$pkg: ${versions[$pkg]}"
243-
done
244-
245-
# Output as a JSON object for GitHub Actions
246-
versions_json=$(printf '%s\0' "${!versions[@]}" | xargs -0 -I{} printf '"%s":"%s",' {} "${versions[{}]}")
247-
versions_json="{${versions_json%,}}"
248-
echo "main_versions=$versions_json" >> $GITHUB_OUTPUT
240+
echo "Detected package version $version in main branch"
241+
echo "main_version=$version" >> $GITHUB_OUTPUT
249242
250243
check-schema-version-change:
251244
name: Check event schema version has been updated
@@ -262,21 +255,13 @@ jobs:
262255
run: |
263256
source scripts/is_valid_increment.sh
264257
265-
main_versions='${{ needs.detect-event-schema-package-changes.outputs.main_version }}'
266-
267-
for pkg_json in cloudevents/schemas/*/package.json; do
268-
pkg_dir=$(dirname "$pkg_json")
269-
pkg_name=$(jq -r '.name' "$pkg_json")
270-
local_version=$(jq -r '.version' "$pkg_json")
271-
main_version=$(echo "$main_versions" | jq -r --arg pkg "$pkg_name" '.[$pkg]')
258+
main_version="${{ needs.detect-event-schema-package-changes.outputs.main_version }}"
259+
echo "Main version: ${{ needs.detect-event-schema-package-changes.outputs.main_version }}"
272260
273-
echo "----------------------------------------"
274-
echo "Checking $pkg_name"
275-
echo "Main version: $main_version"
276-
echo "Local version: $local_version"
261+
local_version=$(jq -r '.version' packages/events/package.json)
262+
echo "Local version: $local_version"
277263
278-
if [ "$main_version" != "null" ] && [ -n "$main_version" ] && ! is_valid_increment "$main_version" "$local_version" ; then
279-
echo "Error: Event Schema package $pkg_name has changed, but new version ($local_version) is not a valid increment from latest version on main branch ($main_version)."
280-
exit 1
281-
fi
282-
done
264+
if ! is_valid_increment "$main_version" "$local_version" ; then
265+
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)."
266+
exit 1
267+
fi

cloudevents/schemas/letter-rendering/jest.config.ts

Lines changed: 0 additions & 10 deletions
This file was deleted.

cloudevents/schemas/letter-rendering/schemas/domain/letter-request.schema.json

Lines changed: 0 additions & 162 deletions
This file was deleted.

0 commit comments

Comments
 (0)