Enhance GitHub Actions workflow by adding environment variables for GHCR repository and improving image tag preparation logic. Update DockerHub sync step to conditionally use password or token. Refactor output handling for built images.

This commit is contained in:
KennyG 2026-03-30 12:24:26 -04:00
parent 6c8efe2a50
commit 7fa4d6a3d1

View file

@ -5,6 +5,9 @@ on:
branches: branches:
- 'master' - 'master'
env:
GHCR_REPOSITORY: ghcr.io/${{ github.repository }}
jobs: jobs:
quality-checks: quality-checks:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -64,9 +67,28 @@ jobs:
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4 uses: docker/setup-buildx-action@v4
-
name: Prepare image tags
id: image_tags
env:
DOCKERHUB_REPOSITORY: ${{ secrets.DOCKERHUB_REPOSITORY }}
GHCR_REPOSITORY: ${{ env.GHCR_REPOSITORY }}
DATE: ${{ steps.date.outputs.date }}
run: |
{
echo 'tags<<EOF'
if [ -n "$DOCKERHUB_REPOSITORY" ]; then
echo "${DOCKERHUB_REPOSITORY}:latest"
echo "${DOCKERHUB_REPOSITORY}:${DATE}"
fi
echo "${GHCR_REPOSITORY}:latest"
echo "${GHCR_REPOSITORY}:${DATE}"
echo EOF
} >> "$GITHUB_OUTPUT"
- -
name: Login to DockerHub name: Login to DockerHub
uses: docker/login-action@v4 uses: docker/login-action@v4
if: ${{ secrets.DOCKERHUB_USERNAME != '' && secrets.DOCKERHUB_TOKEN != '' }}
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }} password: ${{ secrets.DOCKERHUB_TOKEN }}
@ -86,21 +108,18 @@ jobs:
push: true push: true
build-args: | build-args: |
VERSION=${{ steps.date.outputs.date }} VERSION=${{ steps.date.outputs.date }}
tags: | tags: ${{ steps.image_tags.outputs.tags }}
${{ secrets.DOCKERHUB_REPOSITORY }}:latest
${{ secrets.DOCKERHUB_REPOSITORY }}:${{ steps.date.outputs.date }}
ghcr.io/${{ github.repository }}:latest
ghcr.io/${{ github.repository }}:${{ steps.date.outputs.date }}
dockerhub-sync-readme: dockerhub-sync-readme:
needs: dockerhub-build-push needs: dockerhub-build-push
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: ${{ secrets.DOCKERHUB_USERNAME != '' && (secrets.DOCKERHUB_PASSWORD != '' || secrets.DOCKERHUB_TOKEN != '') && secrets.DOCKERHUB_REPOSITORY != '' }}
steps: steps:
- name: Sync README - name: Sync README
uses: docker://lsiodev/readme-sync:latest uses: docker://lsiodev/readme-sync:latest
env: env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD != '' && secrets.DOCKERHUB_PASSWORD || secrets.DOCKERHUB_TOKEN }}
GIT_REPOSITORY: ${{ github.repository }} GIT_REPOSITORY: ${{ github.repository }}
DOCKER_REPOSITORY: ${{ secrets.DOCKERHUB_REPOSITORY }} DOCKER_REPOSITORY: ${{ secrets.DOCKERHUB_REPOSITORY }}
GIT_BRANCH: master GIT_BRANCH: master
@ -157,7 +176,7 @@ jobs:
id: release_body id: release_body
env: env:
DOCKERHUB_REPO: ${{ secrets.DOCKERHUB_REPOSITORY }} DOCKERHUB_REPO: ${{ secrets.DOCKERHUB_REPOSITORY }}
GHCR_REPO: ghcr.io/${{ github.repository }} GHCR_REPO: ${{ env.GHCR_REPOSITORY }}
DATE: ${{ steps.date.outputs.date }} DATE: ${{ steps.date.outputs.date }}
HAS_COMMITS: ${{ steps.commits.outputs.has_commits }} HAS_COMMITS: ${{ steps.commits.outputs.has_commits }}
COMMITS: ${{ steps.commits.outputs.commits }} COMMITS: ${{ steps.commits.outputs.commits }}
@ -167,10 +186,12 @@ jobs:
echo '' echo ''
echo 'Docker images have been built and pushed:' echo 'Docker images have been built and pushed:'
echo '' echo ''
if [ -n "$DOCKERHUB_REPO" ]; then
echo '**Docker Hub:**' echo '**Docker Hub:**'
echo "- \`${DOCKERHUB_REPO}:latest\`" echo "- \`${DOCKERHUB_REPO}:latest\`"
echo "- \`${DOCKERHUB_REPO}:${DATE}\`" echo "- \`${DOCKERHUB_REPO}:${DATE}\`"
echo '' echo ''
fi
echo '**GitHub Container Registry:**' echo '**GitHub Container Registry:**'
echo "- \`${GHCR_REPO}:latest\`" echo "- \`${GHCR_REPO}:latest\`"
echo "- \`${GHCR_REPO}:${DATE}\`" echo "- \`${GHCR_REPO}:${DATE}\`"