106 lines
3.9 KiB
YAML
106 lines
3.9 KiB
YAML
name: Check Broken Docs Links in github/github
|
|
|
|
# **What it does**: This checks for any broken docs.github.com links in github/github
|
|
# **Why we have it**: Make sure all docs in github/github are up to date
|
|
# **Who does it impact**: Docs engineering, people on GitHub
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
schedule:
|
|
- cron: '20 16 * * 1' # Run every Monday at 16:20 UTC / 8:20 PST
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
# **IMPORTANT:** Do not change the FREEZE environment variable set here!
|
|
# This workflow runs on a recurring basis. To temporarily disable it (e.g.,
|
|
# during a docs deployment freeze), add an Actions Secret to the repo settings
|
|
# called `FREEZE` with a value of `true`. To re-enable workflow, simply
|
|
# delete that Secret from the repo settings. The environment variable here
|
|
# will duplicate that Secret's value for later evaluation.
|
|
env:
|
|
FREEZE: ${{ secrets.FREEZE }}
|
|
|
|
jobs:
|
|
check_github_github_links:
|
|
if: github.repository == 'github/docs-internal'
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
# need to use a token from a user with access to github/github for this step
|
|
GITHUB_TOKEN: ${{ secrets.DOCS_BOT_FR }}
|
|
FIRST_RESPONDER_PROJECT: Docs content first responder
|
|
REPORT_AUTHOR: docubot
|
|
REPORT_LABEL: github github broken link report
|
|
REPORT_REPOSITORY: github/docs-content
|
|
steps:
|
|
- if: ${{ env.FREEZE == 'true' }}
|
|
run: |
|
|
echo 'The repo is currently frozen! Exiting this workflow.'
|
|
exit 1 # prevents further steps from running
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
|
with:
|
|
# To prevent issues with cloning early access content later
|
|
persist-credentials: 'false'
|
|
|
|
- name: Clone docs-early-access
|
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
|
with:
|
|
repository: github/docs-early-access
|
|
token: ${{ secrets.DOCUBOT_REPO_PAT }}
|
|
path: docs-early-access
|
|
ref: main
|
|
|
|
- name: Setup Node
|
|
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516
|
|
with:
|
|
node-version: '16.17.0'
|
|
cache: npm
|
|
|
|
- name: Merge docs-early-access repo's folders
|
|
run: .github/actions-scripts/merge-early-access.sh
|
|
|
|
- name: Install Node.js dependencies
|
|
run: npm ci
|
|
|
|
- name: Build server
|
|
run: npm run build
|
|
|
|
- name: Start server in the background
|
|
env:
|
|
NODE_ENV: production
|
|
PORT: 4000
|
|
run: |
|
|
|
|
node server.js &
|
|
sleep 5
|
|
curl --retry-connrefused --retry 3 -I http://localhost:4000/
|
|
|
|
- name: Run broken github/github link check
|
|
run: |
|
|
script/check-github-github-links.js > broken_github_github_links.md
|
|
|
|
# check-github-github-links.js returns 0 if no links are broken, and 1 if any links
|
|
# are broken. When an Actions step's exit code is 1, the action run's job status
|
|
# is failure and the run ends. The following steps create an issue for the
|
|
# broken link report only if any links are broken, so `if: ${{ failure() }}`
|
|
# ensures the steps run despite the previous step's failure of the job.
|
|
#
|
|
# https://docs.github.com/actions/reference/context-and-expression-syntax-for-github-actions#job-status-check-functions
|
|
|
|
- if: ${{ failure() && env.FREEZE != 'true' }}
|
|
name: Get title for issue
|
|
id: check
|
|
run: echo "title=$(head -1 broken_github_github_links.md)" >> $GITHUB_OUTPUT
|
|
- if: ${{ failure() && env.FREEZE != 'true'}}
|
|
name: Create issue from file
|
|
id: github-github-broken-link-report
|
|
uses: peter-evans/create-issue-from-file@433e51abf769039ee20ba1293a088ca19d573b7f
|
|
with:
|
|
token: ${{ env.GITHUB_TOKEN }}
|
|
title: ${{ steps.check.outputs.title }}
|
|
content-filepath: ./broken_github_github_links.md
|
|
repository: ${{ env.REPORT_REPOSITORY }}
|
|
labels: ${{ env.REPORT_LABEL }}
|