Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion .github/actions/build-proxies/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ inputs:
description: "Name of the Component to deploy"
required: true
default: 'api'
nodejs_version:
description: "Node.js version, set by the CI/CD pipeline workflow"
required: true

runs:
using: composite
Expand All @@ -34,7 +37,16 @@ runs:
uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24
node-version: ${{ inputs.nodejs_version }}

- name: "Cache node_modules"
uses: actions/cache@v4
with:
path: |
**/node_modules
key: ${{ runner.os }}-node-${{ inputs.nodejs_version }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ inputs.nodejs_version }}-

- name: Npm install
working-directory: .
Expand Down
87 changes: 87 additions & 0 deletions .github/workflows/pr_closed.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,90 @@ jobs:
--targetAccountGroup "nhs-notify-supplier-api-dev" \
--targetComponent "${{ matrix.component }}" \
--terraformAction "apply"

check-event-schemas-version-change:
name: Check for event schemas package version change
needs: check-merge-or-workflow-dispatch
if: needs.check-merge-or-workflow-dispatch.outputs.deploy == 'true'
outputs:
version_changed: ${{ steps.check-version.outputs.version_changed }}
runs-on: ubuntu-latest
permissions:
contents: read
packages: read
steps:
- name: Checkout code
uses: actions/checkout@v5.0.0

- name: Setup NodeJS
uses: actions/setup-node@v4
with:
node-version: ${{ inputs.nodejs_version }}

- name: check if local version differs from latest published version
id: check-version
run: |
published_version=$(npm view @nhsdigital/nhs-notify-event-schemas-supplier-api --json 2>/dev/null | jq -r '.["dist-tags"].latest // "null"')
echo "Published version: $published_version"

local_version=$(jq -r '.version' internal/events/package.json)
echo "Local version: $local_version"

if [[ $local_version = $published_version ]]; then
echo "Local version is the same as the latest published version - skipping publish"
echo "version_changed=false" >> $GITHUB_OUTPUT
else
echo "Local version is different to the latest published version - publishing new version"
echo "version_changed=true" >> $GITHUB_OUTPUT
fi

test-contract-provider:
name: "Test contracts (provider)"
needs: check-event-schemas-version-change
if: needs.check-event-schemas-version-change.outputs.version_changed == 'true'
runs-on: ubuntu-latest
permissions:
contents: read
packages: read
steps:
- name: "Checkout code"
uses: actions/checkout@v5.0.0
- name: Setup NodeJS
uses: actions/setup-node@v4
with:
node-version: ${{ inputs.nodejs_version }}
- name: "Install dependencies"
run: npm ci
- name: "Run provider contract tests"
run: make test-contract-provider
Comment thread
masl2 marked this conversation as resolved.
env:
GITHUB_PACKAGES_TOKEN: ${{ secrets.GITHUB_TOKEN }}

publish-event-schemas:
name: Publish event schemas package to GitHub package registry
needs:
- check-event-schemas-version-change
- test-contract-provider
if: needs.check-event-schemas-version-change.outputs.version_changed == 'true'
runs-on: ubuntu-latest
permissions:
contents: read
packages: write

steps:
- name: Checkout code
uses: actions/checkout@v5.0.0

- name: Setup NodeJS
uses: actions/setup-node@v4
with:
node-version: ${{ inputs.nodejs_version }}
registry-url: 'https://npm.pkg.github.com'

- name: Install dependencies
run: npm ci

- name: Publish to GitHub Packages
run: npm publish --workspace internal/events
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
57 changes: 28 additions & 29 deletions .github/workflows/stage-1-commit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ jobs:
echo "changed=true" >> $GITHUB_OUTPUT
fi

if content=$(git show origin/main:internal/events/schemas/package.json 2>/dev/null); then
if content=$(git show origin/main:internal/events/package.json 2>/dev/null); then
version=$(jq -r .version <<< $content);
else
version=null;
Expand All @@ -237,34 +237,33 @@ jobs:
echo "Detected package version $version in main branch"
echo "main_version=$version" >> $GITHUB_OUTPUT

check-schemas-generated:
name: Check event schemas have been regenerated
needs: detect-event-schema-package-changes
if: needs.detect-event-schema-package-changes.outputs.changed == 'true'
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: "Checkout code"
uses: actions/checkout@v4

# Simplified caching - template management has more complex caching of installed modules from another build step
- name: "Cache node_modules"
uses: actions/cache@v4
with:
path: |
**/node_modules
key: ${{ runner.os }}-node-${{ inputs.nodejs_version }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ inputs.nodejs_version }}-

- name: "Re-generate schemas"
run: |
npm ci --workspace internal/events
npm --workspace internal/events run gen:jsonschema

- name: Check for schema changes
run: git diff --quiet internal/events/schemas
# check-schemas-generated:
# name: Check event schemas have been regenerated
# needs: detect-event-schema-package-changes
# if: needs.detect-event-schema-package-changes.outputs.changed == 'true'
# runs-on: ubuntu-latest
# permissions:
# contents: read
# steps:
# - name: "Checkout code"
# uses: actions/checkout@v4
#
# - name: "Cache node_modules"
# uses: actions/cache@v4
# with:
# path: |
# **/node_modules
# key: ${{ runner.os }}-node-${{ inputs.nodejs_version }}-${{ hashFiles('**/package-lock.json') }}
# restore-keys: |
# ${{ runner.os }}-node-${{ inputs.nodejs_version }}-
#
# - name: "Re-generate schemas"
# run: |
# npm ci
# npm --workspace internal/events run gen:jsonschema
#
# - name: Check for schema changes
# run: git diff --quiet internal/events/schemas

check-schema-version-change:
name: Check event schema version has been updated
Expand Down
32 changes: 32 additions & 0 deletions .github/workflows/stage-2-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,14 @@ jobs:
steps:
- name: "Checkout code"
uses: actions/checkout@v5
- name: "Cache node_modules"
uses: actions/cache@v4
with:
path: |
**/node_modules
key: ${{ runner.os }}-node-${{ inputs.nodejs_version }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ inputs.nodejs_version }}-
- name: "Repo setup"
run: |
npm ci
Expand All @@ -62,6 +70,14 @@ jobs:
steps:
- name: "Checkout code"
uses: actions/checkout@v5
- name: "Cache node_modules"
uses: actions/cache@v4
with:
path: |
**/node_modules
key: ${{ runner.os }}-node-${{ inputs.nodejs_version }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ inputs.nodejs_version }}-
- name: "Repo setup"
run: |
npm ci
Expand Down Expand Up @@ -90,6 +106,14 @@ jobs:
steps:
- name: "Checkout code"
uses: actions/checkout@v5
- name: "Cache node_modules"
uses: actions/cache@v4
with:
path: |
**/node_modules
key: ${{ runner.os }}-node-${{ inputs.nodejs_version }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ inputs.nodejs_version }}-
- name: "Repo setup"
run: |
npm ci
Expand All @@ -106,6 +130,14 @@ jobs:
steps:
- name: "Checkout code"
uses: actions/checkout@v5
- name: "Cache node_modules"
uses: actions/cache@v4
with:
path: |
**/node_modules
key: ${{ runner.os }}-node-${{ inputs.nodejs_version }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ inputs.nodejs_version }}-
- name: "Repo setup"
run: |
npm ci
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/stage-3-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -109,3 +109,4 @@ jobs:
runId: "${{ github.run_id }}"
buildSandbox: true
releaseVersion: ${{ github.head_ref || github.ref_name }}
nodejs_version: ${{ inputs.nodejs_version }}
Loading
Loading