Skip to content

Commit 0773bf4

Browse files
Merge pull request #36 from bcgov/convert-to-deployment
Convert DC to Deployment
2 parents 3b92051 + d468042 commit 0773bf4

File tree

5 files changed

+177
-83
lines changed

5 files changed

+177
-83
lines changed

.github/workflows/deploy-to.openshift-dev.yml

Lines changed: 45 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Build & Deploy to DEV
22

33
env:
4-
# 🖊️ EDIT your repository secrets to log into your OpenShift cluster and set up the context.
4+
# EDIT your repository secrets to log into your OpenShift cluster and set up the context.
55
# See https://github.com/redhat-actions/oc-login#readme for how to retrieve these values.
66
# To get a permanent token, refer to https://github.com/redhat-actions/oc-login/wiki/Using-a-Service-Account-for-GitHub-Actions
77
OPENSHIFT_SERVER: ${{ secrets.OPENSHIFT_SERVER }}
@@ -13,13 +13,13 @@ env:
1313
DB_USER: ${{ secrets.DB_USER }}
1414
SPLUNK_TOKEN: ${{ secrets.SPLUNK_TOKEN }}
1515

16-
# 🖊️ EDIT to change the image registry settings.
16+
# EDIT to change the image registry settings.
1717
# Registries such as GHCR, Quay.io, and Docker Hub are supported.
1818
IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
1919
IMAGE_REGISTRY_USER: ${{ github.actor }}
2020
IMAGE_REGISTRY_PASSWORD: ${{ github.token }}
2121

22-
# 🖊️ EDIT to specify custom tags for the container image, or default tags will be generated below.
22+
# EDIT to specify custom tags for the container image, or default tags will be generated below.
2323
IMAGE_TAGS: ""
2424

2525
SPRING_BOOT_IMAGE_NAME: services-card-api-master
@@ -28,7 +28,7 @@ env:
2828

