From 98980ca0525caccf3286fa290277983010d37347 Mon Sep 17 00:00:00 2001 From: David Vega Date: Mon, 9 Sep 2024 16:37:21 -0700 Subject: [PATCH] Creating composite action to run terraform --- .github/actions/run-terraform/action.yml | 59 +++++++++++++++++++ .github/workflows/deploy.yml | 74 ++++++++++++------------ 2 files changed, 97 insertions(+), 36 deletions(-) create mode 100644 .github/actions/run-terraform/action.yml diff --git a/.github/actions/run-terraform/action.yml b/.github/actions/run-terraform/action.yml new file mode 100644 index 0000000..e0e69ca --- /dev/null +++ b/.github/actions/run-terraform/action.yml @@ -0,0 +1,59 @@ +name: 'Run Terraform' +description: 'Runs Terraform commands' + +inputs: + aws_region: + description: 'AWS region' + required: true + aws_access_key_id: + description: 'AWS Access Key ID' + required: true + aws_secret_access_key: + description: 'AWS Secret Access Key' + required: true + terraform_dir: + description: 'Directory containing Terraform configuration files' + required: true + ecr_url: + description: 'ECR URL for the Docker image' + required: true + +runs: + using: "composite" + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ inputs.aws_access_key_id }} + aws-secret-access-key: ${{ inputs.aws_secret_access_key }} + aws-region: ${{ inputs.aws_region }} + + - name: Setup Terraform + uses: hashicorp/setup-terraform@v3 + with: + terraform_version: "1.9.5" + + - name: Terraform Init + run: | + terraform init \ + -backend-config="backend-${{ github.ref_name }}.hcl" + working-directory: ${{ inputs.terraform_dir }} + shell: bash + + - name: Terraform Plan + run: | + terraform plan \ + -var="container_image=${{ inputs.ecr_url }}:$(git rev-parse --short HEAD)" + working-directory: ${{ inputs.terraform_dir }} + shell: bash + + - name: Terraform Apply + run: | + terraform apply \ + -var="container_image=${{ inputs.ecr_url }}:$(git rev-parse --short HEAD)" \ + -auto-approve + working-directory: ${{ inputs.terraform_dir }} + shell: bash \ No newline at end of file diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 24d38b7..4626244 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -9,13 +9,6 @@ on: tags-ignore: - 'deploy/**' - -# env: -# AWS_REGION: ${{ vars.AWS_REGION }} -# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }} -# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} -# ECR_URL: ${{ secrets.ECR_URL }} - jobs: BuildAndPush: runs-on: ubuntu-latest @@ -43,40 +36,49 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Extract branch name - shell: bash - run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV - - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 + - name: Run Terraform Action + uses: ./.github/actions/run-terraform with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ vars.AWS_REGION }} + aws_region: ${{ vars.AWS_REGION }} + aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + terraform_dir: ${{ env.TERRAFORM_DIR }} + ecr_url: ${{ vars.ECR_URL }} - - name: Setup Terraform - uses: hashicorp/setup-terraform@v3 - with: - terraform_version: "1.9.5" + # - name: Extract branch name + # shell: bash + # run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV - - name: Terraform Init - working-directory: ${{ env.TERRAFORM_DIR }} - run: | - terraform init \ - -backend-config="backend-${BRANCH_NAME}.hcl" + # - name: Configure AWS credentials + # uses: aws-actions/configure-aws-credentials@v4 + # with: + # aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + # aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + # aws-region: ${{ vars.AWS_REGION }} + + # - name: Setup Terraform + # uses: hashicorp/setup-terraform@v3 + # with: + # terraform_version: "1.9.5" + + # - name: Terraform Init + # working-directory: ${{ env.TERRAFORM_DIR }} + # run: | + # terraform init \ + # -backend-config="backend-${BRANCH_NAME}.hcl" - - name: Terraform Plan - working-directory: ${{ env.TERRAFORM_DIR }} - run: | - terraform plan \ - -var="container_image=${{ vars.ECR_URL }}:$(git rev-parse --short HEAD)" + # - name: Terraform Plan + # working-directory: ${{ env.TERRAFORM_DIR }} + # run: | + # terraform plan \ + # -var="container_image=${{ vars.ECR_URL }}:$(git rev-parse --short HEAD)" - - name: Terraform Apply - working-directory: ${{ env.TERRAFORM_DIR }} - run: | - terraform apply \ - -var="container_image=${{ vars.ECR_URL }}:$(git rev-parse --short HEAD)" \ - -auto-approve + # - name: Terraform Apply + # working-directory: ${{ env.TERRAFORM_DIR }} + # run: | + # terraform apply \ + # -var="container_image=${{ vars.ECR_URL }}:$(git rev-parse --short HEAD)" \ + # -auto-approve - name: Tag the deployment working-directory: ./iac/