site #540
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
# see https://github.com/actions/starter-workflows/blob/main/pages/jekyll.yml | |
name: site | |
on: | |
push: {branches: [main], tags-ignore: ['**']} | |
pull_request: | |
schedule: [{cron: '0 10 * * 6'}] # M H d m w (Sat 10:00) | |
permissions: | |
# allow GITHUB_TOKEN to deploy to GitHub Pages | |
contents: read | |
pages: write | |
id-token: write | |
concurrency: {group: "${{ github.ref }}-pages", cancel-in-progress: true} | |
env: | |
SITE_PREFIX: state-of-open-source-ai | |
jobs: | |
check: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: {fetch-depth: 0} | |
- uses: actions/setup-python@v4 | |
with: {python-version: '3.x'} | |
- run: pip install -r requirements.txt pyyaml | |
- name: check CITATION.cff & .zenodo.json | |
run: | | |
python <<EOF | |
import json, yaml | |
cff = yaml.safe_load(open("CITATION.cff")) | |
zen = json.load(open(".zenodo.json")) | |
assert cff['title'] == zen['title'] + " Book" | |
assert len(cff['authors']) - 1 == len(zen['creators']) | |
for cauth, zauth in zip(cff['authors'][:-1], zen['creators']): | |
assert zauth['name'] == f"{cauth['family-names']}, {cauth['given-names']}" | |
assert zauth.get('affiliation', "") == cauth.get('affiliation', "") | |
assert zauth.get('orcid', "") == cauth.get('orcid', "").rsplit("/", 1)[-1] | |
assert [{'name': cff['authors'][-1]['name'], 'type': "Other"}] == zen['contributors'] | |
assert cff['abstract'] == zen['description'] | |
assert cff['url'] == zen['related_identifiers'][0]['identifier'] | |
assert cff['keywords'] == zen['keywords'] | |
EOF | |
- name: linkcheck | |
# https://jupyterbook.org/en/stable/reference/cli.html | |
run: jupyter-book build --builder linkcheck --warningiserror --nitpick --keep-going . | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: {fetch-depth: 0} | |
- uses: actions/setup-python@v4 | |
with: {python-version: '3.x'} | |
- id: pages | |
uses: actions/configure-pages@v3 | |
- run: pip install -r requirements.txt | |
- name: jupyter-book build | |
run: | | |
sudo apt update -qq | |
sudo apt install -qq ghostscript fonts-freefont-otf # https://stackoverflow.com/a/69012150 | |
sed -ri 's#^(\s*baseurl:).*#\1 ${{ steps.pages.outputs.base_url }}/'$SITE_PREFIX'#g' _config.yml | |
jupyter-book build --builder dirhtml --warningiserror --nitpick --keep-going . | |
# fix https://github.com/executablebooks/jupyter-book/issues/2066 | |
sed -ri 's#(.*link rel="canonical" href=".*)\.html(".*)#\1/\2#' _build/dirhtml/*/index.html | |
jupyter-book build --builder latex --warningiserror --nitpick --keep-going . | |
cd _build/latex | |
# fix contrib.rocks | |
mv state-of-open-source-ai contrib-rocks.svg | |
convert contrib-rocks.svg contrib-rocks.png || : | |
sed -ri 's/(.*includegraphics\{\{)state-of-open-source-ai(\}\}.*)/\1contrib-rocks.png\2/g' book.tex | |
# fix undefined in FreeFont | |
sed -ri \ | |
-e 's/[🆕🌈🎉💪💬💻📝📥🔠🔌🛠␂↔️⚙️]//g' \ | |
-e 's/🔴/☒/g' \ | |
-e 's/🟡/☐/g' \ | |
-e 's/🟢/☑/g' \ | |
book.tex | |
# insert PDF cover | |
curl -fsSLO https://static.premai.io/book/cover.pdf | |
- uses: xu-cheng/latex-action@v3 | |
with: | |
working_directory: _build/latex | |
root_file: book.tex | |
args: -pdf -dvi- -ps- -file-line-error -f -interaction=nonstopmode | |
latexmk_use_xelatex: true | |
env: | |
XINDYOPTS: -L english -C utf8 -M sphinx.xdy | |
continue-on-error: true | |
- name: prepare _site pages | |
run: | | |
mkdir _site | |
mv _build/dirhtml _site/$SITE_PREFIX | |
mv _build/latex/book.pdf _site/$SITE_PREFIX.pdf | |
sed "s#DESTINATION#${{ steps.pages.outputs.base_url }}/$SITE_PREFIX#g" .redirect-template.html > _site/index.html | |
- uses: actions/upload-pages-artifact@v2 | |
deploy: | |
if: github.ref == 'refs/heads/main' | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
runs-on: ubuntu-latest | |
needs: [check, build] | |
steps: | |
- id: deployment | |
uses: actions/deploy-pages@v2 |