forked from nim-works/nimskull
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci: split docs deployment from publisher and deploy directly to pages (…
…nim-works#1370) ## Summary 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. ## Details * Added `get` sub-command to `release_manifest` , which allows one to extract binary archive name from a release manifest. * "Generated docs" artifacts are now removed. Instead the generated documentation will be obtained from the release tarball for Linux amd64. This allows docs publishing to run regardless of whether the artifact for the latest release has expired or not. * Documentation deployment will now skip `gh-pages` branch and deploy directly using `actions/deploy-pages` . This allows us to drop the heavyweight `gh-pages` branch and remove the latency between push and page being deployed. * Documentation deployment can now be triggered on-demand in case of a prior failure. * Documentation deployment will now always be done using latest code in `devel` . * Development documentation is also pushed to `/devel` sub-folder. This is preliminary setup for versioned docs in the future. --------- Co-authored-by: Saem Ghani <[email protected]>
- Loading branch information
Showing
5 changed files
with
147 additions
and
32 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/[email protected] | ||
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -25,9 +25,6 @@ jobs: | |
url: ${{ steps.release.outputs.url }} | ||
|
||
steps: | ||
# Publish action needs a checkout | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Obtain latest successful run id | ||
id: finder | ||
run: | | ||
|
@@ -48,17 +45,9 @@ jobs: | |
WORKFLOW: ci.yml | ||
CONCLUSION: success | ||
GH_TOKEN: ${{ github.token }} | ||
GH_REPO: ${{ github.repository }} | ||
|
||
# Download the latest instance of artifacts from a build done previously | ||
- name: Download generated docs | ||
uses: actions/download-artifact@v4 | ||
with: | ||
run-id: ${{ steps.finder.outputs.run_id }} | ||
# Keep up-to-date with ci.yml | ||
name: Generated docs | ||
path: doc/html | ||
github-token: ${{ github.token }} | ||
|
||
- name: Download generated source archive | ||
uses: actions/download-artifact@v4 | ||
with: | ||
|
@@ -87,12 +76,6 @@ jobs: | |
path: release-staging | ||
github-token: ${{ github.token }} | ||
|
||
- name: Publish docs | ||
uses: JamesIves/[email protected] | ||
with: | ||
branch: gh-pages | ||
folder: doc/html | ||
|
||
- id: release-files | ||
name: Create release manifest | ||
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
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