Managed by Terraform

This commit is contained in:
devops-flipsidecrypto 2022-07-04 20:07:09 -05:00
parent a9a3b7e3ae
commit 4d93444eaa

View File

@ -0,0 +1,86 @@
name: 'docker-build-and-push'
description: 'Docker build and push'
inputs:
base-dir:
description: 'Base directory'
required: false
default: './services'
service-name:
description: 'Service name'
required: true
repository-name:
description: 'Override the repository name'
required: false
default: ''
outputs:
registry:
description: "Registry"
value: ${{ steps.login-ecr.outputs.registry }}
service-name:
description: "Service name"
value: ${{ steps.docker-build-and-push-config.outputs.service-name }}
repository-name:
description: "Repository name"
value: ${{ steps.docker-build-and-push-config.outputs.repository-name }}
branch-name:
description: "Branch name"
value: ${{ steps.branch-specific-config.outputs.branch-name }}
image-rev:
description: "Docker image revision"
value: ${{ steps.branch-specific-config.outputs.image-rev }}
tf-workingdir:
description: "Terraform working directory"
value: ${{ steps.branch-specific-config.outputs.tf-workingdir }}
tf-lockfile:
description: "Terraform lockfile"
value: ${{ steps.branch-specific-config.outputs.tf-lockfile }}
docker-load:
description: "Docker load"
value: ${{ steps.branch-specific-config.outputs.docker-load }}
docker-push:
description: "Docker push"
value: ${{ steps.branch-specific-config.outputs.docker-push }}
manifests-dir:
description: "Manifests directory for the environment"
value: ${{ steps.branch-specific-config.outputs.manifests-dir }}
digest:
description: "Digest for the Docker repository image"
value: ${{ steps.docker-build-and-push.outputs.digest }}
repository-url:
description: "Repository URL for the Docker repository image"
value: ${{ steps.login-ecr.outputs.registry }}/${{ steps.docker-build-and-push-config.outputs.repository-name }}
runs:
using: "composite"
steps:
- name: Docker Build and Push Config
id: docker-build-and-push-config
run: |
set -euxo pipefail
SERVICE_NAME="${{ inputs.service-name }}"
SERVICE_NAME_SANITIZED="${SERVICE_NAME//_/-}"
REPOSITORY_NAME="${{ inputs.repository-name }}"
if [ -z "$REPOSITORY_NAME" ]; then
REPOSITORY_NAME="${SERVICE_NAME_SANITIZED}"
fi
echo "::set-output name=service-name::$(echo $SERVICE_NAME_SANITIZED)"
echo "::set-output name=repository-name::$(echo $REPOSITORY_NAME)"
shell: bash
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Branch specific config
uses: ./.github/actions/branch-specific-config
id: branch-specific-config
- uses: docker/setup-buildx-action@v1
- name: Build and push image
id: docker-build-and-push
uses: docker/build-push-action@v2
with:
context: ${{ inputs.base-dir }}/${{ inputs.service-name }}
load: ${{ steps.branch-specific-config.outputs.docker-load }}
push: ${{ steps.branch-specific-config.outputs.docker-push }}
tags: ${{ steps.login-ecr.outputs.registry }}/${{ steps.docker-build-and-push-config.outputs.repository-name }}:${{ steps.branch-specific-config.outputs.image-rev }}