2929
APP_NAME: 'services-card-api'
3030
REPO_NAME: "educ-services-card-api"
31-
BRANCH: "master"
31+
BRANCH: ${{ github.ref_name }}
3232
APP_NAME_FULL: "services-card-api-master"
3333
NAMESPACE: ${{ secrets.COMMON_NAMESPACE_NO_ENV }}
3434
COMMON_NAMESPACE: ${{ secrets.COMMON_NAMESPACE_NO_ENV }}
@@ -78,18 +78,18 @@ jobs:
7878
core.error(`Secret "${name}" is not set`);
7979
return true;
8080
}
81-
core.info(`✔️ Secret "${name}" is set`);
81+
core.info(`Secret "${name}" is set`);
8282
return false;
8383
});
8484
if (missingSecrets.length > 0) {
85-
core.setFailed(`At least one required secret is not set in the repository. \n` +
85+
core.setFailed(`At least one required secret is not set in the repository. \n` +
8686
"You can add it using:\n" +
8787
"GitHub UI: https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository \n" +
8888
"GitHub CLI: https://cli.github.com/manual/gh_secret_set \n" +
8989
"Also, refer to https://github.com/redhat-actions/oc-login#getting-started-with-the-action-or-see-example");
9090
}
9191
else {
92-
core.info(`All the required secrets are set`);
92+
core.info(`All the required secrets are set`);
9393
}
9494
- name: Check out repository
9595
uses: actions/checkout@v4
@@ -142,27 +142,51 @@ jobs:
142142
- name: Deploy API
143143
run: |
144144
set -eu
145+
145146
# Login to OpenShift and select project
146147
oc login --token=${{ env.OPENSHIFT_TOKEN }} --server=${{ env.OPENSHIFT_SERVER }}
147148
oc project ${{ env.OPENSHIFT_NAMESPACE_DEV }}
149+
148150
# Cancel any rollouts in progress
149-
oc rollout cancel dc/${{ env.SPRING_BOOT_IMAGE_NAME }} 2> /dev/null \
150-
|| true && echo "No rollout in progress"
151-
152-
oc tag ${{ steps.push-image.outputs.registry-path }} ${{ env.REPO_NAME }}-${{ env.BRANCH }}:${{ env.TAG }}
153-
151+
oc rollout cancel deployment/${{ env.SPRING_BOOT_IMAGE_NAME }} 2> /dev/null \
152+
|| true && echo "No rollout in progress"
153+
154+
oc tag ${{ steps.push-image.outputs.registry-path }} \
155+
${{ env.REPO_NAME }}-${{ env.BRANCH }}:${{ env.TAG }}
156+
154157
# Process and apply deployment template
155-
oc process -f tools/openshift/api.dc.yaml -p APP_NAME=${{ env.APP_NAME }} -p REPO_NAME=${{ env.REPO_NAME }} -p BRANCH=${{ env.BRANCH }} -p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE_DEV }} -p TAG=${{ env.TAG }} -p MIN_REPLICAS=${{ env.MIN_REPLICAS_DEV }} -p MAX_REPLICAS=${{ env.MAX_REPLICAS_DEV }} -p MIN_CPU=${{ env.MIN_CPU }} -p MAX_CPU=${{ env.MAX_CPU }} -p MIN_MEM=${{ env.MIN_MEM }} -p MAX_MEM=${{ env.MAX_MEM }} \
156-
| oc apply -f -
157-
158-
curl -s https://raw.githubusercontent.com/bcgov/${{ env.REPO_NAME }}/master/tools/config/update-configmap.sh | bash /dev/stdin dev ${{ env.APP_NAME }} ${{ env.NAMESPACE }} ${{ env.COMMON_NAMESPACE }} ${{ env.DB_JDBC_CONNECT_STRING }} ${{ env.DB_PWD }} ${{ env.DB_USER }} ${{ env.SPLUNK_TOKEN }}
159-
158+
oc process -f tools/openshift/api.deployment.yaml \
159+
-p APP_NAME=${{ env.APP_NAME }} \
160+
-p REPO_NAME=${{ env.REPO_NAME }} \
161+
-p BRANCH=${{ env.BRANCH }} \
162+
-p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE_DEV }} \
163+
-p TAG=${{ env.TAG }} \
164+
-p MIN_REPLICAS=${{ env.MIN_REPLICAS_DEV }} \
165+
-p MAX_REPLICAS=${{ env.MAX_REPLICAS_DEV }} \
166+
-p MIN_CPU=${{ env.MIN_CPU }} \
167+
-p MAX_CPU=${{ env.MAX_CPU }} \
168+
-p MIN_MEM=${{ env.MIN_MEM }} \
169+
-p MAX_MEM=${{ env.MAX_MEM }} \
170+
| oc apply -f -
171+
172+
curl -s https://raw.githubusercontent.com/bcgov/${{ env.REPO_NAME }}/${{ env.BRANCH }}/tools/config/update-configmap.sh \
173+
| bash /dev/stdin dev \
174+
${{ env.APP_NAME }} \
175+
${{ env.NAMESPACE }} \
176+
${{ env.DB_JDBC_CONNECT_STRING }} \
177+
${{ env.DB_PWD }} \
178+
${{ env.DB_USER }} \
179+
${{ env.SPLUNK_TOKEN }} \
180+
${{ env.BRANCH }}
181+
160182
# Start rollout (if necessary) and follow it
161-
oc rollout latest dc/${{ env.SPRING_BOOT_IMAGE_NAME }} 2> /dev/null \
162-
|| true && echo "Rollout in progress"
163-
oc logs -f dc/${{ env.SPRING_BOOT_IMAGE_NAME }}
183+
oc rollout restart deployment/${{ env.SPRING_BOOT_IMAGE_NAME }} 2> /dev/null \
184+
|| true && echo "Rollout in progress"
185+
186+
oc logs -f deployment/${{ env.SPRING_BOOT_IMAGE_NAME }}
187+
164188
# Get status, returns 0 if rollout is successful
165-
oc rollout status dc/${{ env.SPRING_BOOT_IMAGE_NAME }}
189+
oc rollout status deployment/${{ env.SPRING_BOOT_IMAGE_NAME }}
166190
- name: ZAP Scan
167191
uses: zaproxy/action-api-scan@v0.8.0
168192
with:

