-
Notifications
You must be signed in to change notification settings - Fork 39
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
publisher: split docs deployment into a workflow
Documentation will now be built using a separated workflow that will be run whenever publisher finishes. This allows us to use the latest page deployment code regardless of the commit that triggered publisher. Some auxilliary changes also come along: - New deploy-docs workflow can also be run manually. - "Generated docs" artifacts are now removed. Instead the generated documentation will be obtained from the release tarball for Linux. This is done since artifacts have a timeout to them, which meddle with our ability to run docs deployment at will. - Implemented basic version segmentation: `/devel` subdirectory will now contain the latest devel docs.
- Loading branch information
Showing
3 changed files
with
87 additions
and
27 deletions.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
name: Deploy documentation | ||
on: | ||
# Automatically run after any completed publish | ||
workflow_run: | ||
workflows: | ||
- Publish built artifacts | ||
types: | ||
- completed | ||
|
||
# For manual triggers | ||
workflow_dispatch: | ||
|
||
# Run every script actions in bash | ||
defaults: | ||
run: | ||
shell: bash | ||
|
||
concurrency: doc-publisher | ||
|
||
jobs: | ||
deploy: | ||
runs-on: ubuntu-latest | ||
|
||
permissions: | ||
id-token: write | ||
pages: write | ||
|
||
environment: | ||
name: github-pages | ||
url: ${{ steps.deploy.outputs.page_url }} | ||
|
||
env: | ||
# Triplet to obtain docs from | ||
DOC_TARGET: x86_64-linux-gnu | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Setup latest compiler | ||
uses: nim-works/setup-nimskull@0.1.2 | ||
with: | ||
nimskull-version: "*" # Grab the latest nimskull-version | ||
|
||
- name: Compile release_manifest | ||
run: nim c -d:release -o:release_manifest tools/release_manifest.nim | ||
|
||
- id: versions | ||
name: Grab latest release version | ||
run: | | ||
# Stolen from asdf-nimskull | ||
sort_versions() { | ||
sed 'h; s/[+-]/./g; s/$/.z/; G; s/\n/ /' | | ||
LC_ALL=C sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4 -k 5,5n | awk '{print $2}' | ||
} | ||
all_tags=$(gh release list --json tagName --jq '.[] | .tagName') | ||
latest=$(sort_versions <<<"$all_tags" | tail -n 1) | ||
echo "Latest devel is: $latest" | ||
echo "devel=$latest" >> "$GITHUB_OUTPUT" | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
|
||
- name: Construct devel docs | ||
run: | | ||
tmpdir=$(mktemp -dp "$RUNNER_TEMP" devel.XXXXXXXXXX) | ||
# Get the name of the binary archive for the documentation target | ||
release_archive=$(gh release download "$DEVEL" -p manifest.json -O - | ./release_manifest -f /dev/stdin get "$DOC_TARGET") | ||
# Download the latest release binary | ||
gh release download "$DEVEL" -p "$release_archive" -O "$tmpdir/$release_archive" | ||
# Extract and remove the top-level directory | ||
tar -C "$tmpdir" -xf "$tmpdir/$release_archive" --strip-components=1 | ||
mkdir -p built-docs | ||
cp -rT "$tmpdir/doc/html" built-docs/devel | ||
cp -rT "$tmpdir/doc/html" built-docs | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
DEVEL: ${{ steps.versions.outputs.devel }} | ||
|
||
- uses: actions/upload-pages-artifact@v3 | ||
with: | ||
path: built-docs/ | ||
|
||
- id: deploy | ||
uses: actions/deploy-pages@v4 |
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