From c8aae10671354bac91abe75f696a48ce67765d38 Mon Sep 17 00:00:00 2001 From: Polish Hammer Date: Tue, 28 Jul 2026 12:56:14 +0200 Subject: [PATCH] build-radio change --- .gitea/workflows/build.yaml | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 8bea5f6..726e4b2 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -7,6 +7,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + fetch-depth: 2 - name: Login do rejestru run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login gitea.czernobog.pl -u gitea --password-stdin @@ -30,15 +32,39 @@ jobs: docker push gitea.czernobog.pl/gitea/conjurer-share:$TAG # RADIO: budowane TYLKO gdy zmieniło się coś istotnego (oszczędza ~15 min na push) + + - name: Czy radio wymaga rebuildu? id: radio_changed + env: + REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }} run: | - if git diff --name-only HEAD~1 HEAD | grep -qE "docker/Dockerfile.radio|docker/entrypoint.radio.sh|docker/icecast.xml.tpl|docker/pulse-system.pa|conjurer_musician/radio_conjurer.liq|conjurer_betoniarka/"; then - echo "build=yes" >> $GITHUB_OUTPUT - else - echo "build=no" >> $GITHUB_OUTPUT - echo "radio bez zmian — pomijam ciężki build" + NEED=no + + # Warunek 1: zmiany w plikach radia + if git rev-parse HEAD~1 >/dev/null 2>&1; then BASE=HEAD~1; else BASE=$(git hash-object -t tree /dev/null); fi + if git diff --name-only "$BASE" HEAD | grep -qE "docker/Dockerfile.radio|docker/entrypoint.radio.sh|docker/icecast.xml.tpl|docker/pulse-system.pa|conjurer_musician/radio_conjurer.liq|conjurer_betoniarka/"; then + NEED=yes + echo "radio: wykryto zmiany w plikach → build" fi + + # Warunek 2: obrazu nie ma w rejestrze (inicjalizacja) + if [ "$NEED" = "no" ]; then + TAGS=$(curl -s -u "gitea:${REGISTRY_TOKEN}" \ + "https://gitea.czernobog.pl/v2/gitea/conjurer-radio/tags/list" 2>/dev/null || true) + # brak tagów w ogóle = obraz nie istnieje → zbuduj + if ! echo "$TAGS" | grep -q '"tags"[[:space:]]*:[[:space:]]*\['; then + NEED=yes + echo "radio: brak obrazu w rejestrze → build inicjalizujący" + elif echo "$TAGS" | grep -qE '"tags"[[:space:]]*:[[:space:]]*\[[[:space:]]*\]|"tags"[[:space:]]*:[[:space:]]*null'; then + NEED=yes + echo "radio: obraz istnieje ale bez tagów → build" + fi + fi + + echo "build=$NEED" >> $GITHUB_OUTPUT + [ "$NEED" = "no" ] && echo "radio bez zmian i obraz istnieje — pomijam ciężki build" || true + - name: Build radio if: steps.radio_changed.outputs.build == 'yes' run: |