docs/manual: new manual! #461
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
on: | |
push: | |
pull_request: | |
merge_group: | |
name: CI | |
jobs: | |
test-software: | |
if: (github.event.ref == 'refs/heads/main' || github.event_name == 'pull_request') || github.repository != 'GlasgowEmbedded/glasgow' | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: | |
- '3.8' | |
- '3.9' | |
- '3.10' | |
- '3.11' | |
- 'pypy-3.8' | |
- 'pypy-3.9' | |
allow-failure: | |
- false | |
include: | |
- python-version: '3.12-dev' | |
allow-failure: true | |
continue-on-error: '${{ matrix.allow-failure }}' | |
name: 'test-software (${{ matrix.python-version }})' | |
steps: | |
- name: Preserve caches | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cache/wasmtime | |
~/.cache/YoWASP | |
~/.cache/GlasgowEmbedded | |
key: ${{ runner.os }} | |
- name: Check out source code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set up PDM | |
uses: pdm-project/setup-pdm@v3 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
working-directory: ./software | |
run: pdm install -G :all | |
- name: Run tests | |
working-directory: ./software | |
env: | |
YOSYS: yowasp-yosys | |
NEXTPNR_ICE40: yowasp-nextpnr-ice40 | |
ICEPACK: yowasp-icepack | |
run: pdm run test | |
build-firmware: | |
if: (github.event.ref == 'refs/heads/main' || github.event_name == 'pull_request') || github.repository != 'GlasgowEmbedded/glasgow' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out source code | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install sdcc | |
- name: Build libfx2 | |
working-directory: ./vendor/libfx2/firmware | |
run: make | |
- name: Build firmware | |
working-directory: ./firmware | |
run: make | |
build-manual: | |
if: (github.event.ref == 'refs/heads/main' || github.event_name == 'pull_request') || github.repository != 'GlasgowEmbedded/glasgow' | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: docs/manual | |
steps: | |
- name: Check out source code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set up PDM | |
uses: pdm-project/setup-pdm@v3 | |
- name: Install dependencies | |
run: | | |
pdm install | |
- name: Build documentation | |
run: | | |
pdm run build | |
- name: Upload documentation archive | |
uses: actions/upload-artifact@v3 | |
with: | |
name: docs | |
path: docs/manual/out | |
required: # group all required workflows into one to avoid reconfiguring this in Actions settings | |
if: (github.event.ref == 'refs/heads/main' || github.event_name == 'pull_request') || github.repository != 'GlasgowEmbedded/glasgow' | |
needs: | |
- test-software | |
- build-firmware | |
- build-manual | |
runs-on: ubuntu-latest | |
steps: | |
- run: | | |
true | |
publish-manual: | |
needs: build-manual | |
if: (github.repository == 'GlasgowEmbedded/glasgow' && github.event.ref == 'refs/heads/main') || github.repository != 'GlasgowEmbedded/glasgow' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Check out source code | |
uses: actions/checkout@v3 | |
- if: github.repository == 'GlasgowEmbedded/glasgow' && github.event.ref == 'refs/heads/main' | |
name: Inject documentation from artifact under latest/ | |
uses: actions/download-artifact@v3 | |
with: | |
name: docs | |
path: pages/latest/ | |
- if: github.repository == 'GlasgowEmbedded/glasgow' && github.event.ref == 'refs/heads/main' | |
name: Add CNAME and redirect from the root to latest/ | |
run: | | |
echo >pages/CNAME 'glasgow-embedded.org' | |
cat >pages/index.html <<END | |
<!DOCTYPE html> | |
<html lang="en-US"> | |
<meta charset="utf-8"> | |
<title>Redirecting…</title> | |
<link rel="canonical" href="latest/"> | |
<script>location="latest/"</script> | |
<meta http-equiv="refresh" content="0; url=latest/"> | |
<meta name="robots" content="noindex"> | |
<h1>Redirecting…</h1> | |
<a href="latest/">Click here if you are not redirected.</a> | |
</html> | |
END | |
- if: github.repository != 'GlasgowEmbedded/glasgow' | |
name: Inject documentation from artifact under {branch}/ | |
uses: actions/download-artifact@v3 | |
with: | |
name: docs | |
path: pages/${{ github.ref_name }}/ | |
- name: Disable Jekyll | |
run: | | |
touch pages/.nojekyll | |
- name: Publish documentation for a branch | |
uses: JamesIves/github-pages-deploy-action@releases/v4 | |
with: | |
folder: pages/ | |
clean: true | |
single-commit: true |