name: Push Docker Image
on:
release:
types: [published]
env:
DOCKER_BASE_NAME: ghcr.io/${{ github.repository }}
DOCKER_HUB_BASE_NAME: ${{ github.repository }}
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Unshallow
run: git fetch --prune --unshallow
push:
runs-on: ubuntu-22.04
needs: lint
strategy:
matrix:
baseimage:
- "alpine:3.17"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set env
run: |
if [ "${{ github.event_name }}" = 'release' ]; then
export TAG_NAME="${{ github.event.release.tag_name }}"
else
export TAG_NAME="latest"
fi
echo "PKG_TAG=${DOCKER_BASE_NAME}:${TAG_NAME}" >> $GITHUB_ENV
echo "HUB_TAG=${DOCKER_HUB_BASE_NAME}:${TAG_NAME}" >> $GITHUB_ENV
- name: Build ${{ matrix.baseimage }} base image
run: |
docker build . -t "${PKG_TAG}" --build-arg BASE_IMAGE="${{ matrix.baseimage }}"
docker tag "${PKG_TAG}" "${HUB_TAG}"
- name: Login to Registries
if: github.event_name != 'pull_request'
env:
PERSONAL_GITHUB_TOKEN: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
DCKR_PAT: ${{ secrets.DCKR_PAT }}
run: |
echo "${PERSONAL_GITHUB_TOKEN}" | docker login ghcr.io -u trinhminhtriet --password-stdin
echo "${DCKR_PAT}" | docker login -u trinhminhtriet --password-stdin
- name: Push to GitHub Packages
if: github.event_name != 'pull_request'
run: docker push "${PKG_TAG}"
- name: Push to Docker Hub
if: github.event_name != 'pull_request'
run: docker push "${HUB_TAG}"