name: OTA Portal Deploy on: push: branches: - main branches-ignore: - v2/trunk 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 jobs: build-dev: runs-on: ubuntu-latest steps: - name: Slack Notification uses: rtCamp/action-slack-notify@v2 - name: Checkout uses: actions/checkout@v3 - name: Azure Login uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Login to ACR uses: docker/login-action@v2 with: registry: ${{ env.REGISTRY }} username: ${{ secrets.AZURE_CLIENT_ID }} password: ${{ secrets.AZURE_CLIENT_SECRET }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Build and push DEV uses: docker/build-push-action@v4 with: context: . build-args: ENVIRONMENT=dev push: true tags: ${{ env.REGISTRY }}/${{ env.PROJECT }}:${{ env.TAG }}-dev 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 }} dev! :this-is-fine:" deploy-dev: needs: [build-dev] runs-on: [self-hosted, azure] environment: dev steps: - name: Checkout uses: actions/checkout@v3 - uses: rtCamp/action-slack-notify@v2 env: MSG_MINIMAL: true SLACK_MESSAGE: "Deploying ${{ env.PROJECT }} to dev... :partydeploy:" - name: Deploy to dev run: |- helm upgrade \ --kube-context dev \ --set image.registry=$REGISTRY \ --set image.name=$PROJECT \ --set image.tag=$TAG-dev \ --wait -i -f k8s/values-dev.yaml $PROJECT k8s/ - name: Notify deploy failure if: ${{ failure() }} uses: rtCamp/action-slack-notify@v2 env: SLACK_COLOR: ${{ job.status }} SLACK_MESSAGE: "Failed to deploy ${{ env.PROJECT }} on dev! :this-is-fine:" - name: Notify deploy success uses: rtCamp/action-slack-notify@v2 env: MSG_MINIMAL: true SLACK_MESSAGE: "Successfully deployed ${{ env.PROJECT }} to dev! :gopher_party:" build-stg: runs-on: ubuntu-latest needs: [deploy-dev] steps: - name: Slack Notification uses: rtCamp/action-slack-notify@v2 - name: Checkout uses: actions/checkout@v3 - name: Azure Login uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Login to ACR uses: docker/login-action@v2 with: registry: ${{ env.REGISTRY }} username: ${{ secrets.AZURE_CLIENT_ID }} password: ${{ secrets.AZURE_CLIENT_SECRET }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Build and push STG uses: docker/build-push-action@v4 with: context: . build-args: ENVIRONMENT=stg push: true tags: ${{ env.REGISTRY }}/${{ env.PROJECT }}:${{ env.TAG }}-stg 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 }} stg! :this-is-fine:" deploy-stg: needs: [deploy-dev, build-stg] runs-on: [self-hosted, azure] environment: stg steps: - name: Checkout uses: actions/checkout@v3 - uses: rtCamp/action-slack-notify@v2 env: MSG_MINIMAL: true SLACK_MESSAGE: "Deploying ${{ env.PROJECT }} to stg... :partydeploy:" - name: Deploy to stg run: |- helm upgrade \ --kube-context stg \ --set image.registry=$REGISTRY \ --set image.name=$PROJECT \ --set image.tag=$TAG-stg \ --wait -i -f k8s/values-stg.yaml $PROJECT k8s/ - name: Notify deploy failure if: ${{ failure() }} uses: rtCamp/action-slack-notify@v2 env: SLACK_COLOR: ${{ job.status }} SLACK_MESSAGE: "Failed to deploy ${{ env.PROJECT }} on stg! :this-is-fine:" - name: Notify deploy success uses: rtCamp/action-slack-notify@v2 env: MSG_MINIMAL: true SLACK_MESSAGE: "Successfully deployed ${{ env.PROJECT }} to stg! :gopher_party:" build-preprod: runs-on: ubuntu-latest needs: [deploy-dev] steps: - name: Slack Notification uses: rtCamp/action-slack-notify@v2 - name: Checkout uses: actions/checkout@v3 - name: Azure Login uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Login to ACR uses: docker/login-action@v2 with: registry: ${{ env.REGISTRY }} username: ${{ secrets.AZURE_CLIENT_ID }} password: ${{ secrets.AZURE_CLIENT_SECRET }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Build and push PREPROD uses: docker/build-push-action@v4 with: context: . build-args: ENVIRONMENT=prd push: true tags: ${{ env.REGISTRY }}/${{ env.PROJECT }}:${{ env.TAG }}-prd 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 }} preprod! :this-is-fine:" deploy-preprod: needs: [deploy-dev, build-preprod] runs-on: [self-hosted, azure] environment: stg steps: - name: Checkout uses: actions/checkout@v3 - uses: rtCamp/action-slack-notify@v2 env: MSG_MINIMAL: true SLACK_MESSAGE: "Deploying ${{ env.PROJECT }} to preprod... :partydeploy:" - name: Deploy to preprod run: |- helm upgrade \ --kube-context prd \ --set image.registry=$REGISTRY \ --set image.name=$PROJECT \ --set image.tag=$TAG-prd \ --wait -i -f k8s/values-prd.yaml $PROJECT k8s/ - name: Notify deploy failure if: ${{ failure() }} uses: rtCamp/action-slack-notify@v2 env: SLACK_COLOR: ${{ job.status }} SLACK_MESSAGE: "Failed to deploy ${{ env.PROJECT }} on preprod! :this-is-fine:" - name: Notify deploy success uses: rtCamp/action-slack-notify@v2 env: MSG_MINIMAL: true SLACK_MESSAGE: "Successfully deployed ${{ env.PROJECT }} to preprod! :gopher_party:" build-cec-prd: runs-on: ubuntu-latest needs: [deploy-dev, deploy-stg, deploy-preprod] steps: - name: Slack Notification uses: rtCamp/action-slack-notify@v2 - name: Checkout uses: actions/checkout@v3 - name: Azure Login uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Login to ACR uses: docker/login-action@v2 with: registry: ${{ env.REGISTRY }} username: ${{ secrets.AZURE_CLIENT_ID }} password: ${{ secrets.AZURE_CLIENT_SECRET }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Build and push CEC-PRD uses: docker/build-push-action@v4 with: context: . build-args: ENVIRONMENT=cec-prd push: true tags: ${{ env.REGISTRY }}/${{ env.PROJECT }}:${{ env.TAG }}-cec-prd 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 }} cec-prd! :this-is-fine:" deploy-cec-prd: needs: [deploy-dev, deploy-stg, deploy-preprod, build-cec-prd] runs-on: [self-hosted, azure] environment: prd steps: - name: Checkout uses: actions/checkout@v3 - uses: rtCamp/action-slack-notify@v2 env: MSG_MINIMAL: true SLACK_MESSAGE: "Deploying ${{ env.PROJECT }} to cec-prd... :partydeploy:" - name: Deploy to cec-prd run: |- helm upgrade \ --kube-context cec-prd-cluster-1 \ --set image.registry=$REGISTRY \ --set image.name=$PROJECT \ --set image.tag=$TAG-cec-prd \ --wait -i -f k8s/values-cec-prd.yaml $PROJECT k8s/ - name: Notify deploy failure if: ${{ failure() }} uses: rtCamp/action-slack-notify@v2 env: SLACK_COLOR: ${{ job.status }} SLACK_MESSAGE: "Failed to deploy ${{ env.PROJECT }} on cec-prd! :this-is-fine:" - name: Notify deploy success uses: rtCamp/action-slack-notify@v2 env: MSG_MINIMAL: true SLACK_MESSAGE: "Successfully deployed ${{ env.PROJECT }} to cec-prd! :gopher_party:" build-cec-euprd: runs-on: ubuntu-latest needs: [deploy-dev, deploy-stg, deploy-preprod] steps: - name: Slack Notification uses: rtCamp/action-slack-notify@v2 - name: Checkout uses: actions/checkout@v3 - name: Azure Login uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Login to ACR uses: docker/login-action@v2 with: registry: ${{ env.REGISTRY }} username: ${{ secrets.AZURE_CLIENT_ID }} password: ${{ secrets.AZURE_CLIENT_SECRET }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Build and push CEC-EUPRD uses: docker/build-push-action@v4 with: context: . build-args: ENVIRONMENT=cec-euprd push: true tags: ${{ env.REGISTRY }}/${{ env.PROJECT }}:${{ env.TAG }}-cec-euprd 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 }} cec-euprd! :this-is-fine:" deploy-cec-euprd: needs: [deploy-dev, deploy-stg, deploy-preprod, build-cec-euprd] runs-on: [self-hosted, azure] environment: prd steps: - name: Checkout uses: actions/checkout@v3 - uses: rtCamp/action-slack-notify@v2 env: MSG_MINIMAL: true SLACK_MESSAGE: "Deploying ${{ env.PROJECT }} to cec-euprd... :partydeploy:" - name: Deploy to cec-euprd run: |- helm upgrade \ --kube-context cec-euprd-cluster-1 \ --set image.registry=$REGISTRY \ --set image.name=$PROJECT \ --set image.tag=$TAG-cec-euprd \ --wait -i -f k8s/values-cec-euprd.yaml $PROJECT k8s/ - name: Notify deploy failure if: ${{ failure() }} uses: rtCamp/action-slack-notify@v2 env: SLACK_COLOR: ${{ job.status }} SLACK_MESSAGE: "Failed to deploy ${{ env.PROJECT }} on cec-euprd! :this-is-fine:" - name: Notify deploy success uses: rtCamp/action-slack-notify@v2 env: MSG_MINIMAL: true SLACK_MESSAGE: "Successfully deployed ${{ env.PROJECT }} to cec-euprd! :gopher_party:"