@@ -2,6 +2,11 @@ name: deploy to environments
22
33on :
44 workflow_dispatch :
5+ inputs :
6+ dev_version :
7+ description : " DEV version to promote (e.g., dev-123-a1b2c3d)"
8+ required : true
9+ type : string
510
611env :
712 BRANCH_NAME : ${{ github.event.ref.BRANCH_NAME }}
3944 uses : asdf-vm/actions/setup@1902764435ca0dd2f3388eea723a4f92a4eb8302
4045 with :
4146 asdf_branch : v0.14.1
42-
47+
4348 - name : Cache asdf
4449 uses : actions/cache@v4
4550 with :
6671 - name : Install dependencies
6772 run : |
6873 make install
69-
74+
7075 - name : Set VERSION_TAG to be next tag varsion
7176 id : output_version_tag
7277 run : |
@@ -121,34 +126,117 @@ jobs:
121126 VERSION_NUMBER : ${{ needs.tag_release.outputs.version_tag }}
122127 COMMIT_ID : ${{ needs.get_commit_id.outputs.commit_id }}
123128
124- release_dev :
125- needs : [get_commit_id, tag_release, package_code]
126- uses : ./.github/workflows/cdk_release_code.yml
129+ approve_qa_deployment :
130+ needs : [tag_release]
131+ runs-on : ubuntu-22.04
132+ environment : qa-approval
133+ steps :
134+ - name : Manual approval for QA deployment
135+ run : echo "QA deployment approved"
136+
137+ release_qa :
138+ needs : [get_commit_id, tag_release, package_code, approve_qa_deployment]
139+ uses : ./.github/workflows/release_all_stacks.yml
127140 with :
128141 STACK_NAME : epsam
129- TARGET_ENVIRONMENT : dev
130- VERSION_NUMBER : ${{ needs.tag_release.outputs.version_tag }}
142+ TARGET_ENVIRONMENT : qa
143+ VERSION_NUMBER : ${{ inputs.dev_version || needs.tag_release.outputs.version_tag }}
131144 COMMIT_ID : ${{ needs.get_commit_id.outputs.commit_id }}
132145 CDK_APP_NAME : EpsAssistMeApp
133146 DEPLOY_CODE : true
134147 LOG_RETENTION_IN_DAYS : 30
135- LOG_LEVEL : DEBUG
148+ LOG_LEVEL : " DEBUG"
149+ CREATE_INT_RELEASE_NOTES : false
150+ CREATE_PROD_RELEASE_NOTES : false
151+ MARK_JIRA_RELEASED : false
152+ CREATE_INT_RC_RELEASE_NOTES : false
153+ IS_PULL_REQUEST : false
136154 secrets :
137- CLOUD_FORMATION_DEPLOY_ROLE : ${{ secrets.DEV_CLOUD_FORMATION_DEPLOY_ROLE }}
138- CDK_PULL_IMAGE_ROLE : ${{ secrets.DEV_CDK_PULL_IMAGE_ROLE }}
155+ CLOUD_FORMATION_DEPLOY_ROLE : ${{ secrets.QA_CLOUD_FORMATION_DEPLOY_ROLE }}
156+ CDK_PULL_IMAGE_ROLE : ${{ secrets.QA_CDK_PULL_IMAGE_ROLE }}
157+ DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE : ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
158+ INT_CLOUD_FORMATION_CHECK_VERSION_ROLE : ${{ secrets.INT_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
159+ PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE : ${{ secrets.PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
160+ DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE : ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
161+ REGRESSION_TESTS_PEM : ${{ secrets.REGRESSION_TESTS_PEM }}
162+ SLACK_BOT_TOKEN : ${{ secrets.SLACK_BOT_TOKEN }}
163+ SLACK_SIGNING_SECRET : ${{ secrets.SLACK_SIGNING_SECRET }}
164+
165+ approve_production_deployment :
166+ needs : [release_qa]
167+ runs-on : ubuntu-22.04
168+ environment : production-approval
169+ steps :
170+ - name : Manual approval for INT and PROD deployment
171+ run : echo "Production environments (INT and PROD) deployment approved"
172+
173+ release_int :
174+ needs :
175+ [get_commit_id, tag_release, package_code, approve_production_deployment]
176+ uses : ./.github/workflows/release_all_stacks.yml
177+ with :
178+ STACK_NAME : epsam
179+ TARGET_ENVIRONMENT : int
180+ VERSION_NUMBER : ${{ inputs.dev_version || needs.tag_release.outputs.version_tag }}
181+ COMMIT_ID : ${{ needs.get_commit_id.outputs.commit_id }}
182+ CDK_APP_NAME : EpsAssistMeApp
183+ DEPLOY_CODE : true
184+ LOG_RETENTION_IN_DAYS : 30
185+ LOG_LEVEL : " INFO"
186+ CREATE_INT_RELEASE_NOTES : true
187+ CREATE_PROD_RELEASE_NOTES : false
188+ MARK_JIRA_RELEASED : false
189+ CREATE_INT_RC_RELEASE_NOTES : true
190+ IS_PULL_REQUEST : false
191+ secrets :
192+ CLOUD_FORMATION_DEPLOY_ROLE : ${{ secrets.INT_CLOUD_FORMATION_DEPLOY_ROLE }}
193+ CDK_PULL_IMAGE_ROLE : ${{ secrets.INT_CDK_PULL_IMAGE_ROLE }}
194+ DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE : ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
195+ INT_CLOUD_FORMATION_CHECK_VERSION_ROLE : ${{ secrets.INT_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
196+ PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE : ${{ secrets.PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
197+ DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE : ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
198+ REGRESSION_TESTS_PEM : ${{ secrets.REGRESSION_TESTS_PEM }}
199+ SLACK_BOT_TOKEN : ${{ secrets.SLACK_BOT_TOKEN }}
200+ SLACK_SIGNING_SECRET : ${{ secrets.SLACK_SIGNING_SECRET }}
201+
202+ release_prod :
203+ needs :
204+ [get_commit_id, tag_release, package_code, approve_production_deployment]
205+ uses : ./.github/workflows/release_all_stacks.yml
206+ with :
207+ STACK_NAME : epsam
208+ TARGET_ENVIRONMENT : prod
209+ VERSION_NUMBER : ${{ inputs.dev_version || needs.tag_release.outputs.version_tag }}
210+ COMMIT_ID : ${{ needs.get_commit_id.outputs.commit_id }}
211+ CDK_APP_NAME : EpsAssistMeApp
212+ DEPLOY_CODE : true
213+ LOG_RETENTION_IN_DAYS : 731
214+ LOG_LEVEL : " INFO"
215+ CREATE_INT_RELEASE_NOTES : false
216+ CREATE_PROD_RELEASE_NOTES : true
217+ MARK_JIRA_RELEASED : true
218+ CREATE_INT_RC_RELEASE_NOTES : false
219+ IS_PULL_REQUEST : false
220+ secrets :
221+ CLOUD_FORMATION_DEPLOY_ROLE : ${{ secrets.PROD_CLOUD_FORMATION_DEPLOY_ROLE }}
222+ CDK_PULL_IMAGE_ROLE : ${{ secrets.PROD_CDK_PULL_IMAGE_ROLE }}
223+ DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE : ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
224+ INT_CLOUD_FORMATION_CHECK_VERSION_ROLE : ${{ secrets.INT_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
225+ PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE : ${{ secrets.PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
226+ DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE : ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
139227 REGRESSION_TESTS_PEM : ${{ secrets.REGRESSION_TESTS_PEM }}
140228 SLACK_BOT_TOKEN : ${{ secrets.SLACK_BOT_TOKEN }}
141229 SLACK_SIGNING_SECRET : ${{ secrets.SLACK_SIGNING_SECRET }}
142230
143231 create_release_notes :
144- needs : [tag_release, package_code, get_commit_id, release_dev ]
232+ needs : [tag_release, package_code, get_commit_id, release_int, release_prod ]
145233 uses : ./.github/workflows/create_release_notes.yml
146234 with :
147- VERSION_NUMBER : ${{needs.tag_release.outputs.version_tag}}
235+ VERSION_NUMBER : ${{ inputs.dev_version || needs.tag_release.outputs.version_tag }}
148236 CREATE_INT_RELEASE_NOTES : true
149237 CREATE_INT_RC_RELEASE_NOTES : false
150238 CREATE_PROD_RELEASE_NOTES : true
151- MARK_JIRA_RELEASED : false
239+ MARK_JIRA_RELEASED : true
152240 secrets :
153241 DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE : ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
154242 DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE : ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
0 commit comments