-
-
Notifications
You must be signed in to change notification settings - Fork 97
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci(actions): run build action everywhere (#1145)
* ci(actions): try using docker/build-push-action no pushes yet ofc * ci(actions): try using multilines to provide env vars * ci(actions): use full form env vars providing * ci(actions): try load flag * ci(actions): add uploading of built images as artifacts * ci(actions): use oci export type * ci(actions): try generating metadata with docker/metadata-action@v5 * ci(actions): individual tagging policy fo db images * ci(actions): improve prefixes for db images * ci: use matrix for different platforms * ci(actions): move DB images building to a different job * ci(actions): add labels to images * ci(actions): add running on pull_requests * ci(actions): return pushing to registry
- Loading branch information
Showing
1 changed file
with
111 additions
and
37 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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,54 +9,136 @@ 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 | ||
uses: Entepotenz/[email protected] | ||
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 | ||
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 }} | ||
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: Build MariaDB primary image | ||
run: | | ||
IMAGE_NAME=ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/$DB_IMAGE_NAME:$DB_VERSION-primary | ||
- name: Set up Docker Buildx | ||
id: buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- name: Change repository string to lowercase | ||
id: repositorystring | ||
uses: Entepotenz/[email protected] | ||
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}} | ||
docker buildx build --platform linux/amd64,linux/arm64 -t $IMAGE_NAME . --push -f install/automated/docker/mariadb-primary.Dockerfile --build-arg VERSION=$DB_VERSION | ||
- 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 | ||
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 | ||
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}} |