Skip to content

Deploy Dependencies on production #71

Deploy Dependencies on production

Deploy Dependencies on production #71

name: Deploy Dependencies
run-name: Deploy Dependencies on ${{ inputs.environment }}
on:
workflow_dispatch:
inputs:
environment:
description: "Target environment"
required: true
default: "dev"
type: choice
options:
- demo1
- production
- staging
jobs:
approve:
environment: ${{ inputs.environment }}
runs-on: ubuntu-24.04
timeout-minutes: 60
steps:
- name: Waiting for manual approval
if: ${{ (vars.APPROVAL_REQUIRED || 'false') == 'true' }}
uses: trstringer/manual-approval@v1
with:
secret: ${{ github.TOKEN }}
approvers: ${{ vars.GH_APPROVERS }}
minimum-approvals: 1
issue-title: "Deploy dependencies (${{ inputs.environment }})"
issue-body: >
Please approve or deny the OpenCRVS dependencies deployment to ${{ inputs.environment }}
initiated from GitHub Actions by @${{ github.actor }}.
exclude-workflow-initiator-as-approver: false
github-to-k8s-sync-env:
needs: approve
uses: ./.github/workflows/github-to-k8s-sync-env.yml
with:
environment: ${{ inputs.environment }}
mapping_file: "deps"
secrets: inherit
deploy:
needs: 'github-to-k8s-sync-env'
environment: ${{ inputs.environment }}
runs-on:
- self-hosted
- k8s
- ${{ inputs.environment }}
env:
ENV: ${{ inputs.environment }}
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Install Traefik
run: |
kubectl scale deployment traefik --replicas=0 --namespace traefik || true
helm upgrade --install traefik oci://ghcr.io/traefik/helm/traefik \
--namespace traefik \
--create-namespace \
-f environments/${ENV}/traefik/values.yaml
kubectl scale deployment traefik --replicas=1 --namespace traefik
- name: Install OpenCRVS dependencies
run: |
helm upgrade --install opencrvs-deps oci://ghcr.io/opencrvs/opencrvs-dependencies-chart \
--namespace "opencrvs-deps-${ENV}" \
-f environments/${ENV}/dependencies/values.yaml \
--create-namespace \
--timeout 15m \
--set hostname=${{ vars.DOMAIN }} \
--atomic