From eb8d1b361e57bff05302fd17cf151c077e5a0fca Mon Sep 17 00:00:00 2001 From: mr-forust Date: Tue, 30 Jun 2026 01:20:51 +0200 Subject: [PATCH] ci: add branch tags to docker builds --- .gitea/workflows/ci.yaml | 122 ++++++++++++++++++++++++++++++++++---- .github/workflows/ci.yaml | 122 ++++++++++++++++++++++++++++++++++---- 2 files changed, 222 insertions(+), 22 deletions(-) diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index dbc55cc..3649767 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -112,7 +112,7 @@ jobs: "${manifests[@]}" build: - if: github.event_name != 'pull_request' && github.ref_name == 'main' + if: github.event_name != 'pull_request' && (github.ref_name == 'main' || github.ref_name == 'dev') runs-on: [self-hosted, linux, arch, homelab] steps: - name: Checkout repository @@ -191,24 +191,124 @@ jobs: for service in "${services[@]}"; do case "$service" in dtek_notif) - docker build -t "${REGISTRY}/forust/dtek-notif:latest" dtek_notif - docker push "${REGISTRY}/forust/dtek-notif:latest" + image="${REGISTRY}/forust/dtek-notif" + tags=("latest") + case "${GITHUB_REF_NAME}" in + main) + tags+=("main" "prod") + ;; + dev) + tags+=("dev") + ;; + esac + build_args=() + for tag in "${tags[@]}"; do + build_args+=(-t "${image}:${tag}") + done + docker build "${build_args[@]}" dtek_notif + for tag in "${tags[@]}"; do + docker push "${image}:${tag}" + done ;; errorpages) - docker compose -f errorpages/compose.yaml build errorpage - docker compose -f errorpages/compose.yaml push errorpage + image="${REGISTRY}/forust/error-pages" + tags=("latest") + case "${GITHUB_REF_NAME}" in + main) + tags+=("main" "prod") + ;; + dev) + tags+=("dev") + ;; + esac + build_args=() + for tag in "${tags[@]}"; do + build_args+=(-t "${image}:${tag}") + done + docker build "${build_args[@]}" errorpages + for tag in "${tags[@]}"; do + docker push "${image}:${tag}" + done ;; userbot) - docker compose -f userbot/compose.yaml build forust - docker compose -f userbot/compose.yaml push forust + image="${REGISTRY}/forust/userbot" + tags=("latest") + case "${GITHUB_REF_NAME}" in + main) + tags+=("main" "prod") + ;; + dev) + tags+=("dev") + ;; + esac + build_args=() + for tag in "${tags[@]}"; do + build_args+=(-t "${image}:${tag}") + done + docker build "${build_args[@]}" userbot + for tag in "${tags[@]}"; do + docker push "${image}:${tag}" + done ;; homepages) - docker compose -f homepages/compose.yaml build forust xdfnx - docker compose -f homepages/compose.yaml push forust xdfnx + for service in forust xdfnx; do + case "$service" in + forust) + image="${REGISTRY}/forust/forust-homepage" + ;; + xdfnx) + image="${REGISTRY}/forust/xdfnx-homepage" + ;; + esac + tags=("latest") + case "${GITHUB_REF_NAME}" in + main) + tags+=("main" "prod") + ;; + dev) + tags+=("dev") + ;; + esac + build_args=() + for tag in "${tags[@]}"; do + build_args+=(-t "${image}:${tag}") + done + docker build "${build_args[@]}" -f "homepages/Dockerfile.${service}" homepages + for tag in "${tags[@]}"; do + docker push "${image}:${tag}" + done + done ;; edu_master) - docker compose -f edu_master/compose.yaml build session-keeper webinar-checker - docker compose -f edu_master/compose.yaml push session-keeper webinar-checker + for service in session-keeper webinar-checker; do + case "$service" in + session-keeper) + context="edu_master/phpsessid-bot" + image="${REGISTRY}/forust/session-keeper" + ;; + webinar-checker) + context="edu_master/webinar-checker" + image="${REGISTRY}/forust/webinar-checker" + ;; + esac + tags=("latest") + case "${GITHUB_REF_NAME}" in + main) + tags+=("main" "prod") + ;; + dev) + tags+=("dev") + ;; + esac + build_args=() + for tag in "${tags[@]}"; do + build_args+=(-t "${image}:${tag}") + done + docker build "${build_args[@]}" "$context" + for tag in "${tags[@]}"; do + docker push "${image}:${tag}" + done + done ;; esac done diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index dbc55cc..3649767 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -112,7 +112,7 @@ jobs: "${manifests[@]}" build: - if: github.event_name != 'pull_request' && github.ref_name == 'main' + if: github.event_name != 'pull_request' && (github.ref_name == 'main' || github.ref_name == 'dev') runs-on: [self-hosted, linux, arch, homelab] steps: - name: Checkout repository @@ -191,24 +191,124 @@ jobs: for service in "${services[@]}"; do case "$service" in dtek_notif) - docker build -t "${REGISTRY}/forust/dtek-notif:latest" dtek_notif - docker push "${REGISTRY}/forust/dtek-notif:latest" + image="${REGISTRY}/forust/dtek-notif" + tags=("latest") + case "${GITHUB_REF_NAME}" in + main) + tags+=("main" "prod") + ;; + dev) + tags+=("dev") + ;; + esac + build_args=() + for tag in "${tags[@]}"; do + build_args+=(-t "${image}:${tag}") + done + docker build "${build_args[@]}" dtek_notif + for tag in "${tags[@]}"; do + docker push "${image}:${tag}" + done ;; errorpages) - docker compose -f errorpages/compose.yaml build errorpage - docker compose -f errorpages/compose.yaml push errorpage + image="${REGISTRY}/forust/error-pages" + tags=("latest") + case "${GITHUB_REF_NAME}" in + main) + tags+=("main" "prod") + ;; + dev) + tags+=("dev") + ;; + esac + build_args=() + for tag in "${tags[@]}"; do + build_args+=(-t "${image}:${tag}") + done + docker build "${build_args[@]}" errorpages + for tag in "${tags[@]}"; do + docker push "${image}:${tag}" + done ;; userbot) - docker compose -f userbot/compose.yaml build forust - docker compose -f userbot/compose.yaml push forust + image="${REGISTRY}/forust/userbot" + tags=("latest") + case "${GITHUB_REF_NAME}" in + main) + tags+=("main" "prod") + ;; + dev) + tags+=("dev") + ;; + esac + build_args=() + for tag in "${tags[@]}"; do + build_args+=(-t "${image}:${tag}") + done + docker build "${build_args[@]}" userbot + for tag in "${tags[@]}"; do + docker push "${image}:${tag}" + done ;; homepages) - docker compose -f homepages/compose.yaml build forust xdfnx - docker compose -f homepages/compose.yaml push forust xdfnx + for service in forust xdfnx; do + case "$service" in + forust) + image="${REGISTRY}/forust/forust-homepage" + ;; + xdfnx) + image="${REGISTRY}/forust/xdfnx-homepage" + ;; + esac + tags=("latest") + case "${GITHUB_REF_NAME}" in + main) + tags+=("main" "prod") + ;; + dev) + tags+=("dev") + ;; + esac + build_args=() + for tag in "${tags[@]}"; do + build_args+=(-t "${image}:${tag}") + done + docker build "${build_args[@]}" -f "homepages/Dockerfile.${service}" homepages + for tag in "${tags[@]}"; do + docker push "${image}:${tag}" + done + done ;; edu_master) - docker compose -f edu_master/compose.yaml build session-keeper webinar-checker - docker compose -f edu_master/compose.yaml push session-keeper webinar-checker + for service in session-keeper webinar-checker; do + case "$service" in + session-keeper) + context="edu_master/phpsessid-bot" + image="${REGISTRY}/forust/session-keeper" + ;; + webinar-checker) + context="edu_master/webinar-checker" + image="${REGISTRY}/forust/webinar-checker" + ;; + esac + tags=("latest") + case "${GITHUB_REF_NAME}" in + main) + tags+=("main" "prod") + ;; + dev) + tags+=("dev") + ;; + esac + build_args=() + for tag in "${tags[@]}"; do + build_args+=(-t "${image}:${tag}") + done + docker build "${build_args[@]}" "$context" + for tag in "${tags[@]}"; do + docker push "${image}:${tag}" + done + done ;; esac done