Skip to content

Deploy Backstage

Deploy Backstage #47

---
name: "Deploy Backstage"
on: # yamllint disable-line rule:truthy
workflow_run:
workflows: ["Docker Push"]
types:
- completed
paths:
- 'terraform/*'
- '.github/workflows/deploy-backstage.yaml'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
deploy_poc:
name: Deploy - POC
runs-on: ubuntu-latest
environment:
name: poc
outputs:
plan_id: ${{ steps.workflow_vars.outputs.plan_id }}
permissions:
id-token: write
contents: read
pull-requests: write
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Checkout
uses: actions/checkout@v3
# install aws cli
- name: Install AWS CLI
shell: bash
run: ./scripts/dependencies/install-aws-cli.sh
continue-on-error: false
# install tfenv
- name: Install tfenv
shell: bash
run: ./scripts/dependencies/install-tfenv.sh
continue-on-error: false
# Setup plan id for plan exports
- name: Set outputs
id: workflow_vars
run: |
echo "plan_id=$(git rev-parse --short "$GITHUB_SHA")" >> $GITHUB_OUTPUT
echo "git_tag=${{ github.ref_name }}" >> $GITHUB_OUTPUT
# configure iam
- name: Configure IAM Role
uses: aws-actions/configure-aws-credentials@v2
with:
role-to-assume: ${{ secrets.POC_BACKSTAGE_DEPLOY_ARN }}
aws-region: us-east-1
continue-on-error: false
# initialize backend
- name: Initialize backend
shell: bash
run: |
./scripts/action-init-plan-apply.sh -i poc
continue-on-error: false
# Running plan
- name: Plan against POC
id: poc_plan
shell: bash
run: |
./scripts/action-init-plan-apply.sh -p poc
continue-on-error: false
#publish plan to artifacts
- name: Publish Terraform Plan
uses: actions/upload-artifact@v3
with:
name: "poc-${{ steps.workflow_vars.outputs.plan_id }}.tfplan"
path: "terraform/poc-${{ steps.workflow_vars.outputs.plan_id }}.tfplan"
continue-on-error: false
# Running apply
- name: Deploy against POC
id: poc_apply
shell: bash
run: |
./scripts/action-init-plan-apply.sh -a poc
continue-on-error: false
deploy_prod:
name: Deploy - Prod
runs-on: ubuntu-latest
needs:
- deploy_poc
environment:
name: prod
outputs:
plan_id: ${{ steps.workflow_vars.outputs.plan_id }}
permissions:
id-token: write
contents: read
pull-requests: write
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Checkout
uses: actions/checkout@v3
# install aws cli
- name: Install AWS CLI
shell: bash
run: ./scripts/dependencies/install-aws-cli.sh
continue-on-error: false
# install tfenv
- name: Install tfenv
shell: bash
run: ./scripts/dependencies/install-tfenv.sh
continue-on-error: false
# Setup plan id for plan exports
- name: Set outputs
id: workflow_vars
run: |
echo "plan_id=$(git rev-parse --short "$GITHUB_SHA")" >> $GITHUB_OUTPUT
echo "git_tag=${{ github.ref_name }}" >> $GITHUB_OUTPUT
# configure iam
- name: Configure IAM Role
uses: aws-actions/configure-aws-credentials@v2
with:
role-to-assume: ${{ secrets.PROD_BACKSTAGE_DEPLOY_ARN }}
aws-region: us-east-1
continue-on-error: false
# initialize backend
- name: Initialize backend
shell: bash
run: |
./scripts/action-init-plan-apply.sh -i prod
continue-on-error: false
# Running plan
- name: Plan against Prod
id: prod_plan
shell: bash
run: |
./scripts/action-init-plan-apply.sh -p prod
continue-on-error: false
#publish plan to artifacts
- name: Publish Terraform Plan
uses: actions/upload-artifact@v3
with:
name: "prod-${{ steps.workflow_vars.outputs.plan_id }}.tfplan"
path: "terraform/prod-${{ steps.workflow_vars.outputs.plan_id }}.tfplan"
continue-on-error: false
# Running apply
- name: Deploy against Prod
id: prod_apply
shell: bash
run: |
./scripts/action-init-plan-apply.sh -a prod
continue-on-error: false