Skip to content

feature: altera variável da configuração da aplicação #59

feature: altera variável da configuração da aplicação

feature: altera variável da configuração da aplicação #59

Workflow file for this run

# Ref: https://www.docker.com/blog/docker-v2-github-action-is-now-ga/
name: CI/CD
on:
push:
branches:
- main
pull_request:
branches:
- main
types:
- closed
workflow_dispatch:
inputs:
app_image_version:
description: 'Version of the application image'
required: false
default: 'latest'
jobs:
check-aws-online:
if: github.event.pull_request.merged == true || github.event_name == 'push' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
steps:
- 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-session-token: ${{ secrets.AWS_SESSION_TOKEN }}
aws-region: ${{ secrets.AWS_REGION }}
build-docker-image:
runs-on: ubuntu-latest
needs: check-aws-online
env:
BUILD_VERSION: ${{ github.event.inputs.app_image_version || github.sha }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Load environment variables
uses: thaind0/envfile@v1
with:
secrets: ${{ toJSON(secrets) }}
- name: Setup Docker
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
platforms: linux/amd64
push: true
cache-from: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.FOOD_PRODUTO_IMAGE_VERSION }}:cache
cache-to: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.FOOD_PRODUTO_IMAGE_VERSION }}:cache,mode=max
tags: |
${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.FOOD_PRODUTO_IMAGE_VERSION }}:${{ env.BUILD_VERSION }}
apply-new-version:
runs-on: ubuntu-latest
needs: build-docker-image
env:
FOOD_PRODUTO_IMAGE_VERSION: ${{ github.event.inputs.app_image_version || github.sha }}
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Load environment variables
uses: thaind0/envfile@v1
with:
secrets: ${{ toJSON(secrets) }}
override: false # prevent overriding FOOD_PRODUTO_IMAGE_VERSION -> don't create the env variables
file: terraform/.env
- 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-session-token: ${{ secrets.AWS_SESSION_TOKEN }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Get K8s host
run: |
K8S_HOST=$(aws eks describe-cluster --name ${{ secrets.CLUSTER_NAME }} --query "cluster.endpoint" --output text)
echo "K8S_HOST=$K8S_HOST" >> $GITHUB_ENV
- name: Overwrite .env variable
run: |
echo "FOOD_PRODUTO_IMAGE_VERSION=${{ env.FOOD_PRODUTO_IMAGE_VERSION }}" >> .env
echo "K8S_HOST=${{ env.K8S_HOST }}" >> .env
working-directory: terraform
- name: Setup Terraform
uses: hashicorp/setup-terraform@v1
- name: Terraform Init
run: terraform init -reconfigure -backend-config="bucket=${{ secrets.AWS_BUCKET_NAME }}" -backend-config="key=terraform-food-produto.tfstate" -backend-config="region=${{ secrets.AWS_REGION }}"
working-directory: terraform
- name: Terraform Validate
run: terraform validate
working-directory: terraform
- name: Terraform Plan
run: bash terraform.sh plan
working-directory: terraform
- name: Terraform Apply
run: bash terraform.sh apply -auto-approve
working-directory: terraform