Skip to content

Commit 5db3648

Browse files
authored
Merge pull request #288 from bcgov/Dev
Syncing Dev Branch to Main Post PROD Release
2 parents 19975c4 + 471c8ac commit 5db3648

File tree

12 files changed

+220
-87
lines changed

12 files changed

+220
-87
lines changed

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
name: 1 DEV - Deploy Dynamics API
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 }}
88
OPENSHIFT_TOKEN: ${{ secrets.OPENSHIFT_TOKEN }}
9-
# 🖊️ EDIT to set the kube context's namespace after login. Leave blank to use your user's default namespace.
9+
# EDIT to set the kube context's namespace after login. Leave blank to use your user's default namespace.
1010
OPENSHIFT_NAMESPACE: ${{ secrets.OFM_NAMESPACE_NO_ENV }}-dev
1111

1212
# SPLUNK_TOKEN: ${{ secrets.SPLUNK_TOKEN }}
1313

14-
# 🖊️ EDIT to change the image registry settings.
14+
# EDIT to change the image registry settings.
1515
# Registries such as GHCR, Quay.io, and Docker Hub are supported.
1616
IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
1717
IMAGE_REGISTRY_USER: ${{ github.actor }}
@@ -80,19 +80,19 @@ jobs:
8080
core.error(`Secret "${name}" is not set`);
8181
return true;
8282
}
83-
core.info(`✔️ Secret "${name}" is set`);
83+
core.info(`Secret "${name}" is set`);
8484
return false;
8585
});
8686
8787
if (missingSecrets.length > 0) {
88-
core.setFailed(`At least one required secret is not set in the repository. \n` +
88+
core.setFailed(`At least one required secret is not set in the repository. \n` +
8989
"You can add it using:\n" +
9090
"GitHub UI: https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository \n" +
9191
"GitHub CLI: https://cli.github.com/manual/gh_secret_set \n" +
9292
"Also, refer to https://github.com/redhat-actions/oc-login#getting-started-with-the-action-or-see-example");
9393
}
9494
else {
95-
core.info(`All the required secrets are set`);
95+
core.info(`All the required secrets are set`);
9696
}
9797
9898
- name: Check out repository
@@ -146,7 +146,7 @@ jobs:
146146
oc login --token=${{ env.OPENSHIFT_TOKEN }} --server=${{ env.OPENSHIFT_SERVER }}
147147
oc project ${{ env.OPENSHIFT_NAMESPACE }}
148148
# Cancel any rollouts in progress
149-
oc rollout cancel dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
149+
oc rollout cancel deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
150150
|| true && echo "No rollout in progress"
151151
152152
# Create the image stream if it doesn't exist
@@ -156,7 +156,7 @@ jobs:
156156
157157
# Process and apply deployment template
158158
oc process \
159-
-f tools/openshift/d365api.dc.yaml \
159+
-f tools/openshift/d365api.deployment.yaml \
160160
-p APP_NAME=${{ env.APP_NAME }} \
161161
-p REPO_NAME=${{ env.REPO_NAME }} \
162162
-p BRANCH=${{ env.BRANCH }} \
@@ -205,11 +205,11 @@ jobs:
205205
${{ secrets.D365_INVOICE_LINES_DISTRIBUTION_ACK }}
206206
207207
# Start rollout (if necessary) and follow it
208-
oc rollout latest dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
208+
oc rollout restart deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
209209
|| true && echo "Rollout in progress"
210210
211211
# Get status, returns 0 if rollout is successful
212-
oc rollout status dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }}
212+
oc rollout status deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }}
213213
214214
- name: ZAP Scan
215215
uses: zaproxy/action-full-scan@v0.8.0

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
name: 4 EFX - Deploy Dynamics API
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 }}
88
OPENSHIFT_TOKEN: ${{ secrets.OPENSHIFT_TOKEN }}
9-
# 🖊️ EDIT to set the kube context's namespace after login. Leave blank to use your user's default namespace.
9+
# EDIT to set the kube context's namespace after login. Leave blank to use your user's default namespace.
1010
OPENSHIFT_NAMESPACE: ${{ secrets.OFM_NAMESPACE_NO_ENV }}-test
1111

