Skip to content

Add auto-update workflow #11

Add auto-update workflow

Add auto-update workflow #11

Workflow file for this run

name: Auto Update
on:
#schedule:
# - cron: '0 0 * * *'
workflow_dispatch:
env:
REF_CORE: development-v6
REF_WEB: development-v6
REF_FTL: development-v6
# @TODO when v6 is released these should be set to master
jobs:
check:
concurrency: check
runs-on: ubuntu-latest
continue-on-error: true
outputs:
CORE_HASH: ${{ steps.new-hashes.outputs.CORE_HASH }}
WEB_HASH: ${{ steps.new-hashes.outputs.WEB_HASH }}
FTL_HASH: ${{ steps.new-hashes.outputs.FTL_HASH }}
STATUS: ${{ steps.status.outputs.RESULT }}
steps:
- name: Checkout own repository
uses: actions/checkout@v4
- name: Checkout pi-hole/pi-hole repository
uses: actions/checkout@v4
with:
repository: pi-hole/pi-hole
ref: ${{ env.REF_CORE }}
path: ./dev/core
- name: Checkout pi-hole/web repository
uses: actions/checkout@v4
with:
repository: pi-hole/web
ref: ${{ env.REF_WEB }}
path: ./dev/web
- name: Checkout pi-hole/FTL repository
uses: actions/checkout@v4
with:
repository: pi-hole/FTL
ref: ${{ env.REF_FTL }}
path: ./dev/FTL
- name: Set old hashes
id: old-hashes
run: |
echo "CORE_HASH=$(sed -n "s/^ REF_CORE: \([[:alnum:]]*\).*$/\1/p" ./.github/workflows/build.yml)" >> $GITHUB_OUTPUT
echo "WEB_HASH=$(sed -n "s/^ REF_WEB: \([[:alnum:]]*\).*$/\1/p" ./.github/workflows/build.yml)" >> $GITHUB_OUTPUT
echo "FTL_HASH=$(sed -n "s/^ REF_FTL: \([[:alnum:]]*\).*$/\1/p" ./.github/workflows/build.yml)" >> $GITHUB_OUTPUT
- name: Set new hashes
id: new-hashes
run: |
echo "CORE_HASH=$(git -C "./dev/core" rev-parse HEAD)" >> $GITHUB_OUTPUT
echo "WEB_HASH=$(git -C "./dev/web" rev-parse HEAD)" >> $GITHUB_OUTPUT
echo "FTL_HASH=$(git -C "./dev/FTL" rev-parse HEAD)" >> $GITHUB_OUTPUT
- name: Old hashes are not empty
if: ${{ steps.old-hashes.outputs.CORE_HASH == '' || steps.old-hashes.outputs.WEB_HASH == '' || steps.old-hashes.outputs.FTL_HASH == '' }}
run: exit 1
- name: At least one hash is different
if: ${{ steps.old-hashes.outputs.CORE_HASH == steps.new-hashes.outputs.CORE_HASH && steps.old-hashes.outputs.WEB_HASH == steps.new-hashes.outputs.WEB_HASH && steps.old-hashes.outputs.FTL_HASH == steps.new-hashes.outputs.FTL_HASH}}
run: exit 1
- name: Apply patches (core)
id: patch-core
uses: ./.github/actions/patch
with:
patches_prefix: core
git_path: ./dev/core
- name: Apply patches (web)
id: patch-web
uses: ./.github/actions/patch
with:
patches_prefix: web
git_path: ./dev/web
- name: Apply patches (FTL)
id: patch-FTL
uses: ./.github/actions/patch
with:
patches_prefix: FTL
git_path: ./dev/FTL
- name: Set status
id: status
run: echo "RESULT=true" >> $GITHUB_OUTPUT
update:
concurrency: update
needs: [check]
if: ${{ needs.check.outputs.STATUS == 'true' }}
runs-on: ubuntu-latest
#permissions:
# contents: write
steps:
- name: Checkout own repository
uses: actions/checkout@v4
- name: Replace refs in build workflow
run: |
sed 's/ REF_CORE:.*$/ REF_CORE: ${{ needs.check.outputs.CORE_HASH }}/' -i ./.github/workflows/build.yml
sed 's/ REF_WEB:.*$/ REF_WEB: ${{ needs.check.outputs.WEB_HASH }}/' -i ./.github/workflows/build.yml
sed 's/ REF_FTL:.*$/ REF_FTL: ${{ needs.check.outputs.FTL_HASH }}/' -i ./.github/workflows/build.yml
- name: Is repository modified?
id: modified
run: |
echo "RESULT=$([ "git diff" != "" ] && echo yes || echo no)" >> $GITHUB_OUTPUT
- name: Create tag
if: ${{ steps.modified.outputs.RESULT == 'yes' }}
id: tag
run: echo "RESULT=$(bash ./scripts/tag.sh)" >> $GITHUB_OUTPUT
- name: Print tag and changes
run: |
echo "New tag: ${{ steps.tag.outputs.RESULT }}"
git diff
- name: Commit and Push changes
if: ${{ steps.tag.outputs.RESULT != '' && github.event_name == 'schedule' }}
uses: uses: stefanzweifel/git-auto-commit-action@v5

Check failure on line 134 in .github/workflows/update.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/update.yml

Invalid workflow file

You have an error in your yaml syntax on line 134
with:
commit_message: 'Automatic update to ${{ steps.tag.outputs.RESULT }}'
file_pattern: ./.github/workflow/build.yml
tagging_message: ${{ steps.tag.outputs.RESULT }}
push_options: --dry-run