Skip to content

Auto Update

Auto Update #2

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 }}
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 --abbrev-ref HEAD)" >> $GITHUB_OUTPUT
echo "WEB_HASH=$(git -C "./dev/web" rev-parse --abbrev-ref HEAD)" >> $GITHUB_OUTPUT
echo "FTL_HASH=$(git -C "./dev/FTL" rev-parse --abbrev-ref HEAD)" >> $GITHUB_OUTPUT
- name: Hashes for pi-hole/pi-hole are different
if: ${{ steps.old-hashes.outputs.CORE_HASH == steps.new-hashes.outputs.CORE_HASH }}
run: exit 1
- name: Hashes for pi-hole/web are different
if: ${{ steps.old-hashes.outputs.WEB_HASH == steps.new-hashes.outputs.WEB_HASH }}
run: exit 1
- name: Hashes for pi-hole/FTL are different
if: ${{ 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
update:
concurrency: update
needs: [check]
if: ${{ needs.check.result == 'success' }}
runs-on: ubuntu-latest
continue-on-error: true
#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: Echo tag
run: echo ${{ steps.tag.outputs.RESULT }}
#- name: Commit and Push changes
# if: ${{ steps.tag.outputs.RESULT != '' }}
# uses: uses: stefanzweifel/git-auto-commit-action@v5
# 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