Skip to content

Docker Build and Push to AWS Marketplace #14

Docker Build and Push to AWS Marketplace

Docker Build and Push to AWS Marketplace #14

name: Docker Build and Push to AWS Marketplace
on:
workflow_dispatch:
inputs:
docker_tag:
description: 'Tag for the Docker image'
required: true
default: '' # Pass the value like 1.0.0
pull_request:
branches:
- main
types:
- closed
paths:
- 'Dockerfile'
jobs:
build:
if: github.actor == 'dependabot' || github.event_name == 'workflow_dispatch'
runs-on:
ubuntu-latest
env:
AWS_REGION: us-east-1
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Login to ECR Registry
uses: docker/login-action@v3
with:
registry: ${{ secrets.AWS_MP_REGISTRY }}
username: ${{ secrets.AWS_MP_ACCESS_KEY }}
password: ${{ secrets.AWS_MP_ACCESS_KEY_ID }}
- name: Get latest liquibase docker tag
id: get_latest_tag
run: |
LATEST_TAG=$(grep -i "^FROM liquibase/liquibase:" Dockerfile | cut -d: -f2)
echo "LATEST_TAG=$LATEST_TAG"
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_OUTPUT
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_MP_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_MP_ACCESS_KEY_ID }}
aws-region: us-east-1
- name: Check if tag exists in ECR
id: check_tag
run: |
TAG_EXISTS=$(aws ecr describe-images \
--registry-id 709825985650 \
--repository-name liquibase/liquibase/liquibase-pro \
--region us-east-1 \
--image-ids imageTag=${{ steps.get_latest_tag.outputs.LATEST_TAG || inputs.docker_tag }})
if [ -n "$TAG_EXISTS" ]; then
echo "TAG_EXISTS=true" >> $GITHUB_ENV
else
echo "TAG_EXISTS=false" >> $GITHUB_ENV
fi
- name: Build Docker image
if: env.TAG_EXISTS == false
run: docker build -t 709825985650.dkr.ecr.us-east-1.amazonaws.com/liquibase/liquibase/liquibase-pro:${{ steps.get_latest_tag.outputs.LATEST_TAG || inputs.docker_tag }} .
- name: Push to Docker AWS MP
if: env.TAG_EXISTS == false
run: docker push 709825985650.dkr.ecr.us-east-1.amazonaws.com/liquibase/liquibase/liquibase-pro:${{ steps.get_latest_tag.outputs.LATEST_TAG || inputs.docker_tag }}
- name: Submit Request for AWS MP Listing
if: env.TAG_EXISTS == false
env:
ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY }}
IMAGE_TAG: ${{ steps.get_latest_tag.outputs.LATEST_TAG || inputs.docker_tag }}
PRODUCT_ID: ${{ secrets.PRODUCT_ID }}
run: |
chmod +x ./.github/utils/submit-aws-mp-listing.sh
./.github/utils/submit-aws-mp-listing.sh