Skip to content
name: Build and publish images to DockerHub
on:
release:
types:
- published
workflow_dispatch:
jobs:
release-publish:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
image:
- repo: enaccess/micropowermanager-frontend
dockerfile: ./docker/DockerfileFrontendProd
- repo: enaccess/micropowermanager-backend
dockerfile: ./docker/DockerfileBackendProd
permissions:
contents: read
id-token: write
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Get version
run: |
VERSION=$(cat version)
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Check if image tag already exists
run: |
VERSION="${{ env.VERSION }}"
if docker manifest inspect ${{ matrix.image.repo }}:$VERSION > /dev/null 2>&1; then
echo "Docker image tag $VERSION already exists."
exit 1
else
echo "Docker image tag $VERSION does not exist. Proceeding with build."
fi
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
file: ${{ matrix.image.dockerfile }}
platforms: linux/amd64,linux/arm64
push: true
tags: |
${{ matrix.image.repo }}:latest
${{ matrix.image.repo }}:${{ env.VERSION }}
- name: Update Docker Hub Description
uses: peter-evans/dockerhub-description@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME_LEGACY }}
password: ${{ secrets.DOCKERHUB_TOKEN_LEGACY }}
repository: ${{ matrix.image.repo }}
short-description: Open Source Management Tool for Decentralized Utilities