.github/workflows/deploy-to.openshift-prod.yml

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Deploy to PROD
22

33
env:
4-
# 🖊️ EDIT your repository secrets to log into your OpenShift cluster and set up the context.
4+
# EDIT your repository secrets to log into your OpenShift cluster and set up the context.
55
# See https://github.com/redhat-actions/oc-login#readme for how to retrieve these values.
66
# To get a permanent token, refer to https://github.com/redhat-actions/oc-login/wiki/Using-a-Service-Account-for-GitHub-Actions
77
# Added this comment
@@ -14,7 +14,7 @@ env:
1414
DB_USER: ${{ secrets.DB_USER }}
1515
SPLUNK_TOKEN: ${{ secrets.SPLUNK_TOKEN }}
1616

17-
# 🖊️ EDIT to change the image registry settings.
17+
# EDIT to change the image registry settings.
1818
# Registries such as GHCR, Quay.io, and Docker Hub are supported.
1919
IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
2020
IMAGE_REGISTRY_USER: ${{ github.actor }}
@@ -74,19 +74,19 @@ jobs:
7474
core.error(`Secret "${name}" is not set`);
7575
return true;
7676
}
77-
core.info(`✔️ Secret "${name}" is set`);
77+
core.info(`Secret "${name}" is set`);
7878
return false;
7979
});
8080

