dns-blocklists/.github/workflows/release.yml
dependabot[bot] 146a11dc04
Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-11 23:39:54 +00:00

142 lines
4.3 KiB
YAML

name: Release
on:
push:
branches:
- main
permissions:
actions: write
contents: write
issues: write
pull-requests: write
jobs:
release:
runs-on: ubuntu-latest
if: contains(github.event.head_commit.message, 'release')
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Generate release tag
run: |
repo_version=$(printf '%o' "$(date -u +"%Y")")$(date +'%Y.%-j').$((`date +%s` % 86400 ))
echo "release_tag=$repo_version" >> $GITHUB_ENV
- name: Generate issue list
run: echo "issue_list=$(gh issue list -l fixed-pending-release | cut -f1 | sed 's/^/#/' | sed 's/$/ /' | tr -d '\n\t\r')" >> $GITHUB_ENV
env:
GITHUB_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
- name: Create release
uses: ncipollo/release-action@v1.18.0
with:
tag: ${{ env.release_tag }}
name: ${{ env.release_tag }}
body: ${{ env.issue_list }}
purge:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Determine URLs to purge
id: purge_urls
run: |
baseUrl="https://cdn.jsdelivr.net/gh/${{ github.repository }}@latest"
urls=""
for f in `find adblock controld dnsmasq domains hosts ips pac rpz wildcard -name "*.txt" -o -name "*.pac" -o -name "*.json" -type f`; do
urls+="${baseUrl}/${f},"
done
echo "urls=${urls%,*}" >> $GITHUB_OUTPUT
- name: Purge CDN cache
uses: egad13/purge-jsdelivr-cache@v1.1.0
with:
url: ${{ steps.purge_urls.outputs.urls }}
needs: release
close-issues:
runs-on: ubuntu-latest
steps:
- name: Comment and close fixed issues
uses: gcampbell-msft/fixed-pending-release@main
with:
token: ${{ github.token }}
label: fixed-pending-release
removeLabel: true
applyToAll: true
message: "This issue has been fixed in release [${releaseTag}](${releaseUrl})"
needs: release
relabel-issues:
runs-on: ubuntu-latest
steps:
- name: relabel
uses: actions/github-script@v7
with:
github-token: ${{ secrets.PAT }}
script: |
const labelToFind = 'scheduled-next-release';
const labelToAdd = 'fixed-pending-release';
const { data: issues } = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
labels: labelToFind,
per_page: 100
});
for (const issue of issues) {
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
name: labelToFind
});
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
labels: [labelToAdd]
});
}
needs: [release, close-issues]
stale:
runs-on: ubuntu-latest
steps:
- uses: DeMoorJasper/stale@v2.0.1
with:
repo-token: ${{ github.token }}
stale-message: 'This issue has been inactive for 7 days. Please add a comment to keep it open. Otherwise, it will be closed in 7 days.'
days-before-stale: 7
days-before-close: 7
stale-label: 'no-issue-activity'
dry-run: 'false'
needs: [release, close-issues]
release-cleanup:
runs-on: ubuntu-latest
steps:
- name: Delete old releases
uses: sgpublic/delete-release-action@v1.2
with:
release-drop: true
release-keep-count: 5
release-drop-tag: true
env:
GITHUB_TOKEN: ${{ github.token }}
needs: release
workflow-cleanup:
runs-on: ubuntu-latest
steps:
- name: Delete old workflow runs
uses: Mattraks/delete-workflow-runs@v2.0.6
with:
token: ${{ github.token }}
repository: ${{ github.repository }}
retain_days: 1
keep_minimum_runs: 0
needs: [release, close-issues, release-cleanup]