1212
# SPLUNK_TOKEN: ${{ secrets.SPLUNK_TOKEN }}
1313

14-
# 🖊️ EDIT to change the image registry settings.
14+
# EDIT to change the image registry settings.
1515
# Registries such as GHCR, Quay.io, and Docker Hub are supported.
1616
IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
1717
IMAGE_REGISTRY_USER: ${{ github.actor }}
@@ -85,19 +85,19 @@ jobs:
8585
core.error(`Secret "${name}" is not set`);
8686
return true;
8787
}
88-
core.info(`✔️ Secret "${name}" is set`);
88+
core.info(`Secret "${name}" is set`);
8989
return false;
9090
});
9191
9292
if (missingSecrets.length > 0) {
93-
core.setFailed(`At least one required secret is not set in the repository. \n` +
93+
core.setFailed(`At least one required secret is not set in the repository. \n` +
9494
"You can add it using:\n" +
9595
"GitHub UI: https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository \n" +
9696
"GitHub CLI: https://cli.github.com/manual/gh_secret_set \n" +
9797
"Also, refer to https://github.com/redhat-actions/oc-login#getting-started-with-the-action-or-see-example");
9898
}
9999
else {
100-
core.info(`All the required secrets are set`);
100+
core.info(`All the required secrets are set`);
101101
}
102102
103103
- name: Check out repository with branch [${{ env.BRANCH }}]
@@ -117,7 +117,7 @@ jobs:
117117
oc login --token=${{ env.OPENSHIFT_TOKEN }} --server=${{ env.OPENSHIFT_SERVER }}
118118
oc project ${{ env.OPENSHIFT_NAMESPACE }}
119119
# Cancel any rollouts in progress
120-
oc rollout cancel dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
120+
oc rollout cancel deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
121121
|| true && echo "No rollout in progress"
122122
123123
# Create the image stream if it doesn't exist
@@ -128,7 +128,7 @@ jobs:
128128
129129
# Process and apply deployment template
130130
oc process \
131-
-f tools/openshift/d365api.dc.yaml \
131+
-f tools/openshift/d365api.deployment.yaml \
132132
-p APP_NAME=${{ env.APP_NAME }} \
133133
-p REPO_NAME=${{ env.REPO_NAME }} \
134134
-p BRANCH=${{ env.BRANCH }} \
@@ -177,8 +177,8 @@ jobs:
177177
${{ secrets.D365_INVOICE_LINES_DISTRIBUTION_ACK }}
178178
179179
# Start rollout (if necessary) and follow it
180-
oc rollout latest dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
180+
oc rollout restart deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
181181
|| true && echo "Rollout in progress"
182182
183183
# Get status, returns 0 if rollout is successful
184-
oc rollout status dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }}
184+
oc rollout status deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }}

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
name: 5 PROD - Deploy Dynamics API
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 }}
88
OPENSHIFT_TOKEN: ${{ secrets.OPENSHIFT_TOKEN }}
9-
# 🖊️ EDIT to set the kube context's namespace after login. Leave blank to use your user's default namespace.
9+
# EDIT to set the kube context's namespace after login. Leave blank to use your user's default namespace.
1010
OPENSHIFT_NAMESPACE: ${{ secrets.OFM_NAMESPACE_NO_ENV }}-prod
1111

1212
# SPLUNK_TOKEN: ${{ secrets.SPLUNK_TOKEN }}
1313

