Skip to content

Commit 052c65f

Browse files
committed
Revert: restore folder-collection and api-services workflows from folder-collection branch
1 parent 322354e commit 052c65f

File tree

2 files changed

+393
-32
lines changed

2 files changed

+393
-32
lines changed

.github/workflows/api-services-cicd.yml

Lines changed: 199 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,203 @@ concurrency:
2121
group: api-services-${{ github.workflow }}-${{ github.ref }}
2222
cancel-in-progress: true
2323

24+
permissions:
25+
contents: read
26+
27+
env:
28+
CSPROJ_PATH: api/net/TNO.API.csproj
29+
IMAGE_NAME: api
30+
OPENSHIFT_SERVER: https://api.silver.devops.gov.bc.ca:6443
31+
OPENSHIFT_TOOLS_NAMESPACE: 9b301c-tools
32+
2433
jobs:
25-
pipeline:
26-
uses: ./.github/workflows/_reusable-dotnet-cicd.yml
27-
with:
28-
image_name: api
29-
csproj_path: api/net/TNO.API.csproj
30-
dockerfile: api/net/Dockerfile
31-
component: api-services
32-
deployment_name: api-services
33-
kustomize_dev_path: openshift/kustomize/api-services/overlays/dev
34-
kustomize_test_path: openshift/kustomize/api-services/overlays/test
35-
dev_branch: folder-collection
36-
rollout_timeout: '600s'
37-
continue_on_error_verify: true
38-
health_check_method: port_forward
39-
secrets:
40-
OPENSHIFT_TOKEN: ${{ secrets.OPENSHIFT_TOKEN }}
34+
ci:
35+
name: CI — Validate (.NET 9)
36+
runs-on: ubuntu-latest
37+
steps:
38+
- uses: actions/checkout@v4
39+
40+
- name: Setup .NET 9
41+
uses: actions/setup-dotnet@v5
42+
with:
43+
dotnet-version: 9.x
44+
45+
- name: Restore
46+
run: dotnet restore "${{ env.CSPROJ_PATH }}"
47+
48+
- name: Check vulnerable packages
49+
run: dotnet list "${{ env.CSPROJ_PATH }}" package --vulnerable --include-transitive
50+
51+
- name: Lint
52+
run: dotnet format "${{ env.CSPROJ_PATH }}" --verify-no-changes --verbosity diagnostic
53+
54+
- name: Build
55+
run: dotnet build "${{ env.CSPROJ_PATH }}" --configuration Release --no-restore
56+
57+
cd-dev:
58+
name: CD — Deploy to Dev
59+
runs-on: ubuntu-latest
60+
needs: ci
61+
if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && (github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/folder-collection') && github.repository == 'bcgov/tno'
62+
environment: dev
63+
env:
64+
IMAGE_TAG: dev
65+
OPENSHIFT_NAMESPACE: 9b301c-dev
66+
KUSTOMIZE_PATH: openshift/kustomize/api-services/overlays/dev
67+
steps:
68+
- uses: actions/checkout@v4
69+
70+
- name: Build Docker Image
71+
run: |
72+
docker build \
73+
-f api/net/Dockerfile \
74+
-t ${{ env.IMAGE_NAME }}:${{ github.sha }} \
75+
.
76+
77+
- name: Login to OpenShift Image Registry
78+
run: |
79+
echo "${{ secrets.OPENSHIFT_TOKEN }}" | docker login \
80+
image-registry.apps.silver.devops.gov.bc.ca \
81+
-u serviceaccount \
82+
--password-stdin
83+
84+
- name: Push Image to OpenShift Registry
85+
run: |
86+
docker tag \
87+
${{ env.IMAGE_NAME }}:${{ github.sha }} \
88+
image-registry.apps.silver.devops.gov.bc.ca/${{ env.OPENSHIFT_TOOLS_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
89+
docker push \
90+
image-registry.apps.silver.devops.gov.bc.ca/${{ env.OPENSHIFT_TOOLS_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
91+
docker tag \
92+
${{ env.IMAGE_NAME }}:${{ github.sha }} \
93+
image-registry.apps.silver.devops.gov.bc.ca/${{ env.OPENSHIFT_TOOLS_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
94+
docker push \
95+
image-registry.apps.silver.devops.gov.bc.ca/${{ env.OPENSHIFT_TOOLS_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
96+
97+
- name: Install oc CLI
98+
uses: redhat-actions/openshift-tools-installer@v1
99+
with:
100+
oc: latest
101+
102+
- name: Login to OpenShift
103+
run: |
104+
oc login \
105+
--token=${{ secrets.OPENSHIFT_TOKEN }} \
106+
--server=${{ env.OPENSHIFT_SERVER }}
107+
108+
- name: Deploy via Kustomize
109+
run: oc apply -k ${{ env.KUSTOMIZE_PATH }} -n ${{ env.OPENSHIFT_NAMESPACE }}
110+
111+
- name: Rollout Restart
112+
run: |
113+
oc rollout restart deployment/api-services \
114+
-n ${{ env.OPENSHIFT_NAMESPACE }}
115+
116+
- name: Verify Deployment
117+
continue-on-error: true
118+
run: |
119+
oc rollout status deployment/api-services \
120+
-n ${{ env.OPENSHIFT_NAMESPACE }} \
121+
--timeout=600s
122+
123+
- name: Deployment Report
124+
if: always()
125+
run: |
126+
echo "--- pod status ---"
127+
oc get pods -l component=api-services -n ${{ env.OPENSHIFT_NAMESPACE }}
128+
echo "--- health check ---"
129+
POD=$(oc get pod -l component=api-services \
130+
-n ${{ env.OPENSHIFT_NAMESPACE }} \
131+
--sort-by=.metadata.creationTimestamp \
132+
-o jsonpath='{.items[-1].metadata.name}')
133+
oc port-forward $POD 8080:8080 -n ${{ env.OPENSHIFT_NAMESPACE }} &
134+
sleep 10
135+
curl -sf http://localhost:8080/health || true
136+
kill %1
137+
echo "--- recent logs ---"
138+
sleep 60
139+
oc logs $POD -n ${{ env.OPENSHIFT_NAMESPACE }} --tail=20 || true
140+
141+
cd-test:
142+
name: CD — Deploy to Test
143+
runs-on: ubuntu-latest
144+
needs: ci
145+
if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/master' && github.repository == 'bcgov/tno'
146+
environment: test
147+
env:
148+
IMAGE_TAG: test
149+
OPENSHIFT_NAMESPACE: 9b301c-test
150+
KUSTOMIZE_PATH: openshift/kustomize/api-services/overlays/test
151+
steps:
152+
- uses: actions/checkout@v4
153+
154+
- name: Build Docker Image
155+
run: |
156+
docker build \
157+
-f api/net/Dockerfile \
158+
-t ${{ env.IMAGE_NAME }}:${{ github.sha }} \
159+
.
160+
161+
- name: Login to OpenShift Image Registry
162+
run: |
163+
echo "${{ secrets.OPENSHIFT_TOKEN }}" | docker login \
164+
image-registry.apps.silver.devops.gov.bc.ca \
165+
-u serviceaccount \
166+
--password-stdin
167+
168+
- name: Push Image to OpenShift Registry
169+
run: |
170+
docker tag \
171+
${{ env.IMAGE_NAME }}:${{ github.sha }} \
172+
image-registry.apps.silver.devops.gov.bc.ca/${{ env.OPENSHIFT_TOOLS_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
173+
docker push \
174+
image-registry.apps.silver.devops.gov.bc.ca/${{ env.OPENSHIFT_TOOLS_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
175+
docker tag \
176+
${{ env.IMAGE_NAME }}:${{ github.sha }} \
177+
image-registry.apps.silver.devops.gov.bc.ca/${{ env.OPENSHIFT_TOOLS_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
178+
docker push \
179+
image-registry.apps.silver.devops.gov.bc.ca/${{ env.OPENSHIFT_TOOLS_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
180+
181+
- name: Install oc CLI
182+
uses: redhat-actions/openshift-tools-installer@v1
183+
with:
184+
oc: latest
185+
186+
- name: Login to OpenShift
187+
run: |
188+
oc login \
189+
--token=${{ secrets.OPENSHIFT_TOKEN }} \
190+
--server=${{ env.OPENSHIFT_SERVER }}
191+
192+
- name: Deploy via Kustomize
193+
run: oc apply -k ${{ env.KUSTOMIZE_PATH }} -n ${{ env.OPENSHIFT_NAMESPACE }}
194+
195+
- name: Rollout Restart
196+
run: |
197+
oc rollout restart deployment/api-services \
198+
-n ${{ env.OPENSHIFT_NAMESPACE }}
199+
200+
- name: Verify Deployment
201+
continue-on-error: true
202+
run: |
203+
oc rollout status deployment/api-services \
204+
-n ${{ env.OPENSHIFT_NAMESPACE }} \
205+
--timeout=600s
206+
207+
- name: Deployment Report
208+
if: always()
209+
run: |
210+
echo "--- pod status ---"
211+
oc get pods -l component=api-services -n ${{ env.OPENSHIFT_NAMESPACE }}
212+
echo "--- health check ---"
213+
POD=$(oc get pod -l component=api-services \
214+
-n ${{ env.OPENSHIFT_NAMESPACE }} \
215+
--sort-by=.metadata.creationTimestamp \
216+
-o jsonpath='{.items[-1].metadata.name}')
217+
oc port-forward $POD 8080:8080 -n ${{ env.OPENSHIFT_NAMESPACE }} &
218+
sleep 10
219+
curl -sf http://localhost:8080/health || true
220+
kill %1
221+
echo "--- recent logs ---"
222+
sleep 60
223+
oc logs $POD -n ${{ env.OPENSHIFT_NAMESPACE }} --tail=20 || true

0 commit comments

Comments
 (0)