Skip to content

Reset dev environment #8

Reset dev environment

Reset dev environment #8

name: Reset environment
run-name: "Reset ${{ inputs.environment }} environment"
# FIXME:
# - replace sleep 30 with kubectl wait for job completion
# - add status code checks
# - refactor multiple git hub steps into job list
# instead of having multiple similar steps we may have a matrix job with max-parallel: 1
on:
workflow_dispatch:
inputs:
environment:
description: "Target environment"
required: true
default: "dev"
type: choice
options:
- demo
- dev
- dev-stg
workflow_call:
inputs:
environment:
type: string
jobs:
reset:
environment: ${{ inputs.environment }}
env:
namespace: opencrvs-${{ inputs.environment }}
runs-on:
- self-hosted
- k8s
- ${{ inputs.environment }}
steps:
- name: Get helm release values and Quote specific fields that are commonly numeric
run: |
helm get values opencrvs -n ${namespace} -ojson | \
jq '
if has("image") and (.image | has("tag")) and (.image.tag | type == "number") then
.image.tag = (.image.tag | tostring)
else . end |
if has("version") and (.version | type == "number") then
.version = (.version | tostring)
else . end |
if has("service") and (.service | has("port")) and (.service.port | type == "number") then
.service.port = (.service.port | tostring)
else . end
' > ${namespace}.json
- name: Cleanup environment
run: |
kubectl delete job -n ${namespace} --ignore-not-found=true data-cleanup
helm template -f ${namespace}.json \
--set data_cleanup.enabled=true \
--namespace ${namespace} \
-s templates/data-cleanup-job.yaml \
oci://ghcr.io/opencrvs/opencrvs-services | kubectl apply -n ${namespace} --wait=true -f -
kubectl wait --for=condition=complete job/data-cleanup -n ${namespace} --timeout=600s || true
kubectl logs job/data-cleanup -f --all-containers=true -n ${namespace} || true
- name: Re-run postgres on-update-core
run: |
kubectl delete job -n ${namespace} --ignore-not-found=true postgres-on-update-core;
helm template -f ${namespace}.json \
--namespace ${namespace} \
-s templates/postgres-on-update-core.yaml \
oci://ghcr.io/opencrvs/opencrvs-services | kubectl apply -n ${namespace} --wait=true -f -;
kubectl wait --for=condition=complete job/postgres-on-update-core -n ${namespace} --timeout=600s || true
kubectl logs job/postgres-on-update-core -f --all-containers=true -n ${namespace} || true
- name: Re-run postgres-data-migration
run: |
kubectl delete job -n ${namespace} --ignore-not-found=true postgres-data-migration;
helm template -f ${namespace}.json \
--namespace ${namespace} \
-s templates/postgres-migration-job.yaml \
oci://ghcr.io/opencrvs/opencrvs-services | kubectl apply -n ${namespace} --wait=true -f -;
kubectl wait --for=condition=complete job/postgres-data-migration -n ${namespace} --timeout=600s || true
kubectl logs job/postgres-data-migration -f --all-containers=true -n ${namespace} || true
- name: Re-run postgres on-update-analytics
run: |
kubectl delete job -n ${namespace} --ignore-not-found=true postgres-on-update-analytics;
helm template -f ${namespace}.json \
-s templates/postgres-on-update-analytics.yaml \
--namespace ${namespace} \
oci://ghcr.io/opencrvs/opencrvs-services | kubectl apply -n ${namespace} --wait=true -f -;
kubectl wait --for=condition=complete job/postgres-on-update-analytics -n ${namespace} --timeout=600s || true
kubectl logs job/postgres-on-update-analytics -f --all-containers=true -n ${namespace} || true
- name: Migration
run: |
kubectl delete job -n ${namespace} --ignore-not-found=true data-migration-on-reset
helm template -f ${namespace}.json \
--set data_migration.job_name=data-migration-on-reset \
-s templates/data-migration-job.yaml \
--namespace ${namespace} \
oci://ghcr.io/opencrvs/opencrvs-services | kubectl apply -n ${namespace} --wait=true -f -
kubectl wait --for=condition=complete job/data-migration-on-reset -n ${namespace} --timeout=600s || true
kubectl logs job/data-migration-on-reset -f -n ${namespace} || true
- name: Seeding data
run: |
kubectl delete job -n ${namespace} --ignore-not-found=true data-seed
kubectl delete pod -n ${namespace} -lapp=events;
kubectl wait --for=condition=ready pod -n ${namespace} -lapp=events --timeout=600s;
helm template -f ${namespace}.json \
--set data_seed.enabled=true \
--namespace ${namespace} \
-s templates/data-seed-job.yaml \
oci://ghcr.io/opencrvs/opencrvs-services | kubectl apply -n ${namespace} --wait -f -
sleep 10;
kubectl wait --for=condition=complete job/data-seed -n ${namespace} --timeout=600s || true
kubectl logs job/data-seed -f -n ${namespace} || true
kubectl delete pod -n ${namespace} -lapp=events;