14-
# 🖊️ EDIT to change the image registry settings.
14+
# EDIT to change the image registry settings.
1515
# Registries such as GHCR, Quay.io, and Docker Hub are supported.
1616
IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
1717
IMAGE_REGISTRY_USER: ${{ github.actor }}
@@ -85,19 +85,19 @@ jobs:
8585
core.error(`Secret "${name}" is not set`);
8686
return true;
8787
}
88-
core.info(`✔️ Secret "${name}" is set`);
88+
core.info(`Secret "${name}" is set`);
8989
return false;
9090
});
9191
9292
if (missingSecrets.length > 0) {
93-
core.setFailed(`At least one required secret is not set in the repository. \n` +
93+
core.setFailed(`At least one required secret is not set in the repository. \n` +
9494
"You can add it using:\n" +
9595
"GitHub UI: https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository \n" +
9696
"GitHub CLI: https://cli.github.com/manual/gh_secret_set \n" +
9797
"Also, refer to https://github.com/redhat-actions/oc-login#getting-started-with-the-action-or-see-example");
9898
}
9999
else {
100-
core.info(`All the required secrets are set`);
100+
core.info(`All the required secrets are set`);
101101
}
102102
103103
- name: Check out repository with branch [${{ env.BRANCH }}]
@@ -117,7 +117,7 @@ jobs:
117117
oc login --token=${{ env.OPENSHIFT_TOKEN }} --server=${{ env.OPENSHIFT_SERVER }}
118118
oc project ${{ env.OPENSHIFT_NAMESPACE }}
119119
# Cancel any rollouts in progress
120-
oc rollout cancel dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
120+
oc rollout cancel deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
121121
|| true && echo "No rollout in progress"
122122
123123
# Create the image stream if it doesn't exist
@@ -128,7 +128,7 @@ jobs:
128128
129129
# Process and apply deployment template
130130
oc process \
131-
-f tools/openshift/d365api.dc.yaml \
131+
-f tools/openshift/d365api.deployment.yaml \
132132
-p APP_NAME=${{ env.APP_NAME }} \
133133
-p REPO_NAME=${{ env.REPO_NAME }} \
134134
-p BRANCH=${{ env.BRANCH }} \
@@ -177,8 +177,8 @@ jobs:
177177
${{ secrets.D365_INVOICE_LINES_DISTRIBUTION_ACK }}
178178
179179
# Start rollout (if necessary) and follow it
180-
oc rollout latest dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
180+
oc rollout restart deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
181181
|| true && echo "Rollout in progress"
182182
183183
# Get status, returns 0 if rollout is successful
184-
oc rollout status dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }}
184+
oc rollout status deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }}

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
name: 2 QA - Deploy Dynamics API
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 }}
88
OPENSHIFT_TOKEN: ${{ secrets.OPENSHIFT_TOKEN }}
9-
# 🖊️ EDIT to set the kube context's namespace after login. Leave blank to use your user's default namespace.
9+
# EDIT to set the kube context's namespace after login. Leave blank to use your user's default namespace.
1010
OPENSHIFT_NAMESPACE: ${{ secrets.OFM_NAMESPACE_NO_ENV }}-dev
1111

1212
# SPLUNK_TOKEN: ${{ secrets.SPLUNK_TOKEN }}
1313

14-
# 🖊️ EDIT to change the image registry settings.
14+
# EDIT to change the image registry settings.
1515
# Registries such as GHCR, Quay.io, and Docker Hub are supported.
1616
IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
1717
IMAGE_REGISTRY_USER: ${{ github.actor }}
@@ -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 with branch [${{ env.BRANCH }}]
@@ -116,12 +116,12 @@ jobs:
116116
oc login --token=${{ env.OPENSHIFT_TOKEN }} --server=${{ env.OPENSHIFT_SERVER }}
117117
oc project ${{ env.OPENSHIFT_NAMESPACE }}
118118
# Cancel any rollouts in progress
119-
oc rollout cancel dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }} 2> /dev/null \
119+
oc rollout cancel deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }} 2> /dev/null \
120120
|| true && echo "No rollout in progress"
121121
122122
# Process and apply deployment template
123123
oc process \
124-
-f tools/openshift/d365api.dc.yaml \
124+
-f tools/openshift/d365api.deployment.yaml \
125125
-p APP_NAME=${{ env.APP_NAME }} \
126126
-p REPO_NAME=${{ env.REPO_NAME }} \
127127
-p BRANCH=${{ env.BRANCH }} \
@@ -170,8 +170,8 @@ jobs:
170170
${{ secrets.D365_INVOICE_LINES_DISTRIBUTION_ACK }}
171171
172172
# Start rollout (if necessary) and follow it
173-
oc rollout latest dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
173+
oc rollout restart deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
174174
|| true && echo "Rollout in progress"
175175
176176
# Get status, returns 0 if rollout is successful
177-
oc rollout status dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }}
177+
oc rollout status deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }}

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
name: 3 UAT - Deploy Dynamics API
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 }}
88
OPENSHIFT_TOKEN: ${{ secrets.OPENSHIFT_TOKEN }}
9-
# 🖊️ EDIT to set the kube context's namespace after login. Leave blank to use your user's default namespace.
9+
# EDIT to set the kube context's namespace after login. Leave blank to use your user's default namespace.
1010
OPENSHIFT_NAMESPACE: ${{ secrets.OFM_NAMESPACE_NO_ENV }}-test
1111

