name: Update Build Version on: pull_request: branches: [nightly] types: [closed] jobs: increment-version: runs-on: ubuntu-latest if: github.base_ref == 'nightly' && github.event.pull_request.merged steps: - name: Create App Token uses: actions/create-github-app-token@v1 id: app-token with: app-id: ${{ vars.APP_ID }} private-key: ${{ secrets.APP_TOKEN }} - name: Check Out Repo uses: actions/checkout@v4 with: token: ${{ steps.app-token.outputs.token }} ref: nightly fetch-depth: 0 - name: Update VERSION File run: | value=$(cat VERSION) old_msg=$(git log -1 HEAD --pretty=format:%s) if [[ "$value" == *"-"* ]]; then build_value="$((${value#*-build} + 1))" new_value="${value%-build*}-build${build_value}" new_msg="[${build_value}] ${old_msg}" elif [[ "$value" == *"!"* ]]; then new_value="${value%!*}" new_msg="[${new_value}] ${old_msg}" else new_value="${value%-build*}-build1" new_msg="[1] ${old_msg}" fi echo "$new_value" > "VERSION" git config --local user.email "action@github.com" git config --local user.name "GitHub Action" git add VERSION git commit -m "${new_msg}" --amend git push origin nightly --force-with-lease verify-changes: runs-on: ubuntu-latest needs: [ increment-version ] outputs: build: ${{ steps.list-changes.outputs.build }} steps: - name: Check Out Repo uses: actions/checkout@v4 with: fetch-depth: 0 ref: nightly - name: Get changes id: get-changes run: echo "files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | xargs)" >> $GITHUB_OUTPUT - name: List changed files id: list-changes run: | for file in ${{ steps.get-changes.outputs.files }}; do if [[ $file =~ ^(defaults|fonts|modules|kometa.py|requirements.txt|.dockerignore|Dockerfile).*$ ]] ; then echo "$file will trigger docker build" echo "build=true" >> $GITHUB_OUTPUT else echo "$file will not trigger docker build" fi done docker-build: runs-on: ubuntu-latest needs: [ verify-changes ] if: needs.verify-changes.outputs.build == 'true' steps: - name: Check Out Repo uses: actions/checkout@v4 with: ref: nightly - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@master with: platforms: all - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v3 - name: Build and Push id: docker_build uses: docker/build-push-action@v5 with: context: ./ file: ./Dockerfile build-args: | "BRANCH_NAME=nightly" platforms: linux/amd64,linux/arm64 push: true tags: kometateam/kometa:nightly cache-from: type=gha cache-to: type=gha,mode=max - name: Discord Success Notification uses: Kometa-Team/discord-notifications@master if: success() with: webhook_id_token: ${{ secrets.BUILD_WEBHOOK }} title: "${{ vars.REPO_NAME }} nightly: ${{ vars.TEXT_SUCCESS }}" url: https://github.com/Kometa-Team/${{ vars.REPO_NAME }}/actions/runs/${{ github.run_id }} color: ${{ vars.COLOR_SUCCESS }} username: ${{ vars.BOT_NAME }} avatar_url: ${{ vars.BOT_IMAGE }} author: ${{ vars.DOCKER_NAME }} author_icon_url: ${{ vars.DOCKER_IMAGE }} - name: Discord Failure Notification uses: Kometa-Team/discord-notifications@master if: failure() with: webhook_id_token: ${{ secrets.BUILD_WEBHOOK }} message: ${{ vars.BUILD_FAILURE_ROLE }} title: "${{ vars.REPO_NAME }} nightly: ${{ vars.TEXT_FAILURE }}" url: https://github.com/Kometa-Team/${{ vars.REPO_NAME }}/actions/runs/${{ github.run_id }} color: ${{ vars.COLOR_FAILURE }} username: ${{ vars.BOT_NAME }} avatar_url: ${{ vars.BOT_IMAGE }} author: ${{ vars.DOCKER_NAME }} author_icon_url: ${{ vars.DOCKER_IMAGE }} commit-notification: runs-on: ubuntu-latest needs: [ docker-build, verify-changes ] if: ${{ success() && needs.verify-changes.outputs.build == 'true' }} steps: - name: Send Discord Commit Notification uses: Kometa-Team/discord-notifications@master with: webhook_id_token: ${{ secrets.NIGHTLY_WEBHOOK }} title: ${{ vars.TEXT_COMMITS }} message: "<@&967002147520675840> - An update to Kometa has now been published and is available to users of the **nightly** branch." commits: "true" color: ${{ vars.COLOR_SUCCESS }} username: ${{ vars.BOT_NAME }} avatar_url: ${{ vars.BOT_IMAGE }} author: ${{ vars.REPO_NAME }} Nightly Release author_icon_url: ${{ vars.RELEASE_IMAGE }}