68 lines
2.1 KiB
YAML
68 lines
2.1 KiB
YAML
name: Build and Push to ECR
|
|
description: Fully prepares, builds, and pushes a Docker image to AWS ECR.
|
|
|
|
inputs:
|
|
dockerfile:
|
|
description: 'Path to Dockerfile'
|
|
required: true
|
|
image-name:
|
|
description: 'ECR repo name (e.g. api or dbmigrate)'
|
|
required: true
|
|
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
|
|
github-sha:
|
|
description: 'Commit SHA to tag the image with'
|
|
default: ${{ github.sha }}
|
|
|
|
outputs:
|
|
ecr_image:
|
|
description: 'Final ECR image URI'
|
|
value: ${{ steps.build.outputs.ecr_image }}
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Setup AWS Credentials
|
|
uses: aws-actions/configure-aws-credentials@v1
|
|
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: Login to Amazon ECR
|
|
id: ecr-login
|
|
uses: aws-actions/amazon-ecr-login@v1
|
|
|
|
- name: Download generated files
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: generated-code
|
|
path: ${{ github.workspace }}
|
|
|
|
- name: List generated files
|
|
shell: bash
|
|
run: |
|
|
echo "Listing .gen.ts and .gen.d.ts files:"
|
|
pwd
|
|
find . -name "*.gen.ts" -o -name "*.gen.d.ts"
|
|
|
|
- name: Build and Push Docker Image
|
|
shell: bash
|
|
id: build
|
|
run: |
|
|
IMAGE_URI=${{ steps.ecr-login.outputs.registry }}/${{ inputs.image-name }}:${{ inputs.github-sha }}
|
|
docker build -t $IMAGE_URI -f ${{ inputs.dockerfile }} .
|
|
docker tag $IMAGE_URI ${{ steps.ecr-login.outputs.registry }}/${{ inputs.image-name }}:latest
|
|
docker push $IMAGE_URI
|
|
docker push ${{ steps.ecr-login.outputs.registry }}/${{ inputs.image-name }}:latest
|
|
# Safe base64 encode and output
|
|
IMAGE_URI_BASE64=$(echo -n "$IMAGE_URI" | base64 | tr -d '\n')
|
|
echo "ecr_image=$IMAGE_URI_BASE64" >> $GITHUB_OUTPUT
|