name: Build images

on: [push, pull_request]

env:
  BASE_IMAGE_NAME: openvk
  DB_IMAGE_NAME: mariadb
  EVENT_IMAGE_NAME: mariadb
  DB_VERSION: "10.9"

jobs:
  buildbase:
    name: Build base images
    strategy:
      matrix:
        platform: [amd64, arm64]

    runs-on: ubuntu-latest

    steps:
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3
      
      - name: Set up Docker Buildx
        id: buildx
        uses: docker/setup-buildx-action@v3

      - name: Change repository string to lowercase
        id: repositorystring
        uses: Entepotenz/change-string-case-action-min-dependencies@v1.1.0
        with:
          string: ${{ github.repository }}

      - name: Base image meta
        id: basemeta
        uses: docker/metadata-action@v5
        with:
          images: |
            ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/${{env.BASE_IMAGE_NAME}}
          labels: |
            org.opencontainers.image.documentation=https://github.com/OpenVK/openvk/blob/master/install/automated/docker/Readme.md
          tags: |
            type=sha
            type=ref,event=branch
            type=ref,event=pr
            type=ref,event=tag
            type=raw,value=latest,enable={{is_default_branch}}

      - name: Log into registry
        if: github.event_name != 'pull_request'
        run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin

      - name: Build base image
        uses: docker/build-push-action@v6
        with:
          platforms: linux/${{matrix.platform}}
          file: install/automated/docker/openvk.Dockerfile
          tags: ${{ steps.basemeta.outputs.tags }}
          labels: ${{ steps.basemeta.outputs.labels }}
          push: ${{ github.event_name != 'pull_request' }}
          build-args: |
            GITREPO=${{ steps.repositorystring.outputs.lowercase }}

  builddb:
    name: Build DB images
    strategy:
      matrix:
        platform: [amd64, arm64]

    runs-on: ubuntu-latest

    steps:
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3
      
      - name: Set up Docker Buildx
        id: buildx
        uses: docker/setup-buildx-action@v3

      - name: Change repository string to lowercase
        id: repositorystring
        uses: Entepotenz/change-string-case-action-min-dependencies@v1.1.0
        with:
          string: ${{ github.repository }}

      - name: MariaDB primary meta
        id: db-primarymeta
        uses: docker/metadata-action@v5
        with:
          images: |
            ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/${{env.DB_IMAGE_NAME}}
          labels: |
            org.opencontainers.image.title=OpenVK MariaDB (Primary)
            org.opencontainers.image.description=OpenVK's image for MariaDB for primary database.
            org.opencontainers.image.documentation=https://github.com/OpenVK/openvk/blob/master/install/automated/docker/Readme.md
          tags: |
            type=sha,prefix=${{env.DB_VERSION}}-primary-sha-
            type=ref,event=branch,prefix=${{env.DB_VERSION}}-primary-
            type=ref,event=pr,prefix=${{env.DB_VERSION}}-primary-pr-
            type=ref,event=tag,prefix=${{env.DB_VERSION}}-primary-
            type=raw,value=${{env.DB_VERSION}}-primary,enable={{is_default_branch}}

      - name: MariaDB event meta
        id: db-eventmeta
        uses: docker/metadata-action@v5
        with:
          images: |
            ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/${{env.DB_IMAGE_NAME}}
          labels: |
            org.opencontainers.image.title=OpenVK MariaDB (EventDB)
            org.opencontainers.image.description=OpenVK's image for MariaDB for event database.
            org.opencontainers.image.documentation=https://github.com/OpenVK/openvk/blob/master/install/automated/docker/Readme.md
          tags: |
            type=sha,prefix=${{env.DB_VERSION}}-eventdb-sha-
            type=ref,event=branch,prefix=${{env.DB_VERSION}}-eventdb-
            type=ref,event=pr,prefix=${{env.DB_VERSION}}-eventdb-pr-
            type=ref,event=tag,prefix=${{env.DB_VERSION}}-eventdb-
            type=raw,value=${{env.DB_VERSION}}-eventdb,enable={{is_default_branch}}

      - name: Log into registry
        if: github.event_name != 'pull_request'
        run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
      
      - name: Build MariaDB primary image
        uses: docker/build-push-action@v6
        with:
          push: ${{ github.event_name != 'pull_request' }}
          platforms: linux/${{matrix.platform}}
          file: install/automated/docker/mariadb-primary.Dockerfile
          tags: ${{ steps.db-primarymeta.outputs.tags }}
          labels: ${{ steps.db-primarymeta.outputs.labels }}
          build-args: |
            VERSION=${{env.DB_VERSION}}
      
      - name: Build MariaDB event image
        uses: docker/build-push-action@v6
        with:
          push: ${{ github.event_name != 'pull_request' }}
          platforms: linux/${{matrix.platform}}
          file: install/automated/docker/mariadb-eventdb.Dockerfile
          tags: ${{ steps.db-eventmeta.outputs.tags }}
          labels: ${{ steps.db-eventmeta.outputs.labels }}
          build-args: |
            VERSION=${{env.DB_VERSION}}