8181
if (missingSecrets.length > 0) {
82-
core.setFailed(`At least one required secret is not set in the repository. \n` +
82+
core.setFailed(`At least one required secret is not set in the repository. \n` +
8383
"You can add it using:\n" +
8484
"GitHub UI: https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository \n" +
8585
"GitHub CLI: https://cli.github.com/manual/gh_secret_set \n" +
8686
"Also, refer to https://github.com/redhat-actions/oc-login#getting-started-with-the-action-or-see-example");
8787
}
8888
else {
89-
core.info(`All the required secrets are set`);
89+
core.info(`All the required secrets are set`);
9090
}
9191

9292
- name: Check out repository
@@ -107,24 +107,50 @@ jobs:
107107
- name: Deploy
108108
run: |
109109
set -eux
110+
110111
# Login to OpenShift and select project
111112
oc login --token=${{ env.OPENSHIFT_TOKEN }} --server=${{ env.OPENSHIFT_SERVER }}
112113
oc project ${{ env.OPENSHIFT_NAMESPACE }}
114+
113115
# Cancel any rollouts in progress
114-
oc rollout cancel dc/${{ env.SPRING_BOOT_IMAGE_NAME }} 2> /dev/null \
115-
|| true && echo "No rollout in progress"
116-
117-
oc tag ${{ env.NAMESPACE }}-test/${{ env.REPO_NAME }}-${{ env.BRANCH }}:${{ steps.get-latest-tag.outputs.tag }} ${{ env.NAMESPACE }}-prod/${{ env.REPO_NAME }}-${{ env.BRANCH }}:${{ steps.get-latest-tag.outputs.tag }}
118-
116+
oc rollout cancel deployment/${{ env.SPRING_BOOT_IMAGE_NAME }} 2> /dev/null \
117+
|| true && echo "No rollout in progress"
118+
119+
oc tag \
120+
${{ env.NAMESPACE }}-test/${{ env.REPO_NAME }}-${{ env.BRANCH }}:${{ steps.get-latest-tag.outputs.tag }} \
121+
${{ env.NAMESPACE }}-prod/${{ env.REPO_NAME }}-${{ env.BRANCH }}:${{ steps.get-latest-tag.outputs.tag }}
122+
119123
# Process and apply deployment template
120-
oc process -f tools/openshift/api.dc.yaml -p APP_NAME=${{ env.APP_NAME }} -p REPO_NAME=${{ env.REPO_NAME }} -p BRANCH=${{ env.BRANCH }} -p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE }} -p TAG=${{ steps.get-latest-tag.outputs.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 }} \
121-
| oc apply -f -
122-
123-
curl -s https://raw.githubusercontent.com/bcgov/${{ env.REPO_NAME }}/${{ steps.get-latest-tag.outputs.tag }}/tools/config/update-configmap.sh | bash /dev/stdin ${{ env.TARGET_ENV }} ${{ env.APP_NAME }} ${{ env.NAMESPACE }} ${{ env.COMMON_NAMESPACE }} ${{ env.DB_JDBC_CONNECT_STRING }} ${{ env.DB_PWD }} ${{ env.DB_USER }} ${{ env.SPLUNK_TOKEN }}
124-
124+
oc process -f tools/openshift/api.deployment.yaml \
125+
-p APP_NAME=${{ env.APP_NAME }} \
126+
-p REPO_NAME=${{ env.REPO_NAME }} \
127+
-p BRANCH=${{ env.BRANCH }} \
128+
-p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE }} \
129+
-p TAG=${{ steps.get-latest-tag.outputs.tag }} \
130+
-p MIN_REPLICAS=${{ env.MIN_REPLICAS }} \
131+
-p MAX_REPLICAS=${{ env.MAX_REPLICAS }} \
132+
-p MIN_CPU=${{ env.MIN_CPU }} \
133+
-p MAX_CPU=${{ env.MAX_CPU }} \
134+
-p MIN_MEM=${{ env.MIN_MEM }} \
135+
-p MAX_MEM=${{ env.MAX_MEM }} \
136+
| oc apply -f -
137+
138+
curl -s https://raw.githubusercontent.com/bcgov/${{ env.REPO_NAME }}/${{ steps.get-latest-tag.outputs.tag }}/tools/config/update-configmap.sh \
139+
| bash /dev/stdin \
140+
${{ env.TARGET_ENV }} \
141+
${{ env.APP_NAME }} \
142+
${{ env.NAMESPACE }} \
143+
${{ env.DB_JDBC_CONNECT_STRING }} \
144+
${{ env.DB_PWD }} \
145+
${{ env.DB_USER }} \
146+
${{ env.SPLUNK_TOKEN }} \
147+
${{ env.BRANCH }}
148+
125149
# Start rollout (if necessary) and follow it
126-
oc rollout latest dc/${{ env.SPRING_BOOT_IMAGE_NAME }} 2> /dev/null \
127-
|| true && echo "Rollout in progress"
128-
oc logs -f dc/${{ env.SPRING_BOOT_IMAGE_NAME }}
150+
oc rollout restart deployment/${{ env.SPRING_BOOT_IMAGE_NAME }} 2> /dev/null \
151+
|| true && echo "Rollout in progress"
152+
153+
oc logs -f deployment/${{ env.SPRING_BOOT_IMAGE_NAME }}
154+
129155
# Get status, returns 0 if rollout is successful
130-
oc rollout status dc/${{ env.SPRING_BOOT_IMAGE_NAME }}
156+
oc rollout status deployment/${{ env.SPRING_BOOT_IMAGE_NAME }}

.github/workflows/deploy-to.openshift-test.yml

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Build & Deploy to TEST
22

