11---
2- name : stating
3-
4- on :
5- push :
6- branches :
7- - develop
8-
9- workflow_dispatch :
10-
11- jobs :
12- build :
13- outputs :
14- image : ${{ steps.export.outputs.image }}
15- tag : ${{ steps.export.outputs.tag }}
16-
17- runs-on : ubuntu-latest
18- env :
19- image : cranecloud/monitoring-api
20-
21- steps :
22- - name : Checkout
23- uses : actions/checkout@v2
24-
25- - name : Install (Buildx)
26- uses : docker/setup-buildx-action@v1
27-
28- - name : Login to Docker Hub
29- uses : docker/login-action@v2
30- with :
31- username : ${{ secrets.DOCKERHUB_USERNAME }}
32- password : ${{ secrets.DOCKERHUB_TOKEN }}
33-
34- - id : meta
35- name : Tag
36- uses : docker/metadata-action@v3
37- with :
38- flavor : |
39- latest=true
40- images : ${{ env.image }}
41- tags : |
42- type=ref,event=branch
43- type=ref,event=pr
44- type=sha
45-
46- - name : Build
47- uses : docker/build-push-action@v2
48- with :
49- cache-from : type=gha
50- cache-to : type=gha,mode=max
51- context : .
52- labels : ${{ steps.meta.outputs.labels }}
53- push : true
54- tags : ${{ steps.meta.outputs.tags }}
55-
56- - id : export
57- name : Export
58- uses : actions/github-script@v5
59- with :
60- script : |
61- const metadata = JSON.parse(`${{ steps.meta.outputs.json }}`)
62- const fullUrl = metadata.tags.find((t) => t.includes(':sha-'))
63- if (fullUrl == null) {
64- core.error('Unable to find sha tag of image')
65- } else {
66- const tag = fullUrl.split(':')[1]
67- core.setOutput('image', fullUrl)
68- core.setOutput('tag', tag)
69- }
70-
71- Microservice :
72- name : Deploy (Microservice)
73-
74- needs :
75- - Build
76-
77- runs-on : ubuntu-latest
78- env :
79- namespace : cranecloud-microservice
80- image : cranecloud/monitoring-api
81-
82- steps :
83- - name : Checkout code
84- uses : actions/checkout@v2
85-
86- - uses : azure/k8s-set-context@v1
87- with :
88- kubeconfig : ${{ secrets.RENU_KUBECONFIG}}
89-
90- - name : Helm Release
91- run : |
92- helm upgrade --install --create-namespace \
93- monitoring-api ./helm/chart \
94- --values helm/values.micro.yaml \
95- --namespace $namespace \
96- --set image.tag="${{ needs.build.outputs.tag }}" \
97- --set environment.ADMIN_MYSQL_PASSWORD="${{ secrets.STAGING_ADMIN_MYSQL_PASSWORD }}" \
98- --set environment.ADMIN_PSQL_PASSWORD="${{ secrets.STAGING_ADMIN_PSQL_PASSWORD }}" \
99- --set environment.APP_MAIL_PASSWORD="${{ secrets.STAGING_APP_MAIL_PASSWORD }}" \
100- --set environment.DATABASE_URI="${{ secrets.MICROSERVICE_DATABASE_URI }}" \
101- --set environment.MONGO_URI="${{ secrets.STAGING_MONGO_URI }}" \
102- --set environment.FLASK_APP_SALT="${{ secrets.STAGING_FLASK_APP_SALT }}" \
103- --set environment.FLASK_APP_SECRET="${{ secrets.STAGING_FLASK_APP_SECRET }}" \
104- --set environment.GITHUB_CLIENT_SECRET="${{ secrets.STAGING_GITHUB_CLIENT_SECRET }}" \
105- --set environment.NEW_RELIC_LICENSE_KEY="${{ secrets.STAGING_NEW_RELIC_LICENSE_KEY }}" \
106- --set environment.KUBE_SERVICE_PORT="${{ secrets.STAGING_KUBE_SERVICE_PORT }}" \
107- --set environment.LOGGER_APP_URL="${{ secrets.MICROSERVICE_LOGGER_APP_URL }}" \
108- --timeout=300s
109-
110- - name : Monitor Rollout
111- run : |
112- kubectl rollout status deployment/cranecloud-backend --timeout=300s --namespace $namespace
113-
2+ name : stating
3+
4+ on :
5+ push :
6+ branches :
7+ - develop
8+ - deploy/app
9+
10+ workflow_dispatch :
11+
12+ jobs :
13+ build :
14+ outputs :
15+ image : ${{ steps.export.outputs.image }}
16+ tag : ${{ steps.export.outputs.tag }}
17+
18+ runs-on : ubuntu-latest
19+ env :
20+ image : cranecloud/monitoring-api
21+
22+ steps :
23+ - name : Checkout
24+ uses : actions/checkout@v2
25+
26+ - name : Install (Buildx)
27+ uses : docker/setup-buildx-action@v1
28+
29+ - name : Login to Docker Hub
30+ uses : docker/login-action@v2
31+ with :
32+ username : ${{ secrets.DOCKERHUB_USERNAME }}
33+ password : ${{ secrets.DOCKERHUB_TOKEN }}
34+
35+ - id : meta
36+ name : Tag
37+ uses : docker/metadata-action@v3
38+ with :
39+ flavor : |
40+ latest=true
41+ images : ${{ env.image }}
42+ tags : |
43+ type=ref,event=branch
44+ type=ref,event=pr
45+ type=sha
46+
47+ - name : Build
48+ uses : docker/build-push-action@v2
49+ with :
50+ cache-from : type=gha
51+ cache-to : type=gha,mode=max
52+ context : .
53+ labels : ${{ steps.meta.outputs.labels }}
54+ push : true
55+ tags : ${{ steps.meta.outputs.tags }}
56+
57+ - id : export
58+ name : Export
59+ uses : actions/github-script@v5
60+ with :
61+ script : |
62+ const metadata = JSON.parse(`${{ steps.meta.outputs.json }}`)
63+ const fullUrl = metadata.tags.find((t) => t.includes(':sha-'))
64+ if (fullUrl == null) {
65+ core.error('Unable to find sha tag of image')
66+ } else {
67+ const tag = fullUrl.split(':')[1]
68+ core.setOutput('image', fullUrl)
69+ core.setOutput('tag', tag)
70+ }
71+
72+ Microservice :
73+ name : Deploy (Microservice)
74+
75+ needs :
76+ - Build
77+
78+ runs-on : ubuntu-latest
79+ env :
80+ namespace : cranecloud-microservice
81+ image : cranecloud/monitoring-api
82+
83+ steps :
84+ - name : Checkout code
85+ uses : actions/checkout@v2
86+
87+ - uses : azure/k8s-set-context@v1
88+ with :
89+ kubeconfig : ${{ secrets.RENU_KUBECONFIG}}
90+
91+ - name : Helm Release
92+ run : |
93+ helm upgrade --install --create-namespace \
94+ monitoring-api ./helm/chart \
95+ --values helm/values.micro.yaml \
96+ --namespace $namespace \
97+ --set image.tag="${{ needs.build.outputs.tag }}" \
98+ --set environment.DATABASE_URI="${{ secrets.STAGING_DATABASE_URI }}" \
99+ --set environment.DATABASE_USER="${{ secrets.STAGING_DATABASE_USER }}" \
100+ --set environment.TEST_DATABASE_URL="${{ secrets.STAGING_TEST_DATABASE_URL }}" \
101+ --set environment.FLASK_APP_SALT="${{ secrets.STAGING_FLASK_APP_SALT }}" \
102+ --set environment.FLASK_APP_SECRET="${{ secrets.STAGING_FLASK_APP_SECRET }}" \
103+ --set environment.PRODUCT_BASE_URL="${{ secrets.STAGING_PRODUCT_BASE_URL }}" \
104+ --set environment.LOGGER_APP_URL="${{ secrets.STAGING_LOGGER_APP_URL }}" \
105+ --timeout=300s
106+
107+ - name : Monitor Rollout
108+ run : |
109+ kubectl rollout status deployment/monitoring-api --timeout=300s --namespace $namespace
0 commit comments