name: Deploy Helm Chart to OpenShift

on:
  workflow_dispatch:
    inputs:
      tag:
        description: Image tag to deploy
        required: false
        type: string
        default: latest
      environment:
        description: Environment to run the deployment in
        type: environment
        required: true
  workflow_call:
    inputs:
      tag:
        description: Image tag to deploy
        required: false
        type: string
        default: main
      environment:
        description: Environment to run the deployment in
        type: string
        required: true
    secrets:
      OPENSHIFT_SERVER:
        required: true
      OPENSHIFT_TOKEN:
        required: true
jobs:
  deploy:
    name: Deploy - ${{ inputs.environment }}
    runs-on: ubuntu-24.04
    timeout-minutes: 15
    permissions:
      contents: read
    environment:
      name: ${{ inputs.environment }}

    steps:
    - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1

    - name: Setup Tools
      uses: ./.github/actions/setup-tools

    - name: Authenticate and set context
      uses: redhat-actions/oc-login@2a1614bc977c054c8786c8e35fc9534bd0ddc156
      with:
        openshift_server_url: ${{ secrets.OPENSHIFT_SERVER }}
        openshift_token: ${{ secrets.OPENSHIFT_TOKEN }}
        namespace: ${{ vars.OPENSHIFT_NAMESPACE }}
        insecure_skip_tls_verify: true

    - name: Deploy apps with Helm chart
      env:
        NAMESPACE: ${{ vars.OPENSHIFT_NAMESPACE }}
        IMAGE_TAG: ${{ inputs.tag }}
        CLUSTER: ${{ contains(secrets.OPENSHIFT_SERVER,'golddr') && 'golddr' || 'gold' }}
      run: |
        make upgrade

        kubectl rollout status deployment/chwf-n8n-main
        kubectl rollout status deployment/chwf-n8n-worker
        kubectl rollout status deployment/chwf-n8n-webhook
        kubectl rollout status deployment/chwf-n8n-runner
      working-directory: ./helm/main