33
env:
4-
# 🖊️ EDIT your repository secrets to log into your OpenShift cluster and set up the context.
4+
# EDIT your repository secrets to log into your OpenShift cluster and set up the context.
55
# See https://github.com/redhat-actions/oc-login#readme for how to retrieve these values.
66
# To get a permanent token, refer to https://github.com/redhat-actions/oc-login/wiki/Using-a-Service-Account-for-GitHub-Actions
77
OPENSHIFT_SERVER: ${{ secrets.OPENSHIFT_SERVER }}
@@ -13,13 +13,13 @@ env:
1313
DB_USER: ${{ secrets.DB_USER }}
1414
SPLUNK_TOKEN: ${{ secrets.SPLUNK_TOKEN }}
1515

16-
# 🖊️ EDIT to change the image registry settings.
16+
# EDIT to change the image registry settings.
1717
# Registries such as GHCR, Quay.io, and Docker Hub are supported.
1818
IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
1919
IMAGE_REGISTRY_USER: ${{ github.actor }}
2020
IMAGE_REGISTRY_PASSWORD: ${{ github.token }}
2121

22-
# 🖊️ EDIT to specify custom tags for the container image, or default tags will be generated below.
22+
# EDIT to specify custom tags for the container image, or default tags will be generated below.
2323
IMAGE_TAGS: ""
2424

2525
SPRING_BOOT_IMAGE_NAME: services-card-api-master
@@ -28,7 +28,7 @@ env:
2828

