Skip to content

Commit

Permalink
Creating composite action to run terraform
Browse files Browse the repository at this point in the history
  • Loading branch information
dukeofgaming committed Sep 9, 2024
1 parent f915d3e commit 98980ca
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 36 deletions.
59 changes: 59 additions & 0 deletions .github/actions/run-terraform/action.yml
Original file line number Diff line number Diff line change
@@ -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
74 changes: 38 additions & 36 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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/
Expand Down

0 comments on commit 98980ca

Please sign in to comment.