path and file name are arbitrary #127
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Increment Build | |
on: | |
pull_request_target: | |
branches: [nightly] | |
types: [closed] | |
jobs: | |
verify-changes: | |
runs-on: ubuntu-latest | |
if: github.base_ref == 'nightly' && github.event.pull_request.merged | |
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 HEAD^ | 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 | |
increment-build: | |
runs-on: ubuntu-latest | |
needs: [ verify-changes ] | |
if: needs.verify-changes.outputs.build == 'true' | |
outputs: | |
version: ${{ steps.update-version.outputs.version }} | |
build-value: ${{ steps.update-version.outputs.build-value }} | |
commit-msg: ${{ steps.update-version.outputs.commit-msg }} | |
commit-hash: ${{ steps.update-version.outputs.commit-hash }} | |
commit-short: ${{ steps.update-version.outputs.commit-short }} | |
pr-tag: ${{ steps.update-version.outputs.pr-tag }} | |
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 | |
id: update-version | |
run: | | |
branch_name=${{ github.event.pull_request.head.ref }} | |
repo_name=${{ github.event.pull_request.head.repo.full_name }} | |
base_name="${repo_name%/*}" | |
if [[ "${branch_name}" =~ ^(master|develop|nightly)$ ]]; then | |
pr_tag="${base_name}" | |
else | |
pr_tag="${branch_name}" | |
fi | |
echo "pr-tag=${pr_tag}" >> $GITHUB_OUTPUT | |
value=$(cat VERSION) | |
old_msg=$(git log -1 HEAD --pretty=format:%s) | |
version="${value%-build*}" | |
part_value=$(cat PART) | |
if [[ "$value" == *"-"* ]]; then | |
build_value="$((${value#*-build} + 1))" | |
else | |
build_value="1" | |
fi | |
new_value="${version}-build${build_value}" | |
new_msg="[${build_value}] ${old_msg}" | |
echo "version=${version}" >> $GITHUB_OUTPUT | |
echo "build-value=${build_value}" >> $GITHUB_OUTPUT | |
echo "commit-msg=${old_msg}" >> $GITHUB_OUTPUT | |
echo "commit-hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT | |
echo "commit-short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | |
echo "$new_value" > "VERSION" | |
echo "" > "PART" | |
git config --local user.email "[email protected]" | |
git config --local user.name "GitHub Action" | |
git add VERSION | |
git add PART | |
git commit -m "${new_msg}" --amend | |
git push origin nightly --force-with-lease | |
docker-build-nightly: | |
runs-on: ubuntu-latest | |
needs: [ increment-build, 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@v6 | |
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: [ increment-build, verify-changes, docker-build-nightly ] | |
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: Kometa ${{ needs.increment-build.outputs.version }} Build ${{ needs.increment-build.outputs.build-value }} | |
url: https://github.com/Kometa-Team/Kometa/commit/${{ needs.increment-build.outputs.commit-hash }} | |
description: ${{ needs.increment-build.outputs.commit-msg }} | |
message: "<@&967002147520675840> - An update to Kometa has now been published and is available to users of the **nightly** branch." | |
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 }} | |
cleanup-tags: | |
runs-on: ubuntu-latest | |
needs: [ increment-build, verify-changes, docker-build-nightly, commit-notification ] | |
if: ${{ success() }} | |
steps: | |
- name: remove tag | |
run: | | |
HUB_TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d "{\"username\": \"${{ secrets.DOCKER_HUB_USERNAME }}\", \"password\": \"${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}\"}" https://hub.docker.com/v2/users/login/ | jq -r .token) | |
curl -i -X DELETE \ | |
-H "Accept: application/json" \ | |
-H "Authorization: JWT $HUB_TOKEN" \ | |
https://hub.docker.com/v2/repositories/kometateam/kometa/tags/${{ needs.increment-build.outputs.pr-tag }}/ |