2929
APP_NAME: 'services-card-api'
3030
REPO_NAME: "educ-services-card-api"
31-
BRANCH: "master"
31+
BRANCH: ${{ github.ref_name }}
3232
APP_NAME_FULL: "services-card-api-master"
3333
NAMESPACE: ${{ secrets.COMMON_NAMESPACE_NO_ENV }}
3434
COMMON_NAMESPACE: ${{ secrets.COMMON_NAMESPACE_NO_ENV }}
@@ -84,19 +84,19 @@ jobs:
8484
core.error(`Secret "${name}" is not set`);
8585
return true;
8686
}
87-
core.info(`✔️ Secret "${name}" is set`);
87+
core.info(`Secret "${name}" is set`);
8888
return false;
8989
});
9090
9191
if (missingSecrets.length > 0) {
92-
core.setFailed(`At least one required secret is not set in the repository. \n` +
92+
core.setFailed(`At least one required secret is not set in the repository. \n` +
9393
"You can add it using:\n" +
9494
"GitHub UI: https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository \n" +
9595
"GitHub CLI: https://cli.github.com/manual/gh_secret_set \n" +
9696
"Also, refer to https://github.com/redhat-actions/oc-login#getting-started-with-the-action-or-see-example");
9797
}
9898
else {
99-
core.info(`All the required secrets are set`);
99+
core.info(`All the required secrets are set`);
100100
}
101101
102102
- name: Check out repository
@@ -110,27 +110,52 @@ jobs:
110110
- name: Deploy API
111111
run: |
112112
set -eu
113+
113114
# Login to OpenShift and select project
114115
oc login --token=${{ env.OPENSHIFT_TOKEN }} --server=${{ env.OPENSHIFT_SERVER }}
115116
oc project ${{ env.OPENSHIFT_NAMESPACE_TEST }}
117+
116118
# Cancel any rollouts in progress
117-
oc rollout cancel dc/${{ env.SPRING_BOOT_IMAGE_NAME }} 2> /dev/null \
118-
|| true && echo "No rollout in progress"
119+
oc rollout cancel deployment/${{ env.SPRING_BOOT_IMAGE_NAME }} 2> /dev/null \
120+
|| true && echo "No rollout in progress"
119121
120-
oc tag ${{ env.NAMESPACE }}-dev/${{ env.REPO_NAME }}-${{ env.BRANCH }}:${{ env.TAG }} ${{ env.NAMESPACE }}-test/${{ env.REPO_NAME }}-${{ env.BRANCH }}:${{ env.TAG }}
122+
oc tag \
123+
${{ env.NAMESPACE }}-dev/${{ env.REPO_NAME }}-${{ env.BRANCH }}:${{ env.TAG }} \
124+
${{ env.NAMESPACE }}-test/${{ env.REPO_NAME }}-${{ env.BRANCH }}:${{ env.TAG }}
121125
122126
# Process and apply deployment template
123-
oc process -f tools/openshift/api.dc.yaml -p APP_NAME=${{ env.APP_NAME }} -p REPO_NAME=${{ env.REPO_NAME }} -p BRANCH=${{ env.BRANCH }} -p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE_TEST }} -p TAG=${{ env.TAG }} -p MIN_REPLICAS=${{ env.MIN_REPLICAS_TEST }} -p MAX_REPLICAS=${{ env.MAX_REPLICAS_TEST }} -p MIN_CPU=${{ env.MIN_CPU }} -p MAX_CPU=${{ env.MAX_CPU }} -p MIN_MEM=${{ env.MIN_MEM }} -p MAX_MEM=${{ env.MAX_MEM }} \
124-
| oc apply -f -
125-
126-
curl -s https://raw.githubusercontent.com/bcgov/${{ env.REPO_NAME }}/master/tools/config/update-configmap.sh | bash /dev/stdin test ${{ env.APP_NAME }} ${{ env.NAMESPACE }} ${{ env.COMMON_NAMESPACE }} ${{ env.DB_JDBC_CONNECT_STRING }} ${{ env.DB_PWD }} ${{ env.DB_USER }} ${{ env.SPLUNK_TOKEN }}
127+
oc process -f tools/openshift/api.deployment.yaml \
128+
-p APP_NAME=${{ env.APP_NAME }} \
129+
-p REPO_NAME=${{ env.REPO_NAME }} \
130+
-p BRANCH=${{ env.BRANCH }} \
131+
-p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE_TEST }} \
132+
-p TAG=${{ env.TAG }} \
133+
-p MIN_REPLICAS=${{ env.MIN_REPLICAS_TEST }} \
134+
-p MAX_REPLICAS=${{ env.MAX_REPLICAS_TEST }} \
135+
-p MIN_CPU=${{ env.MIN_CPU }} \
136+
-p MAX_CPU=${{ env.MAX_CPU }} \
137+
-p MIN_MEM=${{ env.MIN_MEM }} \
138+
-p MAX_MEM=${{ env.MAX_MEM }} \
139+
| oc apply -f -
140+
141+
curl -s https://raw.githubusercontent.com/bcgov/${{ env.REPO_NAME }}/${{ env.BRANCH }}/tools/config/update-configmap.sh \
142+
| bash /dev/stdin test \
143+
${{ env.APP_NAME }} \
144+
${{ env.NAMESPACE }} \
145+
${{ env.DB_JDBC_CONNECT_STRING }} \
146+
${{ env.DB_PWD }} \
147+
${{ env.DB_USER }} \
148+
${{ env.SPLUNK_TOKEN }} \
149+
${{ env.BRANCH }}
127150
128151
# Start rollout (if necessary) and follow it
129-
oc rollout latest dc/${{ env.SPRING_BOOT_IMAGE_NAME }} 2> /dev/null \
130-
|| true && echo "Rollout in progress"
131-
oc logs -f dc/${{ env.SPRING_BOOT_IMAGE_NAME }}
152+
oc rollout latest deployment/${{ env.SPRING_BOOT_IMAGE_NAME }} 2> /dev/null \
153+
|| true && echo "Rollout in progress"
154+
155+
oc logs -f deployment/${{ env.SPRING_BOOT_IMAGE_NAME }}
156+
132157
# Get status, returns 0 if rollout is successful
133-
oc rollout status dc/${{ env.SPRING_BOOT_IMAGE_NAME }}
158+
oc rollout status deployment/${{ env.SPRING_BOOT_IMAGE_NAME }}
134159
135160
- name: ZAP Scan
136161
uses: zaproxy/action-api-scan@v0.8.0

0 commit comments

Comments
 (0)