Skip to content

Commit 64e69c2

Browse files
chore: back to uncommented workflow
1 parent 4294058 commit 64e69c2

File tree

1 file changed

+192
-112
lines changed

1 file changed

+192
-112
lines changed

.github/workflows/release.yml

Lines changed: 192 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
name: deploy to environments
22

33
on:
4-
pull_request:
5-
branches: [main]
4+
workflow_dispatch:
5+
inputs:
6+
dev_version:
7+
description: "DEV version to promote (e.g., dev-123-a1b2c3d)"
8+
required: true
9+
type: string
610

711
env:
8-
BRANCH_NAME: ${{ github.event.ref.BRANCH_NAME }}
12+
BRANCH_NAME: ${{ github.ref_name }}
913

1014
jobs:
1115
quality_checks:
@@ -27,29 +31,108 @@ jobs:
2731
needs: quality_checks
2832
runs-on: ubuntu-22.04
2933
outputs:
30-
version_tag: PR-${{ github.event.number }}
34+
version_tag: ${{ steps.output_version_tag.outputs.VERSION_TAG }}
3135
steps:
32-
- name: Set PR version for testing
36+
- name: Checkout code
37+
uses: actions/checkout@v5
38+
with:
39+
ref: ${{ env.BRANCH_NAME }}
40+
fetch-depth: 0
41+
42+
# using git commit sha for version of action to ensure we have stable version
43+
- name: Install asdf
44+
uses: asdf-vm/actions/setup@1902764435ca0dd2f3388eea723a4f92a4eb8302
45+
with:
46+
asdf_branch: v0.14.1
47+
48+
- name: Cache asdf
49+
uses: actions/cache@v4
50+
with:
51+
path: |
52+
~/.asdf
53+
key: ${{ runner.os }}-asdf-${{ hashFiles('**/.tool-versions') }}
54+
restore-keys: |
55+
${{ runner.os }}-asdf-
56+
57+
- name: Install asdf dependencies in .tool-versions
58+
uses: asdf-vm/actions/install@1902764435ca0dd2f3388eea723a4f92a4eb8302
59+
with:
60+
asdf_branch: v0.14.1
61+
env:
62+
PYTHON_CONFIGURE_OPTS: --enable-shared
63+
64+
- name: Setting up .npmrc
65+
env:
66+
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
67+
run: |
68+
echo "//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN}" >> ~/.npmrc
69+
echo "@nhsdigital:registry=https://npm.pkg.github.com" >> ~/.npmrc
70+
71+
- name: Install dependencies
72+
run: |
73+
make install
74+
75+
- name: Set VERSION_TAG to be next tag version
76+
id: output_version_tag
77+
run: |
78+
NEXT_VERSION=$(npx semantic-release --dry-run | grep -i 'The next release version is' | sed -E 's/.* ([[:digit:].]+)$/\1/')
79+
tagFormat=$(node -e "const config=require('./release.config.js'); console.log(config.tagFormat)")
80+
if [ "${tagFormat}" = "null" ]
81+
then
82+
tagFormat="v\${version}"
83+
fi
84+
# disabling shellcheck as replace does not work
85+
# shellcheck disable=SC2001
86+
VERSION_TAG=$(echo "$tagFormat" | sed "s/\${version}/$NEXT_VERSION/")
87+
echo "## VERSION TAG : ${VERSION_TAG}" >> "$GITHUB_STEP_SUMMARY"
88+
echo "VERSION_TAG=${VERSION_TAG}" >> "$GITHUB_OUTPUT"
89+
echo "VERSION_TAG=${VERSION_TAG}" >> "$GITHUB_ENV"
90+
env:
91+
GITHUB_TOKEN: ${{ github.token }}
92+
93+
- name: tag release
94+
env:
95+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3396
run: |
34-
VERSION="PR-${{ github.event.number }}"
35-
echo "VERSION_TAG=$VERSION" >> "$GITHUB_OUTPUT"
36-
echo "Using PR version for testing: $VERSION"
97+
npx semantic-release
98+
99+
- name: Get release for editing
100+
id: get_release
101+
# version 1.2.4
102+
uses: cardinalby/git-get-release-action@5172c3a026600b1d459b117738c605fabc9e4e44
103+
env:
104+
GITHUB_TOKEN: ${{ github.token }}
105+
with:
106+
tag: ${{ env.VERSION_TAG }}
107+
108+
- name: Edit Release
109+
# version 1.2.0
110+
uses: irongut/EditRelease@ccf529ad26dddf9996e7dd0f24ca5da4ea507cc2
111+
with:
112+
token: ${{ secrets.GITHUB_TOKEN }}
113+
id: ${{ steps.get_release.outputs.id }}
114+
body: |
115+
## Info
116+
[See code diff](${{ github.event.compare }})
117+
[Release workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
118+
119+
It was initialised by [${{ github.event.sender.login }}](${{ github.event.sender.html_url }})
37120
38121
package_code:
39122
needs: [get_commit_id, tag_release]
40123
uses: ./.github/workflows/cdk_package_code.yml
41124
with:
42-
STACK_NAME: epsam-test
125+
STACK_NAME: epsam
43126
VERSION_NUMBER: ${{ needs.tag_release.outputs.version_tag }}
44127
COMMIT_ID: ${{ needs.get_commit_id.outputs.commit_id }}
45128

46129
release_dev:
47130
needs: [get_commit_id, tag_release, package_code]
48131
uses: ./.github/workflows/release_all_stacks.yml
49132
with:
50-
STACK_NAME: epsam-test
133+
STACK_NAME: epsam
51134
TARGET_ENVIRONMENT: dev
52-
VERSION_NUMBER: ${{ needs.tag_release.outputs.version_tag }}
135+
VERSION_NUMBER: ${{ inputs.dev_version || needs.tag_release.outputs.version_tag }}
53136
COMMIT_ID: ${{ needs.get_commit_id.outputs.commit_id }}
54137
CDK_APP_NAME: EpsAssistMeApp
55138
DEPLOY_CODE: true
@@ -71,104 +154,101 @@ jobs:
71154
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
72155
SLACK_SIGNING_SECRET: ${{ secrets.SLACK_SIGNING_SECRET }}
73156

74-
# Commented out for testing - uncomment after DEV deployment confirmed working
75-
# release_qa:
76-
# needs: [get_commit_id, tag_release, package_code, release_dev]
77-
# uses: ./.github/workflows/release_all_stacks.yml
78-
# with:
79-
# STACK_NAME: epsam
80-
# TARGET_ENVIRONMENT: qa
81-
# VERSION_NUMBER: ${{ inputs.dev_version || needs.tag_release.outputs.version_tag }}
82-
# COMMIT_ID: ${{ needs.get_commit_id.outputs.commit_id }}
83-
# CDK_APP_NAME: EpsAssistMeApp
84-
# DEPLOY_CODE: true
85-
# LOG_RETENTION_IN_DAYS: 30
86-
# LOG_LEVEL: "DEBUG"
87-
# CREATE_INT_RELEASE_NOTES: false
88-
# CREATE_PROD_RELEASE_NOTES: false
89-
# MARK_JIRA_RELEASED: false
90-
# CREATE_INT_RC_RELEASE_NOTES: false
91-
# IS_PULL_REQUEST: false
92-
# secrets:
93-
# CLOUD_FORMATION_DEPLOY_ROLE: ${{ secrets.QA_CLOUD_FORMATION_DEPLOY_ROLE }}
94-
# CDK_PULL_IMAGE_ROLE: ${{ secrets.QA_CDK_PULL_IMAGE_ROLE }}
95-
# DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
96-
# INT_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.INT_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
97-
# PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
98-
# DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
99-
# REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
100-
# SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
101-
# SLACK_SIGNING_SECRET: ${{ secrets.SLACK_SIGNING_SECRET }}
102-
103-
# Commented out for safe testing - uncomment after DEV deployment confirmed working
104-
# release_int:
105-
# needs: [get_commit_id, tag_release, package_code, release_qa]
106-
# uses: ./.github/workflows/release_all_stacks.yml
107-
# with:
108-
# STACK_NAME: epsam
109-
# TARGET_ENVIRONMENT: int
110-
# VERSION_NUMBER: ${{ inputs.dev_version || needs.tag_release.outputs.version_tag }}
111-
# COMMIT_ID: ${{ needs.get_commit_id.outputs.commit_id }}
112-
# CDK_APP_NAME: EpsAssistMeApp
113-
# DEPLOY_CODE: true
114-
# LOG_RETENTION_IN_DAYS: 731
115-
# LOG_LEVEL: "INFO"
116-
# CREATE_INT_RELEASE_NOTES: true
117-
# CREATE_PROD_RELEASE_NOTES: false
118-
# MARK_JIRA_RELEASED: false
119-
# CREATE_INT_RC_RELEASE_NOTES: true
120-
# IS_PULL_REQUEST: false
121-
# secrets:
122-
# CLOUD_FORMATION_DEPLOY_ROLE: ${{ secrets.INT_CLOUD_FORMATION_DEPLOY_ROLE }}
123-
# CDK_PULL_IMAGE_ROLE: ${{ secrets.INT_CDK_PULL_IMAGE_ROLE }}
124-
# DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
125-
# INT_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.INT_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
126-
# PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
127-
# DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
128-
# REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
129-
# SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
130-
# SLACK_SIGNING_SECRET: ${{ secrets.SLACK_SIGNING_SECRET }}
131-
132-
# Commented out for safe testing - uncomment after DEV deployment confirmed working
133-
# release_prod:
134-
# needs: [get_commit_id, tag_release, package_code, release_int]
135-
# uses: ./.github/workflows/release_all_stacks.yml
136-
# with:
137-
# STACK_NAME: epsam
138-
# TARGET_ENVIRONMENT: prod
139-
# VERSION_NUMBER: ${{ inputs.dev_version || needs.tag_release.outputs.version_tag }}
140-
# COMMIT_ID: ${{ needs.get_commit_id.outputs.commit_id }}
141-
# CDK_APP_NAME: EpsAssistMeApp
142-
# DEPLOY_CODE: true
143-
# LOG_RETENTION_IN_DAYS: 731
144-
# LOG_LEVEL: "INFO"
145-
# CREATE_INT_RELEASE_NOTES: false
146-
# CREATE_PROD_RELEASE_NOTES: true
147-
# MARK_JIRA_RELEASED: true
148-
# CREATE_INT_RC_RELEASE_NOTES: false
149-
# IS_PULL_REQUEST: false
150-
# secrets:
151-
# CLOUD_FORMATION_DEPLOY_ROLE: ${{ secrets.PROD_CLOUD_FORMATION_DEPLOY_ROLE }}
152-
# CDK_PULL_IMAGE_ROLE: ${{ secrets.PROD_CDK_PULL_IMAGE_ROLE }}
153-
# DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
154-
# INT_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.INT_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
155-
# PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
156-
# DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
157-
# REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
158-
# SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
159-
# SLACK_SIGNING_SECRET: ${{ secrets.SLACK_SIGNING_SECRET }}
160-
161-
# create_release_notes:
162-
# needs: [tag_release, package_code, get_commit_id, release_int, release_prod]
163-
# uses: ./.github/workflows/create_release_notes.yml
164-
# with:
165-
# VERSION_NUMBER: ${{ inputs.dev_version || needs.tag_release.outputs.version_tag }}
166-
# CREATE_INT_RELEASE_NOTES: true
167-
# CREATE_INT_RC_RELEASE_NOTES: false
168-
# CREATE_PROD_RELEASE_NOTES: true
169-
# MARK_JIRA_RELEASED: true
170-
# secrets:
171-
# DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
172-
# DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
173-
# INT_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.INT_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
174-
# PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
157+
release_qa:
158+
needs: [get_commit_id, tag_release, package_code, release_dev]
159+
uses: ./.github/workflows/release_all_stacks.yml
160+
with:
161+
STACK_NAME: epsam
162+
TARGET_ENVIRONMENT: qa
163+
VERSION_NUMBER: ${{ inputs.dev_version || needs.tag_release.outputs.version_tag }}
164+
COMMIT_ID: ${{ needs.get_commit_id.outputs.commit_id }}
165+
CDK_APP_NAME: EpsAssistMeApp
166+
DEPLOY_CODE: true
167+
LOG_RETENTION_IN_DAYS: 30
168+
LOG_LEVEL: "DEBUG"
169+
CREATE_INT_RELEASE_NOTES: false
170+
CREATE_PROD_RELEASE_NOTES: false
171+
MARK_JIRA_RELEASED: false
172+
CREATE_INT_RC_RELEASE_NOTES: false
173+
IS_PULL_REQUEST: false
174+
secrets:
175+
CLOUD_FORMATION_DEPLOY_ROLE: ${{ secrets.QA_CLOUD_FORMATION_DEPLOY_ROLE }}
176+
CDK_PULL_IMAGE_ROLE: ${{ secrets.QA_CDK_PULL_IMAGE_ROLE }}
177+
DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
178+
INT_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.INT_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
179+
PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
180+
DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
181+
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
182+
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
183+
SLACK_SIGNING_SECRET: ${{ secrets.SLACK_SIGNING_SECRET }}
184+
185+
release_int:
186+
needs: [get_commit_id, tag_release, package_code, release_qa]
187+
uses: ./.github/workflows/release_all_stacks.yml
188+
with:
189+
STACK_NAME: epsam
190+
TARGET_ENVIRONMENT: int
191+
VERSION_NUMBER: ${{ inputs.dev_version || needs.tag_release.outputs.version_tag }}
192+
COMMIT_ID: ${{ needs.get_commit_id.outputs.commit_id }}
193+
CDK_APP_NAME: EpsAssistMeApp
194+
DEPLOY_CODE: true
195+
LOG_RETENTION_IN_DAYS: 731
196+
LOG_LEVEL: "INFO"
197+
CREATE_INT_RELEASE_NOTES: true
198+
CREATE_PROD_RELEASE_NOTES: false
199+
MARK_JIRA_RELEASED: false
200+
CREATE_INT_RC_RELEASE_NOTES: true
201+
IS_PULL_REQUEST: false
202+
secrets:
203+
CLOUD_FORMATION_DEPLOY_ROLE: ${{ secrets.INT_CLOUD_FORMATION_DEPLOY_ROLE }}
204+
CDK_PULL_IMAGE_ROLE: ${{ secrets.INT_CDK_PULL_IMAGE_ROLE }}
205+
DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
206+
INT_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.INT_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
207+
PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
208+
DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
209+
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
210+
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
211+
SLACK_SIGNING_SECRET: ${{ secrets.SLACK_SIGNING_SECRET }}
212+
213+
release_prod:
214+
needs: [get_commit_id, tag_release, package_code, release_int]
215+
uses: ./.github/workflows/release_all_stacks.yml
216+
with:
217+
STACK_NAME: epsam
218+
TARGET_ENVIRONMENT: prod
219+
VERSION_NUMBER: ${{ inputs.dev_version || needs.tag_release.outputs.version_tag }}
220+
COMMIT_ID: ${{ needs.get_commit_id.outputs.commit_id }}
221+
CDK_APP_NAME: EpsAssistMeApp
222+
DEPLOY_CODE: true
223+
LOG_RETENTION_IN_DAYS: 731
224+
LOG_LEVEL: "INFO"
225+
CREATE_INT_RELEASE_NOTES: false
226+
CREATE_PROD_RELEASE_NOTES: true
227+
MARK_JIRA_RELEASED: true
228+
CREATE_INT_RC_RELEASE_NOTES: false
229+
IS_PULL_REQUEST: false
230+
secrets:
231+
CLOUD_FORMATION_DEPLOY_ROLE: ${{ secrets.PROD_CLOUD_FORMATION_DEPLOY_ROLE }}
232+
CDK_PULL_IMAGE_ROLE: ${{ secrets.PROD_CDK_PULL_IMAGE_ROLE }}
233+
DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
234+
INT_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.INT_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
235+
PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
236+
DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
237+
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
238+
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
239+
SLACK_SIGNING_SECRET: ${{ secrets.SLACK_SIGNING_SECRET }}
240+
241+
create_release_notes:
242+
needs: [tag_release, package_code, get_commit_id, release_int, release_prod]
243+
uses: ./.github/workflows/create_release_notes.yml
244+
with:
245+
VERSION_NUMBER: ${{ inputs.dev_version || needs.tag_release.outputs.version_tag }}
246+
CREATE_INT_RELEASE_NOTES: true
247+
CREATE_INT_RC_RELEASE_NOTES: false
248+
CREATE_PROD_RELEASE_NOTES: true
249+
MARK_JIRA_RELEASED: true
250+
secrets:
251+
DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
252+
DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
253+
INT_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.INT_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
254+
PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE }}

0 commit comments

Comments
 (0)