-
Notifications
You must be signed in to change notification settings - Fork 2
205 lines (183 loc) · 7.42 KB
/
build-deploy-app.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
name: DPIA Frontend - Deploy DEV
on:
push:
branches: [main]
paths:
- "src/frontend/**"
workflow_dispatch:
jobs:
DPIA-App-Build-Tag-Push:
runs-on: ubuntu-latest
environment: APP-Dev
steps:
# Checkout CIRMO-DPIA Github Repository
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Login to Openshift Silver Cluster
uses: redhat-actions/oc-login@v1
env:
OPENSHIFT_USER: github-actions
OPENSHIFT_NAMESPACE: b996e6-tools
with:
openshift_server_url: ${{ secrets.OPENSHIFT4_SERVER_URL }}
openshift_token: ${{ secrets.OPENSHIFT4_TOOLS_SA_PASSWORD }}
namespace: b996e6-tools
# Login to BC Gov Docker Image Repository
- name: Login to Openshift Docker
run: |
docker login ${{ secrets.OPENSHIFT4_PUBLIC_IMAGE_REPOSITORY_BASE_URL }} -u ${{ secrets.OPENSHIFT4_TOOLS_SA_USERNAME }} -p ${{ secrets.OPENSHIFT4_TOOLS_SA_PASSWORD }}
# Build the DPIA Frontend Application Image via docker-compose
- name: Build the Docker image
run: |
sudo docker-compose build dpia-webapp
# TROUBLESHOOTING - view images present in github action run
- name: Docker List Images
run: |
docker image ls
# Tag Docker Image built with latest commit hash (ex// $HASH-dev)
- name: Docker Tag Version
run: |
docker tag cirmo-dpia_dpia-webapp image-registry.apps.silver.devops.gov.bc.ca/b996e6-tools/app-dev:latest
# TROUBLESHOOTING - view images present in github action run
- name: Docker List Images
run: |
docker image ls
# Push docker image to BC Gov Repository
- name: Docker Push Version
run: |
docker push image-registry.apps.silver.devops.gov.bc.ca/b996e6-tools/app-dev:latest
DEV-deploy:
runs-on: ubuntu-latest
environment: APP-Dev
needs: [DPIA-App-Build-Tag-Push]
steps:
# Checkout Repository
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Login to Openshift Silver Cluster
uses: redhat-actions/oc-login@v1
env:
OPENSHIFT_USER: github-actions
OPENSHIFT_NAMESPACE: b996e6-dev
with:
openshift_server_url: ${{ secrets.OPENSHIFT4_SERVER_URL }}
openshift_token: ${{ secrets.OPENSHIFT4_DEV_SA_PASSWORD }}
namespace: b996e6-dev
# Use deploy helper script to process and apply DPIA Frontend Application template into DEV namespace
- name: Process and Apply APP DeploymentConfig, Service, Route templates
env:
NAMESPACE: "${{ secrets.OPENSHIFT_DEV_NAMESPACE }}"
APPLICATION_NAME: "${{ secrets.APPLICATION_NAME }}-v2"
LICENSE_PLATE: "${{ secrets.LICENSE_PLATE }}"
ENVIRONMENT: "${{ secrets.ENVIRONMENT }}"
DC_TEMPLATE: "app-dc-template.yaml"
SERVICE_TEMPLATE: "app-service-template.yaml"
ROUTE_TEMPLATE: "app-route-template.yaml"
DIR: "app/silver"
IMAGESTREAM: "app-dev"
run: |
./.github/helpers/deploy.sh
DEV-health-check:
runs-on: ubuntu-latest
environment:
name: APP-Dev
url: https://dev.pia.gov.bc.ca
needs: [DEV-deploy]
steps:
# Checkout Repository
- name: Checkout Repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Login to Openshift Silver Cluster
uses: redhat-actions/oc-login@v1
env:
OPENSHIFT_USER: github-actions
OPENSHIFT_NAMESPACE: b996e6-dev
with:
openshift_server_url: ${{ secrets.OPENSHIFT4_SERVER_URL }}
openshift_token: ${{ secrets.OPENSHIFT4_DEV_SA_PASSWORD }}
namespace: b996e6-dev
# Use application health helper script to monitor readiness/liveness probe response post deployment
- name: Health Check DEV deployment
env:
NAMESPACE: "${{ secrets.OPENSHIFT_DEV_NAMESPACE }}"
APPLICATION_NAME: "${{ secrets.APPLICATION_NAME }}-v2"
run: |
./.github/helpers/application-health.sh
DEV-cleanup:
runs-on: ubuntu-latest
environment: "APP-Dev"
needs: [DEV-health-check]
steps:
# Checkout Repository
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Login to Openshift Silver Cluster
uses: redhat-actions/oc-login@v1
env:
OPENSHIFT_USER: github-actions
OPENSHIFT_NAMESPACE: b996e6-dev
with:
openshift_server_url: ${{ secrets.OPENSHIFT4_SERVER_URL }}
openshift_token: ${{ secrets.OPENSHIFT4_DEV_SA_PASSWORD }}
namespace: b996e6-dev
# Use cleanup helper script to remove any leftover deployment pod objects from previous deployment
- name: Cleanup previous deployment pod objects
env:
NAMESPACE: "${{ secrets.OPENSHIFT_DEV_NAMESPACE }}"
run: |
./.github/helpers/cleanup-pods.sh
# Use cleanup helper script to remove any leftover deployment pod objects from previous deployment
- name: Cleanup previous replication controller objects
env:
NAMESPACE: "${{ secrets.OPENSHIFT_DEV_NAMESPACE }}"
run: |
./.github/helpers/cleanup-rc.sh
DEV-e2e:
needs: [DEV-cleanup]
uses: ./.github/workflows/e2e-test.yaml
with:
environment: "APP-Dev"
secrets:
DRAFT_IDIR_PASSWORD: ${{ secrets.DRAFT_IDIR_PASSWORD }}
MPO_IDIR_PASSWORD: ${{ secrets.MPO_IDIR_PASSWORD }}
CPO_IDIR_PASSWORD: ${{ secrets.CPO_IDIR_PASSWORD }}
DEV-Success-Notify:
runs-on: ubuntu-latest
environment: APP-Dev
needs: [DEV-e2e]
steps:
- name: Message Teams Channel on Success
run: |
curl --location --request POST ${{ secrets.TEAMS_SUCCESS_URL }} \
--header 'Content-Type: text/plain' \
--data-raw '{
"@context": "https://schema.org/extensions",
"@type": "MessageCard",
"themeColor": "0072C6",
"title": "SUCCESS! WebApp Deployment to PIA ${{ secrets.ENVIRONMENT }} Environment has finished!.",
"text": "The PIA WebApp has been built and deployed to the ${{ secrets.ENVIRONMENT }} environment. \n\n End-to-end test suite has passed \n\n The logs for the successful deployment can be found [here](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})\n\n The changes for commit ${{ github.sha }} can be found [here](https://dev.pia.gov.bc.ca).",
}'
DEV-Failure-Notify:
runs-on: ubuntu-latest
environment: APP-Dev
if: failure()
steps:
- name: Message Teams Channel on Failure
run: |
curl --location --request POST ${{ secrets.TEAMS_FAILURE_URL }} \
--header 'Content-Type: text/plain' \
--data-raw '{
"@context": "https://schema.org/extensions",
"@type": "MessageCard",
"themeColor": "0072C6",
"title": "FAILURE! WebApp Deployment to the PIA ${{ secrets.ENVIRONMENT }} Environment has failed.",
"text": "The PIA WebApp has NOT been built and deployed to the ${{ secrets.LICENSE_PLATE }} ${{ secrets.ENVIRONMENT }} environment.\n\n Please review the Github Action for this deployment (here)[${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}].",
}'