1212
# SPLUNK_TOKEN: ${{ secrets.SPLUNK_TOKEN }}
1313

14-
# 🖊️ EDIT to change the image registry settings.
14+
# EDIT to change the image registry settings.
1515
# Registries such as GHCR, Quay.io, and Docker Hub are supported.
1616
IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
1717
IMAGE_REGISTRY_USER: ${{ github.actor }}
@@ -85,19 +85,19 @@ jobs:
8585
core.error(`Secret "${name}" is not set`);
8686
return true;
8787
}
88-
core.info(`✔️ Secret "${name}" is set`);
88+
core.info(`Secret "${name}" is set`);
8989
return false;
9090
});
9191
9292
if (missingSecrets.length > 0) {
93-
core.setFailed(`At least one required secret is not set in the repository. \n` +
93+
core.setFailed(`At least one required secret is not set in the repository. \n` +
9494
"You can add it using:\n" +
9595
"GitHub UI: https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository \n" +
9696
"GitHub CLI: https://cli.github.com/manual/gh_secret_set \n" +
9797
"Also, refer to https://github.com/redhat-actions/oc-login#getting-started-with-the-action-or-see-example");
9898
}
9999
else {
100-
core.info(`All the required secrets are set`);
100+
core.info(`All the required secrets are set`);
101101
}
102102
103103
- name: Check out repository with branch [${{ env.BRANCH }}]
@@ -117,7 +117,7 @@ jobs:
117117
oc login --token=${{ env.OPENSHIFT_TOKEN }} --server=${{ env.OPENSHIFT_SERVER }}
118118
oc project ${{ env.OPENSHIFT_NAMESPACE }}
119119
# Cancel any rollouts in progress
120-
oc rollout cancel dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
120+
oc rollout cancel deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
121121
|| true && echo "No rollout in progress"
122122
123123
# Create the image stream if it doesn't exist
@@ -128,7 +128,7 @@ jobs:
128128
129129
# Process and apply deployment template
130130
oc process \
131-
-f tools/openshift/d365api.dc.yaml \
131+
-f tools/openshift/d365api.deployment.yaml \
132132
-p APP_NAME=${{ env.APP_NAME }} \
133133
-p REPO_NAME=${{ env.REPO_NAME }} \
134134
-p BRANCH=${{ env.BRANCH }} \
@@ -177,8 +177,8 @@ jobs:
177177
${{ secrets.D365_INVOICE_LINES_DISTRIBUTION_ACK }}
178178
179179
# Start rollout (if necessary) and follow it
180-
oc rollout latest dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
180+
oc rollout restart deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }} 2> /dev/null \
181181
|| true && echo "Rollout in progress"
182182
183183
# Get status, returns 0 if rollout is successful
184-
oc rollout status dc/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }}
184+
oc rollout status deployment/${{ env.APP_NAME }}-${{ env.APP_NAME_BACKEND }}-${{ env.APP_ENVIRONMENT }}

0 commit comments

Comments
 (0)