name: OTA Portal Deploy - On Demand on: workflow_dispatch: inputs: environment: description: "Environment" required: true type: choice options: - dev - preprod - cec-prd - cec-euprd env: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} SLACK_CHANNEL: "#cloud-builds" SLACK_FOOTER: "" SLACK_USERNAME: GitHub Actions SLACK_ICON: "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" TAG: ${{ github.sha }} PROJECT: ota-admin-portal REGISTRY: fiskercloud.azurecr.io permissions: id-token: write contents: read jobs: build: runs-on: ubuntu-latest steps: - name: Slack Notification uses: rtCamp/action-slack-notify@v2 - name: Checkout uses: actions/checkout@v4 - name: Azure Login uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID_DEV }} tenant-id: ${{ secrets.AZURE_TENANT_ID_DEV }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID_DEV }} - name: ACR Login run: | az acr login --name ${{ env.REGISTRY }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and push uses: docker/build-push-action@v5 with: context: . build-args: ENVIRONMENT=${{ inputs.environment }} push: true tags: ${{ env.REGISTRY }}/${{ env.PROJECT }}:${{ env.TAG }}-${{ inputs.environment }} cache-from: type=gha cache-to: type=gha,mode=max - name: Notify if failure if: ${{ failure() }} uses: rtCamp/action-slack-notify@v2 env: SLACK_COLOR: ${{ job.status }} SLACK_MESSAGE: "Failed to build ${{ env.PROJECT }} in ${{ inputs.environment }}! :this-is-fine:" deploy: needs: build runs-on: arc-azure-${{ inputs.environment }} steps: - name: Checkout uses: actions/checkout@v4 - name: Notify deploy uses: rtCamp/action-slack-notify@v2 env: MSG_MINIMAL: true SLACK_MESSAGE: "Deploying ${{ env.PROJECT }} to ${{ inputs.environment }}... :partydeploy:" - name: Set env run: | case ${{ inputs.environment }} in dev) KUBECONFIG=${{ secrets.KUBECONFIG_AZURE_DEV }};; preprod) KUBECONFIG=${{ secrets.KUBECONFIG_AZURE_PREPROD }};; cec-prd) KUBECONFIG=${{ secrets.KUBECONFIG_AZURE_CEC_PRD }};; cec-euprd) KUBECONFIG=${{ secrets.KUBECONFIG_AZURE_CEC_EUPRD }};; *) KUBECONFIG=${{ secrets.KUBECONFIG_AZURE_DEV }};; esac echo "KUBECONFIG=${KUBECONFIG}" >> $GITHUB_ENV - name: Deploy to env id: deploy uses: koslib/helm-eks-action@v1.28.0 env: KUBE_CONFIG_DATA: ${{ env.KUBECONFIG }} with: command: | helm upgrade \ --atomic \ --create-namespace \ --namespace default \ --set image.registry=$REGISTRY \ --set image.name=$PROJECT \ --set image.tag=$TAG-${{ inputs.environment }} \ --wait -i -f k8s/values-${{ inputs.environment }}.yaml $PROJECT k8s/ - name: Deploy Response run: echo "Response was ${{ steps.deploy.outputs.response }}" - name: Notify deploy failure if: ${{ failure() }} uses: rtCamp/action-slack-notify@v2 env: SLACK_COLOR: ${{ job.status }} SLACK_MESSAGE: "Failed to deploy ${{ env.PROJECT }} to ${{ inputs.environment }}! :this-is-fine:" - name: Notify deploy success uses: rtCamp/action-slack-notify@v2 env: MSG_MINIMAL: true SLACK_MESSAGE: "Successfully deployed ${{ env.PROJECT }} to ${{ inputs.environment }}! :gopher_party:"