appbaseio/dejaVu

View on GitHub
.github/workflows/docker-image.yml

Summary

Maintainability
Test Coverage
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