Repo sync #1095
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: 'Orphaned features check' | |
| # This workflow opens deletion PRs for unused data/features entries so stale entries | |
| # do not stay in the repo. | |
| on: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: '20 16 * * 1' | |
| pull_request: | |
| paths: | |
| - .github/workflows/orphaned-features-check.yml | |
| # Dependency changes can break the orphaned-features script. | |
| - 'package*.json' | |
| - 'src/data-directory/scripts/find-orphaned-features/**' | |
| - .github/actions/clone-translations/action.yml | |
| - .github/actions/node-npm-setup/action.yml | |
| permissions: | |
| contents: read | |
| jobs: | |
| orphaned-features-check: | |
| if: ${{ github.repository == 'github/docs-internal' }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout English repo | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| # A PAT triggers CI on the PR; GITHUB_TOKEN events do not start workflows. | |
| token: ${{ secrets.DOCS_BOT_PAT_BASE }} | |
| # Translations can lag English, so clone them before deciding that a feature is unused. | |
| - name: Clone all translations | |
| uses: ./.github/actions/clone-translations | |
| with: | |
| token: ${{ secrets.DOCS_BOT_PAT_BASE }} | |
| - uses: ./.github/actions/node-npm-setup | |
| - name: Check for orphaned features | |
| env: | |
| # The gh CLI reads GITHUB_TOKEN. | |
| GITHUB_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }} | |
| DRY_RUN: ${{ github.event_name == 'pull_request'}} | |
| run: | | |
| set -e | |
| npm run find-orphaned-features -- find --verbose --output /tmp/orphaned-features.json | |
| if [ -f /tmp/orphaned-features.json ]; then | |
| echo "Orphaned features found:" | |
| cat /tmp/orphaned-features.json | |
| else | |
| echo "No orphaned features found" | |
| exit 0 | |
| fi | |
| npm run find-orphaned-features -- delete --verbose /tmp/orphaned-features.json | |
| git status | |
| # Pull request runs exercise the tooling without pushing deletion PRs. | |
| if [ "$DRY_RUN" = "true" ]; then | |
| echo "Dry-run mode when run in a pull request" | |
| exit 0 | |
| fi | |
| git config --global user.name "docs-bot" | |
| git config --global user.email "77750099+docs-bot@users.noreply.github.com" | |
| date=$(date '+%Y-%m-%d-%H-%M') | |
| branchname=orphaned-features-$date-$GITHUB_RUN_ID | |
| git checkout -b $branchname | |
| git commit -a -m "Delete orphaned features $date" | |
| git push origin $branchname | |
| body=$(cat <<-EOM | |
| Found with the 'npm run find-orphaned-features' script. | |
| The orphaned features workflow file .github/workflows/orphaned-features-check.yml | |
| runs every Monday at 16:20 UTC / 8:20 PST. | |
| The first responder should just spot-check some of the orphans | |
| to make sure they aren't referenced anywhere | |
| and then approve and merge the pull request. | |
| For more information, see [Doc: Orphaned Features](https://github.com/github/technical-content/blob/main/engineering/orphaned-features.md). | |
| Generated by the [orphaned features workflow run]($GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID). | |
| EOM | |
| ) | |
| gh pr create \ | |
| --title "Delete orphaned features ($date)" \ | |
| --body "$body" \ | |
| --repo github/docs-internal \ | |
| --label docs-content-fr,workflow-generated | |
| - uses: ./.github/actions/create-workflow-failure-issue | |
| id: create-failure-issue | |
| if: ${{ failure() && github.event_name == 'schedule' }} | |
| with: | |
| token: ${{ secrets.DOCS_BOT_PAT_BASE }} | |
| - uses: ./.github/actions/slack-alert | |
| if: ${{ failure() && github.event_name == 'schedule' }} | |
| with: | |
| slack_token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }} | |
| issue_url: ${{ steps.create-failure-issue.outputs.issue_url }} |