release #1911
This file contains hidden or 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: 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@v6 | |
| - 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.21.0 | |
| with: | |
| tag: ${{ env.release_tag }} | |
| name: ${{ env.release_tag }} | |
| body: ${{ env.issue_list }} | |
| 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@v8 | |
| 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] | |
| purge: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Determine URLs to purge | |
| id: purge_urls | |
| run: | | |
| baseUrl="https://cdn.jsdelivr.net/gh/${{ github.repository }}@latest" | |
| urls="" | |
| for f in `find adblock adguard controld dnsmasq domains hosts ips pac rpz share 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, relabel-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 14 days. Please add a comment to keep it open. Otherwise, it will be closed in 7 days.' | |
| days-before-stale: 14 | |
| days-before-close: 7 | |
| stale-label: 'no-issue-activity' | |
| dry-run: 'false' | |
| needs: [release, close-issues, relabel-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: 0 | |
| release-drop-tag: true | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} | |
| needs: [release, close-issues, relabel-issues, purge] | |
| workflow-cleanup: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Delete old workflow runs | |
| uses: Mattraks/delete-workflow-runs@v2.1 | |
| with: | |
| token: ${{ github.token }} | |
| repository: ${{ github.repository }} | |
| retain_days: 0 | |
| keep_minimum_runs: 0 | |
| needs: [release, close-issues, relabel-issues, purge, stale, release-cleanup] |