Skip to content

chore: more precommit hooks #469

chore: more precommit hooks

chore: more precommit hooks #469

Workflow file for this run

name: Generate docs
on:
pull_request:
branches:
- main
paths:
- '.github/**'
- 'docs/**'
push:
branches:
- main
env:
BAZELISK_VERSION: 1.23.0
MDBOOK_VERSION: 0.4.42
GH_REPO: ${{ github.repository }}
MIN_VERSION: ${{ github.event.inputs.MIN_VERSION || '0.1.0' }}
FILTER_VERSION: ${{ github.event.inputs.FILTER_VERSION || '' }}
RELEASE_TAG_REGEX: ^\d+\.\d+\.\d+$
jobs:
setup:
runs-on: ubuntu-latest
defaults:
run:
shell: bash --noprofile --norc -euo pipefail {0}
steps:
- name: get release tags that match $release_tag_regex
id: get_release_tags
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
RELEASES_JSON="$(
curl -s --fail-with-body \
-H "Authorization: token $GH_TOKEN" \
"https://api.github.com/repos/$GH_REPO/tags"
)"
RELEASES_JSON_FILTERED="$(echo "$RELEASES_JSON" |
jq -c \
--arg RELEASE_TAG_REGEX "$RELEASE_TAG_REGEX" \
--arg FILTER_VERSION "$FILTER_VERSION" \
--arg MIN_VERSION "$MIN_VERSION" '
[ "main" ] +
([.[].name |
select(
(test($RELEASE_TAG_REGEX) and
(. | split(".") | map(tonumber) >= ($MIN_VERSION | split(".") | map(tonumber)))
) and ($FILTER_VERSION == "" or . == $FILTER_VERSION)
)
])
'
)"
echo "releases=$RELEASES_JSON_FILTERED"
echo "releases=$RELEASES_JSON_FILTERED" >> "$GITHUB_OUTPUT"
outputs:
releases: ${{ steps.get_release_tags.outputs.releases || '[]' }}
build:
runs-on: ubuntu-latest
needs: setup
defaults:
run:
shell: bash --noprofile --norc -euo pipefail {0}
strategy:
fail-fast: false
matrix:
ref: ${{ fromJson(needs.setup.outputs.releases) }}
env:
WORKSPACE: ${{ github.workspace }}
BIN: ${{ github.workspace }}/bin
steps:
- name: Checkout $REF
uses: actions/checkout@v4
with:
ref: ${{ matrix.ref }}
- name: Patch $REF
env:
REF: ${{ matrix.ref }}
run: |
[[ "$REF" == "main" ]] && exit
PATCH=".github/docs-${REF}.patch"
URL="https://raw.githubusercontent.com/$GH_REPO/main/$PATCH"
echo "$URL"
curl -LO --fail-with-body "$URL" || {
echo "No patch found for $REF, exiting..."
exit 0
}
echo "Patching ref: $REF"
git apply "$(basename "$PATCH")"
- name: Install bazelisk
run: |
BAZELISK="bazelisk-linux-amd64"
URL="https://github.com/bazelbuild/bazelisk/releases/download/v$BAZELISK_VERSION/$BAZELISK"
echo "URL=$URL"
curl -LO --fail-with-body "$URL"
chmod +x "$BAZELISK"
mkdir -p "$BIN"
mv "$BAZELISK" "$BIN/bazel"
- name: Install mdbook
run: |
MDBOOK="mdbook-v$MDBOOK_VERSION-x86_64-unknown-linux-gnu.tar.gz"
URL="https://github.com/rust-lang/mdBook/releases/download/v$MDBOOK_VERSION/$MDBOOK"
echo "URL=$URL"
curl -LO --fail-with-body "$URL"
tar -xvf "$MDBOOK"
chmod +x mdbook
mkdir -p "$BIN"
mv mdbook "$BIN/mdbook"
- name: bazel run //:generate_docs
run: |
"$BIN/bazel" run //:generate_docs
working-directory: ${{ github.workspace }}/docs
- name: mdbook build root
run: |
"$BIN/mdbook" build
working-directory: ${{ github.workspace }}/docs/root
if: ${{ matrix.ref == 'main' }}
- name: mdbook build docs
run: |
"$BIN/mdbook" build
working-directory: ${{ github.workspace }}/docs
- name: Upload docs root
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.ref }}-root
path: ${{ github.workspace }}/docs/root/book
if-no-files-found: error
if: ${{ github.event_name != 'pull_request' && matrix.ref == 'main' }}
- name: Upload docs/book
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.ref }}
path: ${{ github.workspace }}/docs/book
if-no-files-found: error
if: ${{ github.event_name != 'pull_request' }}
deploy:
runs-on: ubuntu-latest
needs: build
if: ${{ github.event_name != 'pull_request' }}
defaults:
run:
shell: bash --noprofile --norc -euo pipefail {0}
env:
WORKSPACE: ${{ github.workspace }}
steps:
- name: Fetch artifacts (first root)
uses: actions/download-artifact@v4
with:
name: main-root
path: ${{ github.workspace }}/docs/book
- name: Fetch artifacts (then others)
uses: actions/download-artifact@v4
with:
path: ${{ github.workspace }}/docs/pages
- name: Install pages
run: mv "$WORKSPACE/docs/pages/"* "$WORKSPACE/docs/book/"
- name: publish
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_branch: docs
publish_dir: ./docs/book