gdfa #118
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: Validate Pull Request | |
on: | |
pull_request_target: | |
types: [opened, synchronize, reopened, labeled] | |
jobs: | |
validate-pull: | |
runs-on: ubuntu-latest | |
outputs: | |
build: ${{ steps.list-changes.outputs.build }} | |
steps: | |
- name: Display Refs | |
run: | | |
echo "Base Repo: ${{ github.event.pull_request.base.repo.full_name }}" | |
echo "Base Ref: ${{ github.base_ref }}" | |
echo "Head Repo: ${{ github.event.pull_request.head.repo.full_name }}" | |
echo "Head Ref: ${{ github.event.pull_request.head.ref }}" | |
- name: Check Base Branch | |
if: github.base_ref == 'master' || github.base_ref == 'develop' | |
run: | | |
echo "ERROR: Pull Requests cannot be submitted to master or develop. Please submit the Pull Request to the nightly branch" | |
exit 1 | |
- name: Checkout Repo | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
ref: ${{ github.event.pull_request.head.ref }} | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
- name: Get changes | |
id: get-changes | |
run: | | |
git remote show | |
git remote show origin | |
git remote add -f upstream https://github.com/Kometa-Team/Test.git | |
git remote update | |
if [[ ${{ github.event.action }} == "labeled" ]]; then | |
echo "files=$(git diff --name-only upstream/nightly HEAD | xargs)" >> $GITHUB_OUTPUT | |
else | |
echo "files=$(git diff --name-only HEAD^ | xargs)" >> $GITHUB_OUTPUT | |
fi | |
- 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-pull: | |
runs-on: ubuntu-latest | |
needs: [ validate-pull ] | |
if: needs.validate-pull.outputs.build == 'true' && (contains(github.event.pull_request.labels.*.name, 'docker') || contains(github.event.pull_request.labels.*.name, 'tester')) | |
outputs: | |
commit-msg: ${{ steps.update-version.outputs.commit-msg }} | |
part_value: ${{ steps.update-version.outputs.part_value }} | |
tag-name: ${{ steps.update-version.outputs.tag-name }} | |
extra-text: ${{ steps.update-version.outputs.extra-text }} | |
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: ${{ secrets.PAT }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
- 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 | |
tag_name="${base_name}" | |
else | |
tag_name="${branch_name}" | |
fi | |
echo "tag-name=${tag_name}" >> $GITHUB_OUTPUT | |
if [[ "${base_name}" == "Kometa-Team" ]]; then | |
extra="" | |
else | |
extra=" from the ${{ github.event.pull_request.head.repo.full_name }} repo" | |
fi | |
echo "extra-text=${extra}" >> $GITHUB_OUTPUT | |
value=$(cat VERSION) | |
old_msg=$(git log -1 HEAD --pretty=format:%s) | |
echo "commit-msg=${old_msg}" >> $GITHUB_OUTPUT | |
part=$(cat PART) | |
if [ -n "$part" ]; then | |
new_value="$((${part} + 1))" | |
else | |
new_value="1" | |
fi | |
echo "part_value=${new_value}" >> $GITHUB_OUTPUT | |
echo "$new_value" > "PART" | |
git config --local user.email "[email protected]" | |
git config --local user.name "GitHub Action" | |
git add PART | |
git commit -m "${tag_name} Part: ${new_value}" | |
git push | |
notify-testers: | |
runs-on: ubuntu-latest | |
needs: [ docker-build-pull ] | |
if: github.event.action == 'labeled' && github.event.label.name == 'tester' | |
steps: | |
- name: Get Description | |
env: | |
DESC: ${{ github.event.pull_request.body }} | |
id: get-description | |
run: | | |
body=$(echo "$DESC" | sed -n '/## Description/,/##/{/## Description/b;/##/b;p}') | |
body=$(echo $body|tr -d '\n') | |
echo "description=$body" >> $GITHUB_OUTPUT | |
- name: Discord Testers Notification | |
uses: Kometa-Team/discord-notifications@master | |
with: | |
webhook_id_token: ${{ secrets.BUILD_WEBHOOK }} | |
message: 'The Kometa team are requesting Testers to assist with testing an upcoming feature/bug fix. | |
* For Local Git pull and checkout the `${{ github.event.pull_request.head.ref }}` branch${{ needs.docker-build-pull.outputs.extra-text }} | |
* For Docker use the `kometateam/kometa:${{ needs.docker-build-pull.outputs.tag-name }}` image to do your testing | |
Please report back either here or on the original GitHub Pull Request' | |
title: ${{ github.event.pull_request.title }} | |
description: ${{ steps.get-description.outputs.description }} | |
url: https://github.com/Kometa-Team/${{ vars.REPO_NAME }}/pull/${{ github.event.number }} | |
color: ${{ vars.COLOR_SUCCESS }} | |
username: ${{ vars.BOT_NAME }} | |
avatar_url: ${{ vars.BOT_IMAGE }} | |
author: ${{ vars.GIT_NAME }} | |
author_icon_url: ${{ vars.GIT_IMAGE }} | |
update-testers: | |
runs-on: ubuntu-latest | |
needs: [ docker-build-pull ] | |
if: github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'tester') | |
steps: | |
- name: Discord Testers Notification | |
uses: Kometa-Team/discord-notifications@master | |
with: | |
webhook_id_token: ${{ secrets.BUILD_WEBHOOK }} | |
message: 'New Commit Pushed to `${{ needs.docker-build-pull.outputs.tag-name }}`: Part ${{ needs.docker-build-pull.outputs.part_value }}' | |
title: ${{ github.event.pull_request.title }} | |
description: ${{ needs.docker-build-pull.outputs.commit-msg }} | |
url: https://github.com/Kometa-Team/${{ vars.REPO_NAME }}/pull/${{ github.event.number }} | |
color: ${{ vars.COLOR_SUCCESS }} | |
username: ${{ vars.BOT_NAME }} | |
avatar_url: ${{ vars.BOT_IMAGE }} | |
author: ${{ vars.GIT_NAME }} | |
author_icon_url: ${{ vars.GIT_IMAGE }} |