From 46b1dc94e162a40a7327db619fc26ea850f87f4a Mon Sep 17 00:00:00 2001 From: Julian Lechner Date: Fri, 2 Oct 2026 11:51:38 +0200 Subject: [PATCH] ci: schedule development image releases --- .gitea/workflows/BuildDev.yml | 61 -------------------- .gitea/workflows/ReleaseDevelopment.yml | 75 +++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 61 deletions(-) delete mode 100644 .gitea/workflows/BuildDev.yml create mode 100644 .gitea/workflows/ReleaseDevelopment.yml diff --git a/.gitea/workflows/BuildDev.yml b/.gitea/workflows/BuildDev.yml deleted file mode 100644 index c444312..0000000 --- a/.gitea/workflows/BuildDev.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Build Docker Image - Dev - -on: - workflow_dispatch: - push: - branches: - - main - -env: - REGISTRY: docker.lechner-systems.at - IMAGE_NAME: lechnersystems/maintenance - -jobs: - docker: - runs-on: ubuntu-latest - permissions: - contents: read - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Read version - id: version - shell: bash - run: | - version="$(git rev-parse --short=12 HEAD)" - - if [[ ! "$version" =~ ^[0-9a-f]{12}$ ]]; then - echo "Invalid git hash version: $version" >&2 - exit 1 - fi - - echo "value=$version" >> "$GITEA_OUTPUT" - echo "docker_tag=$version" >> "$GITEA_OUTPUT" - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Log in to registry - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} - password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }} - - - name: Build and push dev image - uses: docker/build-push-action@v6 - with: - context: . - push: true - provenance: false - build-args: | - APP_VERSION=${{ gitea.sha }} - VCS_REF=${{ gitea.run_number }} - tags: | - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:dev - labels: | - org.opencontainers.image.version=${{ gitea.sha }} - org.opencontainers.image.revision=${{ gitea.run_number }} - org.opencontainers.image.source=${{ gitea.repositoryUrl }} diff --git a/.gitea/workflows/ReleaseDevelopment.yml b/.gitea/workflows/ReleaseDevelopment.yml new file mode 100644 index 0000000..9f375b7 --- /dev/null +++ b/.gitea/workflows/ReleaseDevelopment.yml @@ -0,0 +1,75 @@ +name: Release Development + +on: + schedule: + - cron: '0 23 * * *' + workflow_dispatch: + +permissions: + contents: read + actions: read + +env: + REGISTRY: docker.lechner-systems.at + IMAGE_NAME: lechnersystems/maintenance + +jobs: + changes: + runs-on: ubuntu-latest + outputs: + changed: ${{ steps.check.outputs.changed }} + steps: + - name: Check for commits since previous successful development release + id: check + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + GITEA_API_URL: ${{ gitea.api_url }} + GITEA_REPOSITORY: ${{ gitea.repository }} + GITEA_SHA: ${{ gitea.sha }} + shell: bash + run: | + runs_url="$GITEA_API_URL/repos/$GITEA_REPOSITORY/actions/runs?limit=100" + runs="$(curl --fail --silent --show-error --header "Authorization: token $GITEA_TOKEN" "$runs_url")" + previous_sha="$(jq -r --arg path '.gitea/workflows/ReleaseDevelopment.yml' '[.workflow_runs[] | select(.path == $path and .status == "success")][0].head_sha // empty' <<< "$runs")" + + if [ "$previous_sha" = "$GITEA_SHA" ]; then + echo 'changed=false' >> "$GITEA_OUTPUT" + echo 'No changes since previous successful development release.' + else + echo 'changed=true' >> "$GITEA_OUTPUT" + echo 'Changes found; development release will run.' + fi + + image: + needs: changes + if: needs.changes.outputs.changed == 'true' + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} + password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }} + + - name: Build and push development image + uses: docker/build-push-action@v6 + with: + context: . + push: true + provenance: false + build-args: | + APP_VERSION=${{ gitea.sha }} + VCS_REF=${{ gitea.sha }} + tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:dev + labels: | + org.opencontainers.image.version=${{ gitea.sha }} + org.opencontainers.image.revision=${{ gitea.sha }} + org.opencontainers.image.source=${{ gitea.repositoryUrl }} +