Skip to content

update chalkheads content #26

update chalkheads content

update chalkheads content #26

name: Build and Deploy
on:
push:
branches:
- main
workflow_dispatch:
concurrency:
group: build-and-deploy
cancel-in-progress: true
env:
DOCKER_REPO: "${{ vars.DOCKER_REGISTRY }}/braden-lol"
IMAGE_NAME: "website"
TERRAFORM_DIR: "terraform"
jobs:
build-and-deploy:
name: Build and Deploy
runs-on: ubuntu-latest
env:
IMAGE_EXISTS: "false"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Registry
uses: docker/login-action@v3
with:
registry: ${{ vars.DOCKER_REGISTRY }}
username: ${{ secrets.DOCKER_REGISTRY_USERNAME }}
password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }}
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- id: version
name: Get version
uses: martinbeentjes/[email protected]
- name: Check if image exists
run: |
if docker manifest inspect ${{ env.DOCKER_REPO }}/${{ env.IMAGE_NAME }}:v${{ steps.version.outputs.current-version }} 2>/dev/null; then
echo "IMAGE_EXISTS=true" >> $GITHUB_ENV
fi
- name: Build and push image
uses: docker/build-push-action@v6
if: ${{ env.IMAGE_EXISTS == 'false' }}
with:
context: .
file: Dockerfile
push: true
tags: |
${{ env.DOCKER_REPO }}/${{ env.IMAGE_NAME }}:v${{ steps.version.outputs.current-version }}
${{ env.DOCKER_REPO }}/${{ env.IMAGE_NAME }}:latest
- name: Terraform init
working-directory: ${{ env.TERRAFORM_DIR }}
env:
AWS_ACCESS_KEY_ID: ${{ secrets.TF_STATE_R2_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.TF_STATE_R2_SECRET_KEY }}
AWS_ENDPOINT_URL_S3: ${{ vars.TF_STATE_R2_ENDPOINT_URL }}
run: terraform init
- name: Terraform apply
working-directory: ${{ env.TERRAFORM_DIR }}
env:
NOMAD_ADDR: ${{ vars.NOMAD_ADDR }}
NOMAD_TOKEN: ${{ secrets.NOMAD_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.TF_STATE_R2_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.TF_STATE_R2_SECRET_KEY }}
AWS_ENDPOINT_URL_S3: ${{ vars.TF_STATE_R2_ENDPOINT_URL }}
TF_VAR_website_image_tag: ${{ env.DOCKER_REPO }}/${{ env.IMAGE_NAME }}:v${{ steps.version.outputs.current-version }}
run: terraform apply -auto-approve -input=false