Skip to content

Bump Kitsu and Zou versions (1.0.35 and 1.0.41) #120

Bump Kitsu and Zou versions (1.0.35 and 1.0.41)

Bump Kitsu and Zou versions (1.0.35 and 1.0.41) #120

Workflow file for this run

name: Docker
on:
push:
branches: ["master"]
workflow_dispatch:
permissions:
contents: read
env:
IMAGE: cgwire/cgwire
jobs:
versions:
runs-on: ubuntu-latest
outputs:
kitsu_version: ${{ steps.versions.outputs.KITSU_VERSION }}
zou_version: ${{ steps.versions.outputs.ZOU_VERSION }}
index_version: ${{ steps.versions.outputs.INDEX_VERSION }}
image_tag: ${{ steps.versions.outputs.IMAGE_TAG }}
exists: ${{ steps.check.outputs.exists }}
steps:
- name: Check out repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Load and validate versions
id: versions
run: |
set -a
source versions.env
set +a
for v in "$ZOU_VERSION" "$KITSU_VERSION"; do
if ! echo "$v" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then
echo "::error::Invalid version format: $v"
exit 1
fi
done
if ! echo "$INDEX_VERSION" | grep -qE '^[0-9]{1,3}$'; then
echo "::error::INDEX_VERSION must be 1-3 digits, got: $INDEX_VERSION"
exit 1
fi
IMAGE_TAG="${KITSU_VERSION}-${ZOU_VERSION}-${INDEX_VERSION}"
echo "ZOU_VERSION=${ZOU_VERSION}" >> "$GITHUB_OUTPUT"
echo "KITSU_VERSION=${KITSU_VERSION}" >> "$GITHUB_OUTPUT"
echo "INDEX_VERSION=${INDEX_VERSION}" >> "$GITHUB_OUTPUT"
echo "IMAGE_TAG=${IMAGE_TAG}" >> "$GITHUB_OUTPUT"
- name: Check if image already exists on Docker Hub
id: check
env:
IMAGE_TAG: ${{ steps.versions.outputs.IMAGE_TAG }}
run: |
if curl -sf "https://hub.docker.com/v2/repositories/cgwire/cgwire/tags/${IMAGE_TAG}" > /dev/null 2>&1; then
echo "::notice::Image cgwire/cgwire:${IMAGE_TAG} already exists on Docker Hub, skipping build."
echo "exists=true" >> "$GITHUB_OUTPUT"
else
echo "Image cgwire/cgwire:${IMAGE_TAG} not found, proceeding with build."
echo "exists=false" >> "$GITHUB_OUTPUT"
fi
build:
if: needs.versions.outputs.exists == 'false'
needs: versions
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- platform: linux/amd64
runner: ubuntu-latest
- platform: linux/arm64
runner: ubuntu-24.04-arm
steps:
- name: Check out repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
with:
buildkitd-config: .github/buildkitd.toml
- name: Login to Docker Hub
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push by digest
id: build
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
with:
context: .
file: ./Dockerfile
platforms: ${{ matrix.platform }}
build-args: |
KITSU_VERSION=${{ needs.versions.outputs.kitsu_version }}
ZOU_VERSION=${{ needs.versions.outputs.zou_version }}
outputs: type=image,name=${{ env.IMAGE }},push-by-digest=true,name-canonical=true,push=true
cache-from: type=gha,scope=${{ matrix.platform }}
cache-to: type=gha,scope=${{ matrix.platform }},mode=max
- name: Export digest
run: |
mkdir -p /tmp/digests
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
- name: Upload digest
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: digest-${{ matrix.runner }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1
merge:
if: needs.versions.outputs.exists == 'false'
needs: [versions, build]
runs-on: ubuntu-latest
steps:
- name: Download digests
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
path: /tmp/digests
pattern: digest-*
merge-multiple: true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Login to Docker Hub
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Create multi-platform manifest
env:
IMAGE_TAG: ${{ needs.versions.outputs.image_tag }}
run: |
cd /tmp/digests
docker buildx imagetools create \
--tag "${{ env.IMAGE }}:${IMAGE_TAG}" \
$(printf '${{ env.IMAGE }}@sha256:%s ' *)
- name: Inspect manifest
env:
IMAGE_TAG: ${{ needs.versions.outputs.image_tag }}
run: |
docker buildx imagetools inspect "${{ env.IMAGE }}:${IMAGE_TAG}"
test:
if: needs.versions.outputs.exists == 'false'
needs: [versions, merge]
strategy:
matrix:
include:
- platform: amd64
runner: ubuntu-latest
sleep: 15
- platform: arm64
runner: ubuntu-24.04-arm
sleep: 10
runs-on: ${{ matrix.runner }}
steps:
- name: Login to Docker Hub
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Pull and test ${{ matrix.platform }} image
env:
KITSU_VERSION: ${{ needs.versions.outputs.kitsu_version }}
ZOU_VERSION: ${{ needs.versions.outputs.zou_version }}
IMAGE_TAG: ${{ needs.versions.outputs.image_tag }}
run: |
CONTAINER_NAME=cgwire-${{ matrix.platform }}
docker pull "${{ env.IMAGE }}:${IMAGE_TAG}"
docker container run -d --init -p 8080:80 --rm --name "${CONTAINER_NAME}" "${{ env.IMAGE }}:${IMAGE_TAG}"
sleep ${{ matrix.sleep }}
docker container run --link "${CONTAINER_NAME}" \
-e "KITSU_URL=http://${CONTAINER_NAME}:80" \
-e "KITSU_VERSION=${KITSU_VERSION}" \
-e "ZOU_VERSION=${ZOU_VERSION}" \
-e TIMEOUT=1 \
-e WAIT=1 \
cgwire/kitsu-checker:latest
docker kill "${CONTAINER_NAME}"
tag:
if: needs.versions.outputs.exists == 'false'
needs: [versions, test]
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Login to Docker Hub
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Create alias tags
env:
KITSU_VERSION: ${{ needs.versions.outputs.kitsu_version }}
IMAGE_TAG: ${{ needs.versions.outputs.image_tag }}
run: |
docker buildx imagetools create \
"${{ env.IMAGE }}:${IMAGE_TAG}" \
--tag "${{ env.IMAGE }}:${KITSU_VERSION}" \
--tag "${{ env.IMAGE }}:latest"