Skip to content

build

build #36

Workflow file for this run

name: build
on:
workflow_dispatch:
push:
branches:
- main
schedule:
# Run at 6PM UTC every Monday which is 2 hours after the truemark/aws-cli build
- cron: '0 18 * * 1'
pull_request:
types:
- opened
- synchronize
- reopened
branches:
- main
# https://github.com/gautamkrishnar/keepalive-workflow/discussions/13
permissions:
id-token: write
contents: write
jobs:
prepare:
runs-on: ubuntu-latest
outputs:
PREFIX: ${{ steps.set-prefix-release.outputs.PREFIX }}${{ steps.set-prefix-beta.outputs.PREFIX }}
ROOT_PREFIX: ${{ steps.set-prefix-release.outputs.ROOT_PREFIX }}${{ steps.set-prefix-beta.outputs.ROOT_PREFIX }}
TERRAFORM_VERSION: ${{ steps.set-terraform-version.outputs.TERRAFORM_VERSION }}
TERRAFORM_MINOR_VERSION: ${{ steps.set-terraform-version.outputs.TERRAFORM_MINOR_VERSION }}
steps:
- id: set-prefix-release
if: github.ref == 'refs/heads/main'
run: |
PREFIX=""
echo "PREFIX=$PREFIX" >> $GITHUB_OUTPUT
ROOT_PREFIX="latest"
echo "ROOT_PREFIX=$ROOT_PREFIX" >> $GITHUB_OUTPUT
- id: set-prefix-beta
if: github.ref != 'refs/heads/main'
run: |
PREFIX="beta-"
echo "PREFIX=$PREFIX" >> $GITHUB_OUTPUT
ROOT_PREFIX="beta"
echo "ROOT_PREFIX=$ROOT_PREFIX" >> $GITHUB_OUTPUT
- id: set-terraform-version
run: |
export TERRAFORM_VERSION=$(curl -sSLf https://checkpoint-api.hashicorp.com/v1/check/terraform | jq -r .current_version)
export TERRAFORM_MINOR_VERSION=$(echo "${TERRAFORM_VERSION}" | cut -d '.' -f 1,2)
echo "TERRAFORM_VERSION=${TERRAFORM_VERSION}" >> $GITHUB_OUTPUT
echo "TERRAFORM_MINOR_VERSION=${TERRAFORM_MINOR_VERSION}" >> $GITHUB_OUTPUT
echo "Terraform Version: ${TERRAFORM_VERSION}"
echo "Terraform Minor Version: ${TERRAFORM_MINOR_VERSION}"
build:
needs: [prepare]
uses: truemark/github-workflows/.github/workflows/docker-buildx.yml@main
with:
dockerfile: "Dockerfile"
images: "truemark/terraform-aws:${{ needs.prepare.outputs.PREFIX }}${{ needs.prepare.outputs.TERRAFORM_MINOR_VERSION }},truemark/terraform-aws:${{ needs.prepare.outputs.ROOT_PREFIX }}"
copy_to_ecr_prefix: "public.ecr.aws/truemark"
target: base
security_group_id: ${{ vars.SECURITY_GROUP_ID }}
subnet_id: ${{ vars.SUBNET_ID }}
instance_profile: ${{ vars.INSTANCE_PROFILE }}
docker_build_args: '["TERRAFORM_VERSION=${{ needs.prepare.outputs.TERRAFORM_VERSION }}"]'
region: ${{ vars.AWS_REGION }}
secrets:
aws_assume_role: ${{ secrets.AWS_ASSUME_ROLE }}
docker_hub_username: ${{ secrets.DOCKER_HUB_USERNAME }}
docker_hub_password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
build-pipe:
needs: [ build, prepare ]
uses: truemark/github-workflows/.github/workflows/docker-buildx.yml@main
with:
dockerfile: "pipe.Dockerfile"
images: "truemark/terraform-aws-pipe:${{ needs.prepare.outputs.PREFIX }}${{ needs.prepare.outputs.TERRAFORM_MINOR_VERSION }},truemark/terraform-aws-pipe:${{ needs.prepare.outputs.ROOT_PREFIX }}"
copy_to_ecr_prefix: "public.ecr.aws/truemark"
target: base
security_group_id: ${{ vars.SECURITY_GROUP_ID }}
subnet_id: ${{ vars.SUBNET_ID }}
instance_profile: ${{ vars.INSTANCE_PROFILE }}
docker_build_args: '["SOURCE_IMAGE=truemark/terraform-aws:${{ needs.prepare.outputs.ROOT_PREFIX }}"]'
region: ${{ vars.AWS_REGION }}
secrets:
aws_assume_role: ${{ secrets.AWS_ASSUME_ROLE }}
docker_hub_username: ${{ secrets.DOCKER_HUB_USERNAME }}
docker_hub_password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}