|
5 | 5 | OPENSHIFT_NAMESPACE_DEV: '${{ secrets.ECAS_NAMESPACE_NO_ENV }}-dev' |
6 | 6 | REDHAT_REGISTRY_USERNAME: '${{ secrets.REDHAT_REGISTRY_USERNAME }}' |
7 | 7 | REDHAT_REGISTRY_PASSWORD: '${{ secrets.REDHAT_REGISTRY_PASSWORD }}' |
8 | | - |
9 | | - |
10 | | - |
| 8 | + |
11 | 9 | SOURCE_REPOSITORY: 'https://github.com/bcgov/EDUC-HUB.git' |
12 | 10 | DOTNET_STARTUP_PROJECT: 'CASInterfaceService/cas-interface-service.csproj' |
13 | 11 | IMAGE_REGISTRY: 'ghcr.io/${{ github.repository_owner }}' |
|
17 | 15 | APP_NAME_API: ecas-api |
18 | 16 | APP_NAME_CAS: cas-api |
19 | 17 | REDHAT_REGISTRY: https://registry.redhat.io |
20 | | - |
| 18 | + |
21 | 19 | DOCKER_ARTIFACTORY_REPO: artifacts.developer.gov.bc.ca/docker-remote |
22 | 20 | ARTIFACTORY_REPO: artifacts.developer.gov.bc.ca |
23 | 21 | APP_NAME: ecas |
|
48 | 46 | CAS_API_SERVER: ${{ secrets.CAS_API_SERVER }} |
49 | 47 | CAS_TOKEN_URI: /ords/cas/oauth/token |
50 | 48 | CAS_INVOICE_URI: /ords/cas/cfs/apinvoice/ |
51 | | - |
| 49 | + |
52 | 50 | HOST_ROUTE: '${{ secrets.SITE_URL }}' |
53 | 51 | BRANCH: "master" |
54 | 52 |
|
|
57 | 55 | PRIVATE_KEY: ${{ secrets.PRIV_KEY }} |
58 | 56 | TRUSTED_CA_BUNDLE: ${{ secrets.TRUSTED_CA_BUNDLE }} |
59 | 57 | ENV: "dev" |
60 | | - |
61 | 58 |
|
62 | 59 | on: |
63 | 60 | workflow_dispatch: |
@@ -116,12 +113,12 @@ jobs: |
116 | 113 |
|
117 | 114 | - name: Check out repository |
118 | 115 | uses: actions/checkout@v3 |
119 | | - |
| 116 | + |
120 | 117 | - name: Determine image tags |
121 | 118 | if: env.TAG == '' |
122 | 119 | run: | |
123 | 120 | echo "TAG=latest ${GITHUB_SHA::12}" | tee -a $GITHUB_ENV |
124 | | - |
| 121 | +
|
125 | 122 | - name: Install oc |
126 | 123 | uses: redhat-actions/openshift-tools-installer@v1 |
127 | 124 | with: |
@@ -211,77 +208,101 @@ jobs: |
211 | 208 | registry: ${{ env.IMAGE_REGISTRY }} |
212 | 209 | username: ${{ env.IMAGE_REGISTRY_USER }} |
213 | 210 | password: ${{ env.IMAGE_REGISTRY_PASSWORD }} |
214 | | - |
| 211 | + |
215 | 212 | - name: Deploy |
216 | | - run: > |
| 213 | + run: | |
217 | 214 | set -eux |
218 | 215 |
|
219 | 216 | # Login to OpenShift and select project |
220 | | - |
221 | | - oc login --token=${{ env.OPENSHIFT_TOKEN }} --server=${{ |
222 | | - env.OPENSHIFT_SERVER }} |
223 | 217 |
|
| 218 | + oc login --token=${{ env.OPENSHIFT_TOKEN }} --server=${{ env.OPENSHIFT_SERVER }} |
224 | 219 | oc project ${{ env.OPENSHIFT_NAMESPACE_DEV }} |
225 | 220 |
|
226 | 221 | # Cancel any rollouts in progress |
227 | | -
|
228 | 222 | oc rollout cancel dc/${{ env.APP_NAME_FRONTEND }} 2> /dev/null || true && echo "No rollout in progress" |
229 | | -
|
230 | 223 | oc rollout cancel dc/${{ env.APP_NAME_API }} 2> /dev/null || true && echo "No ecas api rollout in progress" |
231 | | -
|
232 | 224 | oc rollout cancel dc/${{ env.APP_NAME_CAS }} 2> /dev/null || true && echo "No cas api rollout in progress" |
233 | 225 |
|
234 | | -
|
235 | 226 | # Create the image stream if it doesn't exist |
236 | | -
|
237 | 227 | oc create imagestream ${{ env.REPO_NAME }}-frontend> /dev/null || true && echo "Frontend image stream in place" |
238 | 228 | oc create imagestream ${{ env.REPO_NAME }}-api> /dev/null || true && echo "Ecas API image stream in place" |
239 | 229 | oc create imagestream ${{ env.REPO_NAME }}-cas-api> /dev/null || true && echo "CAS API image stream in place" |
240 | 230 |
|
| 231 | + oc tag -n ${{ env.OPENSHIFT_NAMESPACE_DEV }} ${{ steps.push-image-frontend.outputs.registry-path }} ${{ env.REPO_NAME }}-frontend:${{ env.TAG }} |
| 232 | + oc tag -n ${{ env.OPENSHIFT_NAMESPACE_DEV }} ${{ steps.push-image-api.outputs.registry-path }} ${{ env.REPO_NAME }}-api:${{ env.TAG }} |
| 233 | + oc tag -n ${{ env.OPENSHIFT_NAMESPACE_DEV }} ${{ steps.push-image-cas.outputs.registry-path }} ${{ env.REPO_NAME }}-cas-api:${{ env.TAG }} |
| 234 | +
|
| 235 | + curl -s https://raw.githubusercontent.com/bcgov/${{ env.REPO_NAME }}/${{ env.BRANCH }}/openshift/update-configmap.sh \ |
| 236 | + | bash /dev/stdin \ |
| 237 | + "${{ env.REPO_NAME }}" \ |
| 238 | + "${{ env.APP_DEBUG }}" \ |
| 239 | + "${{ env.DOCUMENTROOT }}" \ |
| 240 | + "${{ env.DYNAMICSBASEURL }}" \ |
| 241 | + "${{ env.ASPNETCORE_ENVIRONMENT }}" \ |
| 242 | + "${{ env.DYNAMICSAUTHENTICATIONSETTINGS__ACTIVEENVIRONMENT }}" \ |
| 243 | + "${{ env.DYNAMICSAUTHENTICATIONSETTINGS__CLOUDWEBAPIURL }}" \ |
| 244 | + "${{ env.DYNAMICSAUTHENTICATIONSETTINGS__CLOUDREDIRECTURL }}" \ |
| 245 | + "${{ env.DYNAMICSAUTHENTICATIONSETTINGS__CLOUDRESOURCEURL }}" \ |
| 246 | + "${{ env.DYNAMICSAUTHENTICATIONSETTINGS__CLOUDBASEURL }}" \ |
| 247 | + "${{ env.ASPNETCORE_ENVIRONMENT_CAS }}" \ |
| 248 | + "${{ env.CAS_API_SERVER }}" \ |
| 249 | + "${{ env.CAS_TOKEN_URI }}" \ |
| 250 | + "${{ env.CAS_INVOICE_URI }}" \ |
| 251 | + "${{ env.TRUSTED_CA_BUNDLE }}" |
241 | 252 |
|
242 | | - oc tag -n ${{ env.OPENSHIFT_NAMESPACE_DEV }} ${{ steps.push-image-frontend.outputs.registry-path }} ${{ env.REPO_NAME }}-frontend:${{ env.TAG }} |
243 | | -
|
244 | | -
|
245 | | - oc tag -n ${{ env.OPENSHIFT_NAMESPACE_DEV }} ${{ steps.push-image-api.outputs.registry-path }} ${{env.REPO_NAME }}-api:${{ env.TAG }} |
246 | | - |
247 | | - |
248 | | - |
249 | | - oc tag -n ${{ env.OPENSHIFT_NAMESPACE_DEV }} ${{ steps.push-image-cas.outputs.registry-path }} ${{env.REPO_NAME }}-cas-api:${{ env.TAG }} |
250 | | -
|
251 | | - curl -s https://raw.githubusercontent.com/bcgov/${{ env.REPO_NAME }}/${{ env.BRANCH }}/openshift/update-configmap.sh | bash /dev/stdin "${{ env.REPO_NAME }}" "${{env.APP_DEBUG}}" "${{env.DOCUMENTROOT}}" "${{ env.DYNAMICSBASEURL}}" "${{env.ASPNETCORE_ENVIRONMENT}}" "${{env.DYNAMICSAUTHENTICATIONSETTINGS__ACTIVEENVIRONMENT}}" "${{env.DYNAMICSAUTHENTICATIONSETTINGS__CLOUDWEBAPIURL}}" "${{env.DYNAMICSAUTHENTICATIONSETTINGS__CLOUDREDIRECTURL}}" "${{env.DYNAMICSAUTHENTICATIONSETTINGS__CLOUDRESOURCEURL}}" "${{env.DYNAMICSAUTHENTICATIONSETTINGS__CLOUDBASEURL}}" "${{env.ASPNETCORE_ENVIRONMENT_CAS}}" "${{env.CAS_API_SERVER}}" "${{env.CAS_TOKEN_URI}}" "${{env.CAS_INVOICE_URI}}" "${{ env.TRUSTED_CA_BUNDLE }}" |
252 | | - |
253 | | - |
254 | 253 | # Process and apply deployment template |
255 | | - |
256 | | - oc process -f ./openshift/templates/ecas-frontend/frontend.dc.yaml -p APP_NAME=${{ env.APP_NAME }} -p REPO_NAME=${{ env.REPO_NAME }} -p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE_DEV }} -p TAG=${{ env.TAG }} -p MIN_REPLICAS=${{ env.MIN_REPLICAS }} -p MAX_REPLICAS=${{ env.MAX_REPLICAS }} -p MIN_CPU=${{ env.MIN_CPU }} -p MAX_CPU=${{ env.MAX_CPU }} -p MIN_MEM=${{ env.MIN_MEM }} -p MAX_MEM=${{ env.MAX_MEM }} -p HOST_ROUTE=${{ env.HOST_ROUTE}} -p CA_CERT="${{ env.CA_CERT }}" -p CERTIFICATE="${{ env.CERTIFICATE }}" -p PRIVATE_KEY="${{ env.PRIVATE_KEY }}" -p ENV="${{env.ENV}}"| oc apply -f - |
257 | | -
|
258 | | -
|
259 | | -
|
260 | | - oc process -f ./openshift/templates/ecas-api/api.dc.yaml -p APP_NAME=${{ env.APP_NAME }} -p REPO_NAME=${{ env.REPO_NAME }} -p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE_DEV }} -p TAG=${{ env.TAG }} -p MIN_REPLICAS=${{ env.MIN_REPLICAS }} -p MAX_REPLICAS=${{ env.MAX_REPLICAS }} -p MIN_CPU=${{ env.MIN_CPU }} -p MAX_CPU=${{ env.MAX_CPU }} -p MIN_MEM=${{ env.MIN_MEM }} -p MAX_MEM=${{ env.MAX_MEM }} -p HOST_ROUTE=${{ env.HOST_ROUTE }}\ |
261 | | - | oc apply -f - |
262 | | - |
263 | | - |
264 | | - oc process -f ./openshift/templates/cas-api/cas-api.dc.yaml -p APP_NAME=${{ env.APP_NAME }} -p REPO_NAME=${{ env.REPO_NAME }} -p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE_DEV }} -p TAG=${{ env.TAG }} -p MIN_REPLICAS=${{ env.MIN_REPLICAS }} -p MAX_REPLICAS=${{ env.MAX_REPLICAS }} -p MIN_CPU=${{ env.MIN_CPU }} -p MAX_CPU=${{ env.MAX_CPU }} -p MIN_MEM=${{ env.MIN_MEM }} -p MAX_MEM=${{ env.MAX_MEM }} -p HOST_ROUTE=${{ env.HOST_ROUTE }}\ |
265 | | - | oc apply -f - |
266 | | - |
267 | | -
|
268 | | - # Start rollout (if necessary) and follow it |
269 | | -
|
| 254 | + oc process -f ./openshift/templates/ecas-frontend/frontend.dc.yaml \ |
| 255 | + -p APP_NAME=${{ env.APP_NAME }} \ |
| 256 | + -p REPO_NAME=${{ env.REPO_NAME }} \ |
| 257 | + -p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE_DEV }} \ |
| 258 | + -p TAG=${{ env.TAG }} \ |
| 259 | + -p MIN_REPLICAS=${{ env.MIN_REPLICAS }} \ |
| 260 | + -p MAX_REPLICAS=${{ env.MAX_REPLICAS }} \ |
| 261 | + -p MIN_CPU=${{ env.MIN_CPU }} \ |
| 262 | + -p MAX_CPU=${{ env.MAX_CPU }} \ |
| 263 | + -p MIN_MEM=${{ env.MIN_MEM }} \ |
| 264 | + -p MAX_MEM=${{ env.MAX_MEM }} \ |
| 265 | + -p HOST_ROUTE=${{ env.HOST_ROUTE}} \ |
| 266 | + -p CA_CERT="${{ env.CA_CERT }}" \ |
| 267 | + -p CERTIFICATE="${{ env.CERTIFICATE }}" \ |
| 268 | + -p PRIVATE_KEY="${{ env.PRIVATE_KEY }}" \ |
| 269 | + -p ENV="${{env.ENV}}" | oc apply -f - |
| 270 | +
|
| 271 | + oc process -f ./openshift/templates/ecas-api/api.dc.yaml \ |
| 272 | + -p APP_NAME=${{ env.APP_NAME }} \ |
| 273 | + -p REPO_NAME=${{ env.REPO_NAME }} \ |
| 274 | + -p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE_DEV }} \ |
| 275 | + -p TAG=${{ env.TAG }} \ |
| 276 | + -p MIN_REPLICAS=${{ env.MIN_REPLICAS }} \ |
| 277 | + -p MAX_REPLICAS=${{ env.MAX_REPLICAS }} \ |
| 278 | + -p MIN_CPU=${{ env.MIN_CPU }} \ |
| 279 | + -p MAX_CPU=${{ env.MAX_CPU }} \ |
| 280 | + -p MIN_MEM=${{ env.MIN_MEM }} \ |
| 281 | + -p MAX_MEM=${{ env.MAX_MEM }} \ |
| 282 | + -p HOST_ROUTE=${{ env.HOST_ROUTE }} | oc apply -f - |
| 283 | +
|
| 284 | + oc process -f ./openshift/templates/cas-api/cas-api.dc.yaml \ |
| 285 | + -p APP_NAME=${{ env.APP_NAME }} \ |
| 286 | + -p REPO_NAME=${{ env.REPO_NAME }} \ |
| 287 | + -p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE_DEV }} \ |
| 288 | + -p TAG=${{ env.TAG }} \ |
| 289 | + -p MIN_REPLICAS=${{ env.MIN_REPLICAS }} \ |
| 290 | + -p MAX_REPLICAS=${{ env.MAX_REPLICAS }} \ |
| 291 | + -p MIN_CPU=${{ env.MIN_CPU }} \ |
| 292 | + -p MAX_CPU=${{ env.MAX_CPU }} \ |
| 293 | + -p MIN_MEM=${{ env.MIN_MEM }} \ |
| 294 | + -p MAX_MEM=${{ env.MAX_MEM }} \ |
| 295 | + -p HOST_ROUTE=${{ env.HOST_ROUTE }} | oc apply -f - |
| 296 | +
|
| 297 | + # Restart deployments to pick up new images and follow rollout status |
| 298 | + oc rollout restart deployment/${{ env.APP_NAME_FRONTEND }} && echo "Rollout Front End in progress" |
| 299 | + oc rollout restart deployment/${{ env.APP_NAME_API }} && echo "Rollout ECAS API in progress" |
| 300 | + oc rollout restart deployment/${{ env.APP_NAME_CAS }} && echo "Rollout CAS API in progress" |
270 | 301 |
|
271 | | - oc rollout latest dc/${{ env.APP_NAME_FRONTEND }} 2> /dev/null || true && echo "Rollout Front End in progress" |
272 | | -
|
273 | | - oc rollout latest dc/${{ env.APP_NAME_API }} 2> /dev/null || true && echo "Rollout ECAS API in progress" |
274 | | -
|
275 | | - oc rollout latest dc/${{ env.APP_NAME_CAS }} 2> /dev/null || true && echo "Rollout CAS API in progress" |
276 | | - |
277 | 302 | # Get status, returns 0 if rollout is successful |
278 | | -
|
279 | | - oc rollout status dc/${{ env.APP_NAME_FRONTEND }} |
280 | | -
|
281 | | - oc rollout status dc/${{ env.APP_NAME_API }} |
282 | | -
|
283 | | - oc rollout status dc/${{ env.APP_NAME_CAS }} |
284 | | -
|
| 303 | + oc rollout status deployment/${{ env.APP_NAME_FRONTEND }} |
| 304 | + oc rollout status deployment/${{ env.APP_NAME_API }} |
| 305 | + oc rollout status deployment/${{ env.APP_NAME_CAS }} |
285 | 306 |
|
286 | 307 | - name: ZAP Scan (action, fail on alerts) |
287 | 308 | uses: zaproxy/action-full-scan@v0.12.0 |
|
0 commit comments