diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 24363f97..638ba7cd 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,14 +1,6 @@ name: Build images -on: - push: - # Publish `master` as Docker `latest` image. - branches: - - master - - # Publish `v1.2.3` tags as releases. - tags: - - v* +on: [push, pull_request] env: BASE_IMAGE_NAME: openvk @@ -17,24 +9,21 @@ env: DB_VERSION: "10.9" jobs: - build: - runs-on: ubuntu-latest + buildbase: + name: Build base images strategy: matrix: - arch: ['x86_64'] + platform: [amd64, arm64] + + runs-on: ubuntu-latest - if: github.event_name == 'push' steps: - - uses: actions/checkout@v3 - with: - lfs: false - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Change repository string to lowercase id: repositorystring @@ -42,29 +31,114 @@ jobs: 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 - run: | - IMAGE_ID=ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/$BASE_IMAGE_NAME - IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') - VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') - [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') - [ "$VERSION" == "master" ] && VERSION=latest - echo IMAGE_ID=$IMAGE_ID - echo VERSION=$VERSION + 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 }} - docker buildx build --platform linux/amd64,linux/arm64 -t $IMAGE_ID:$VERSION . --push -f install/automated/docker/openvk.Dockerfile --build-arg 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 - run: | - IMAGE_NAME=ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/$DB_IMAGE_NAME:$DB_VERSION-primary - - docker buildx build --platform linux/amd64,linux/arm64 -t $IMAGE_NAME . --push -f install/automated/docker/mariadb-primary.Dockerfile --build-arg VERSION=$DB_VERSION + 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 - run: | - IMAGE_NAME=ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/$EVENT_IMAGE_NAME:$DB_VERSION-eventdb - - docker buildx build --platform linux/amd64,linux/arm64 -t $IMAGE_NAME . --push -f install/automated/docker/mariadb-eventdb.Dockerfile --build-arg VERSION=$DB_VERSION \ No newline at end of file + 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}} \ No newline at end of file