keep sourcing #27
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Create Docker Image Package | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
release: | |
jobs: | |
push: | |
runs-on: ubuntu-latest | |
permissions: | |
packages: write | |
contents: read | |
env: | |
DOCKER_BUILDKIT: 1 | |
REF: ${{ github.ref }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 | |
- name: Build Root Docker Image | |
run: docker build . --file Dockerfile --tag $(echo "${{ github.repository }}" | sed -e 's,.*/\(.*\),\1,') --label "runnumber=${GITHUB_RUN_ID}" --build-arg "FRONTEND_TARGET=production" | |
- name: GitHub Container Registry Login | |
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin | |
- name: Push Docker Image | |
run: | | |
IMAGE_NAME=$(echo "${{ github.repository }}" | sed -e 's,.*/\(.*\),\1,') | |
IMAGE_ID=ghcr.io/${{ github.repository }} | |
# Change all uppercase to lowercase | |
IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') | |
# Strip git ref prefix from version | |
VERSION=$(echo "$REF" | sed -e 's,.*/\(.*\),\1,') | |
# Extract PR Number if PR | |
[[ "$REF" == "refs/pull/"* ]] && VERSION=$(echo "$REF" | sed -e 's,refs/pull/\(.*\)/merge,pr-\1,') | |
# Strip "v" prefix from tag name if exists | |
[[ "$REF" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') | |
# Use Docker `latest` convention | |
[ "$VERSION" == "master" ] || [ "$VERSION" == "main" ] && VERSION=latest | |
echo IMAGE_ID=$IMAGE_ID | |
echo VERSION=$VERSION | |
SHA=${{ github.sha }} | |
if [ ! -z $GITHUB_HEAD_REF ]; then | |
# This is done to get the branch commit SHA, not the PR merge SHA. | |
# We do this for better traceability and image:tag match up | |
echo "PR Build, pop commit SHA..." | |
SHA=$(git --no-pager log -n 2 --pretty="%H" | sed -n '2 p') | |
fi | |
echo "GitSHA: ${SHA}" | |
docker tag $IMAGE_NAME $IMAGE_ID:${SHA} | |
docker tag $IMAGE_NAME $IMAGE_ID:$VERSION | |
docker push $IMAGE_ID:${SHA} | |
docker push $IMAGE_ID:$VERSION |