Skip to content

Commit 46d068e

Browse files
committed
fix: Run data-seed as separate step from reset
1 parent c5b5daf commit 46d068e

File tree

2 files changed

+61
-33
lines changed

2 files changed

+61
-33
lines changed

.github/workflows/k8s-reset-data.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: Reset environment
2-
run-name: "Reset ${{ inputs.environment }} environment"
2+
run-name: "Reset ${{ inputs.environment }} by ${{ github.actor }}"
33
on:
44
workflow_dispatch:
55
inputs:
@@ -86,8 +86,6 @@ jobs:
8686
- postgres-data-migration
8787
- postgres-on-update-analytics
8888
- data-migration
89-
- data-seed
90-
- elasticsearch-reindex
9189
steps:
9290
- name: Download helm release values file into /tmp/opencrvs-${{ inputs.environment }}.json
9391
uses: actions/download-artifact@v5
Lines changed: 60 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
name: Seed data
2-
run-name: "Seed data to ${{ inputs.environment }} environment"
1+
name: Seed environment
2+
run-name: "Seed ${{ inputs.environment }} by ${{ github.actor }}"
33
on:
44
workflow_dispatch:
55
inputs:
@@ -32,9 +32,10 @@ jobs:
3232
Please approve or deny ${{ inputs.environment }} environment seeding
3333
initiated from GitHub Actions by @${{ github.actor }}.
3434
exclude-workflow-initiator-as-approver: false
35-
36-
seed:
35+
prepare:
3736
needs: approve
37+
outputs:
38+
values-file: ${{ steps.get-values.outputs.values-file }}
3839
env:
3940
namespace: opencrvs-${{ inputs.environment }}
4041
runs-on:
@@ -43,41 +44,70 @@ jobs:
4344
- ${{ inputs.environment }}
4445
steps:
4546
- name: Get helm release values and Quote specific fields that are commonly numeric
47+
id: get-values
4648
run: |
4749
helm get values opencrvs -n ${namespace} -ojson | \
4850
jq '
49-
# Quote image tags
5051
if has("image") and (.image | has("tag")) and (.image.tag | type == "number") then
5152
.image.tag = (.image.tag | tostring)
5253
else . end |
53-
# Quote version numbers
5454
if has("version") and (.version | type == "number") then
5555
.version = (.version | tostring)
5656
else . end |
57-
# Quote port numbers if needed (optional)
5857
if has("service") and (.service | has("port")) and (.service.port | type == "number") then
5958
.service.port = (.service.port | tostring)
6059
else . end
61-
' > ${namespace}.json
62-
- name: Seeding data
63-
run: |
64-
kubectl delete job -n ${namespace} --ignore-not-found=true data-seed
65-
helm template -f ${namespace}.json \
66-
--set data_seed.enabled=true \
67-
--namespace ${namespace} \
68-
-s templates/data-seed-job.yaml \
69-
oci://ghcr.io/opencrvs/opencrvs-services | kubectl apply --wait -n ${namespace} -f -
70-
- name: Checking data-seed job status
71-
run: |
72-
while true; do
73-
kubectl wait --for=condition=ready pod -ljob-name=data-seed --timeout=300s -n ${namespace} && \
74-
kubectl logs job/data-seed --all-containers -f -n ${namespace} && \
75-
touch /tmp/logs_stramed-${namespace}-data-seed.txt || break;
76-
sleep 10; done &
77-
echo "---------------------- Waiting for job completion ----------------------"
78-
kubectl wait --for=condition=complete job/data-seed -n ${namespace} --timeout=600s; status=$? || true
79-
[ $status -ne 0 ] && kubectl get pods -n ${namespace} --show-labels && kubectl describe pod -ljob-name=${job_name} -n ${namespace};
80-
[ ! -f /tmp/logs_stramed-${namespace}-data-seed.txt ] && kubectl logs job/data-seed --all-containers -n ${namespace} || \
81-
rm -vf /tmp/logs_stramed-${namespace}-data-seed.txt
82-
kill %1 2>/dev/null && echo "Stopped log streaming" || true
83-
exit $status
60+
' > /tmp/${namespace}.json
61+
echo "values-file=/tmp/${namespace}.json" >> $GITHUB_OUTPUT
62+
63+
- name: Upload helm release values file /tmp/opencrvs-${{ inputs.environment }}.json
64+
uses: actions/upload-artifact@v4
65+
with:
66+
name: opencrvs-${{ inputs.environment }}-values-file
67+
path: /tmp/opencrvs-${{ inputs.environment }}.json
68+
retention-days: 1
69+
seed:
70+
name: ${{ matrix.job-name }}
71+
needs: prepare
72+
env:
73+
namespace: opencrvs-${{ inputs.environment }}
74+
runs-on:
75+
- self-hosted
76+
- k8s
77+
- ${{ inputs.environment }}
78+
strategy:
79+
max-parallel: 1 # Ensure jobs run one by one
80+
fail-fast: true # Stop on first failure
81+
matrix:
82+
job-name:
83+
- data-seed
84+
- elasticsearch-reindex
85+
steps:
86+
- name: Download helm release values file into /tmp/opencrvs-${{ inputs.environment }}.json
87+
uses: actions/download-artifact@v5
88+
with:
89+
name: opencrvs-${{ inputs.environment }}-values-file
90+
path: /tmp
91+
- name: Create job ${{ matrix.job-name }} from helm template and apply it
92+
run: |
93+
kubectl delete job -n ${namespace} --ignore-not-found=true ${{ matrix.job-name }}
94+
helm template -f ${{ needs.prepare.outputs.values-file }} \
95+
--set data_cleanup.enabled=true \
96+
--set data_seed.enabled=true \
97+
--namespace ${namespace} \
98+
-s templates/${{ matrix.job-name }}-job.yaml \
99+
oci://ghcr.io/opencrvs/opencrvs-services | kubectl apply -n ${namespace} --wait=true -f -
100+
- name: Checking ${{ matrix.job-name }} job status
101+
run: |
102+
while true; do
103+
kubectl wait --for=condition=ready pod -ljob-name=${{ matrix.job-name }} --timeout=300s -n ${namespace} && \
104+
kubectl logs job/${{ matrix.job-name }} --all-containers -f -n ${namespace} && \
105+
touch /tmp/logs_stramed-${namespace}-${{ matrix.job-name }}.txt || break;
106+
sleep 1; done &
107+
echo "---------------------- Waiting for job completion ----------------------"
108+
kubectl wait --for=condition=complete job/${{ matrix.job-name }} -n ${namespace} --timeout=600s; status=$? || true
109+
[ $status -ne 0 ] && kubectl get pods -n ${namespace} --show-labels && kubectl describe pod -ljob-name=${job_name} -n ${namespace};
110+
[ ! -f /tmp/logs_stramed-${namespace}-${{ matrix.job-name }}.txt ] && kubectl logs job/${{ matrix.job-name }} --all-containers -n ${namespace} || \
111+
rm -vf /tmp/logs_stramed-${namespace}-${{ matrix.job-name }}.txt
112+
kill %1 2>/dev/null && echo "Stopped log streaming" || true
113+
exit $status

0 commit comments

Comments
 (0)