.github/workflows/docker-image.yml
name: Dejavu - Docker Publish Workflow
on:
release:
types: [published]
repository_dispatch:
types: [publish_docker]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository with submodules
uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 0
- name: Extract version from payload
id: get_version
if: ${{ github.event_name == 'repository_dispatch' }}
run: echo "version=${{ github.event.client_payload.version }}" >> $GITHUB_OUTPUT
- name: Get Version For Release
id: get_version_release
if: ${{ github.event_name != 'repository_dispatch' }}
uses: battila7/get-version-action@v2.2.1
- name: Determine Version
id: set_version
run: |
if [ -n "${{ steps.get_version.outputs.version }}" ]; then
echo "version=${{ steps.get_version.outputs.version }}" >> $GITHUB_OUTPUT
elif [ -n "${{ steps.get_version_release.outputs.version }}" ]; then
echo "version=${{ steps.get_version_release.outputs.version }}" >> $GITHUB_OUTPUT
else
echo "Error: Version is not set."
exit 1
fi
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push latest image
uses: docker/build-push-action@v4
with:
context: .
push: true
platforms: linux/amd64,linux/arm64
tags: |
appbaseio/dejavu:${{ steps.set_version.outputs.version }}
appbaseio/dejavu:latest