Update Github actions #225
Workflow file for this run
This file contains 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: on PR | |
# This workflow is triggered on pull requests to the repository. | |
# It runs a job to build the docvs, and check for broken links in the files changed in the PR on the built static pages. | |
# It checks for spelling errors in the files changed in the PR. | |
on: | |
pull_request | |
jobs: | |
build: | |
name: 📦 Build & 🌍 Check links | |
runs-on: ubuntu-latest | |
outputs: | |
html_lychee_exited: ${{ steps.stringify.outputs.lychee_exited }} | |
html_lychee_file: ${{ steps.stringify.outputs.lychee_file }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- run: pip install nbconvert==7.0.0 packaging | |
- name: Convert Jupyter notebooks | |
run: | | |
shopt -s globstar | |
jupyter-nbconvert --to markdown **/*.ipynb --ExtractOutputPreprocessor.enabled=False | |
shopt -u globstar | |
shell: bash | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- name: Install vuepress | |
run: yarn global add vuepress | |
- name: Install package.json | |
run: yarn | |
- name: Build static site with vuepress | |
# alias for vuepress build src defined in package.json | |
run: yarn build | |
- name: Get size of files in dist | |
shell: bash | |
run: | | |
du -ah src/.vuepress/dist | |
- name: 'Get built html files' | |
id: html-files | |
run: | | |
html_files=$(find src/.vuepress/dist -name '*.html') | |
html_files="${html_files//$'\n'/ }" | |
html_files="${html_files//$'\r'/ }" | |
echo $html_files | |
echo "all_html_files=${html_files}" >> $GITHUB_OUTPUT | |
- name: 'Check Links' | |
id: lychee | |
uses: lycheeverse/[email protected] | |
env: | |
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
with: | |
args: -v -n -a 403,503,429,200 -i -b 'src/.vuepress/dist' --exclude-mail --include-verbatim -- ${{ steps.html-files.outputs.all_html_files }} | |
output: ./lychee/htmlfiles.md | |
jobSummary: true | |
- name: 'Outputs as strings' | |
id: stringify | |
run: | | |
EXIT_CODE_STRING="$( printf '%d' "${{ env.lychee_exit_code }}" )" | |
echo "lychee_exited=${EXIT_CODE_STRING}" >> $GITHUB_OUTPUT | |
if [ $EXIT_CODE_STRING -eq 0 ]; then | |
echo "lychee_file=No broken links found" >> $GITHUB_OUTPUT | |
exit 0 | |
fi | |
if [ $EXIT_CODE_STRING -eq 1 ]; then | |
MD_OUT="$( cat ./lychee/htmlfiles.md )" | |
MD_OUT="${MD_OUT//'%'/'%25'}" | |
MD_OUT="${MD_OUT//$'\n'/'%0A'}" | |
MD_OUT="${MD_OUT//$'\r'/'%0D'}" | |
echo "text<<EOF" >> $GITHUB_OUTPUT | |
echo "$MD_OUT" >> $GITHUB_OUTPUT | |
echo "EOF" >> $GITHUB_OUTPUT | |
echo "lychee_file=${MD_OUT}" >> $GITHUB_OUTPUT | |
fi | |
link_fail: | |
name: 🚨 Fail if links are broken | |
runs-on: ubuntu-latest | |
needs: build | |
if: ${{ needs.build.outputs.html_lychee_exited != 0 }} | |
steps: | |
- name: 'Fail if links are broken' | |
run: | | |
echo "Some links are broken" | |
exit 1 | |
check_spelling: | |
name: ✍️ Check spelling | |
runs-on: ubuntu-latest | |
outputs: | |
fail_spelling: ${{ steps.fail.outputs.fail_spelling }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 | |
- name: 'Check Grammar' | |
id: cspell | |
uses: streetsidesoftware/cspell-action@v2 | |
with: | |
files: | | |
**/*.{md,html,ipynb} | |
strict: false | |
verbose: true |