Skip to content

Re-enable workspace hack after a release (#385) #757

Re-enable workspace hack after a release (#385)

Re-enable workspace hack after a release (#385) #757

Workflow file for this run

# This whole file is generated by a Rust script under `ci_utils`
# Do NOT edit this file manually.
name: Build and store docs artifact
on:
workflow_dispatch:
# See https://github.com/imjohnbo/ok-to-test/tree/master for an overview
# of how this works.
# I officially hate GitHub for forbidding OpenID Connect tokens in forks.
repository_dispatch:
types: [ok-to-test-command]
push:
branches:
- main
jobs:
build_clis_linux:
name: "Build CLIs (linux)"
runs-on: ubuntu-latest
permissions:
pull-requests: write
checks: write
# Run if it's a PR on the official repo or a push to `main`
if: |
(github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)) ||
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
steps:
- name: Checkout repository from source repo
if: |
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
uses: actions/checkout@v4
- name: Checkout repository from fork
if: |
github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)
uses: actions/checkout@v4
with:
ref: "refs/pull/${{ github.event.client_payload.pull_request.number }}/merge"
- uses: ./.github/actions/create-check
if: ${{ github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Build CLIs (linux)
workflow: "Build and store docs artifacts"
run_id: ${{ github.run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Rust
uses: actions-rust-lang/[email protected]
with:
cache-workspaces: "./libs -> ./target"
- name: Build CLI
run: |
cd libs
cargo build --bin pavex --bin pavexc --release
- name: Store pavex CLI artifact
uses: actions/upload-artifact@v4
with:
name: pavex_cli_linux
path: libs/target/release/pavex
- name: Store pavexc CLI artifact
uses: actions/upload-artifact@v4
with:
name: pavexc_cli_linux
path: libs/target/release/pavexc
- uses: ./.github/actions/finalize-check
if: ${{ always() && github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Build CLIs (linux)
conclusion: ${{ job.status }}
github_token: ${{ secrets.GITHUB_TOKEN }}
tests_linux:
name: "Run tests (linux)"
runs-on: ubuntu-latest
needs:
- build_clis_linux
permissions:
pull-requests: write
checks: write
# Run if it's a PR on the official repo or a push to `main`
if: |
(github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)) ||
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
steps:
- name: Checkout repository from source repo
if: |
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
uses: actions/checkout@v4
- name: Checkout repository from fork
if: |
github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)
uses: actions/checkout@v4
with:
ref: "refs/pull/${{ github.event.client_payload.pull_request.number }}/merge"
- uses: ./.github/actions/create-check
if: ${{ github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Run tests (linux)
workflow: "Build and store docs artifacts"
run_id: ${{ github.run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Rust stable toolchain
uses: actions-rust-lang/[email protected]
with:
components: rustfmt
rustflags: ""
cache-workspaces: "./libs -> ./target"
- name: Download pavex CLI artifact
uses: actions/download-artifact@v4
with:
name: pavex_cli_linux
path: ~/.cargo/bin
- name: Download pavexc CLI artifact
uses: actions/download-artifact@v4
with:
name: pavexc_cli_linux
path: ~/.cargo/bin
- name: Mark pavex as executable
env:
PAVEX: /home/runner/.cargo/bin/pavex
PAVEXC: /home/runner/.cargo/bin/pavexc
run: |
chmod +x ${{ env.PAVEX }}
chmod +x ${{ env.PAVEXC }}
- name: Activate pavex
env:
PAVEX_ACTIVATION_KEY: ${{ secrets.pavex_activation_key }}
run: |
pavex self activate
pavexc self setup
- name: Run tests
working-directory: libs
run: |
cargo test --no-run
cargo test --workspace --exclude="pavex_cli"
- name: Run UI tests
env:
PAVEX_TEST_CLI_PATH: /home/runner/.cargo/bin/pavex
PAVEXC_TEST_CLI_PATH: /home/runner/.cargo/bin/pavexc
working-directory: libs
run: |
cargo test --package pavex_cli
- uses: ./.github/actions/finalize-check
if: ${{ always() && github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Run tests (linux)
conclusion: ${{ job.status }}
github_token: ${{ secrets.GITHUB_TOKEN }}
build_clis_macos:
name: "Build CLIs (macos)"
runs-on: macos-14
permissions:
pull-requests: write
checks: write
# Run if it's a PR on the official repo or a push to `main`
if: |
(github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)) ||
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
steps:
- name: Checkout repository from source repo
if: |
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
uses: actions/checkout@v4
- name: Checkout repository from fork
if: |
github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)
uses: actions/checkout@v4
with:
ref: "refs/pull/${{ github.event.client_payload.pull_request.number }}/merge"
- uses: ./.github/actions/create-check
if: ${{ github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Build CLIs (macos)
workflow: "Build and store docs artifacts"
run_id: ${{ github.run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Rust
uses: actions-rust-lang/[email protected]
with:
cache-workspaces: "./libs -> ./target"
- name: Build CLI
run: |
cd libs
cargo build --bin pavex --bin pavexc --release
- name: Store pavex CLI artifact
uses: actions/upload-artifact@v4
with:
name: pavex_cli_macos
path: libs/target/release/pavex
- name: Store pavexc CLI artifact
uses: actions/upload-artifact@v4
with:
name: pavexc_cli_macos
path: libs/target/release/pavexc
- uses: ./.github/actions/finalize-check
if: ${{ always() && github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Build CLIs (macos)
conclusion: ${{ job.status }}
github_token: ${{ secrets.GITHUB_TOKEN }}
tests_macos:
name: "Run tests (macos)"
runs-on: macos-14
needs:
- build_clis_macos
permissions:
pull-requests: write
checks: write
# Run if it's a PR on the official repo or a push to `main`
if: |
(github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)) ||
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
steps:
- name: Checkout repository from source repo
if: |
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
uses: actions/checkout@v4
- name: Checkout repository from fork
if: |
github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)
uses: actions/checkout@v4
with:
ref: "refs/pull/${{ github.event.client_payload.pull_request.number }}/merge"
- uses: ./.github/actions/create-check
if: ${{ github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Run tests (macos)
workflow: "Build and store docs artifacts"
run_id: ${{ github.run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Rust stable toolchain
uses: actions-rust-lang/[email protected]
with:
components: rustfmt
rustflags: ""
cache-workspaces: "./libs -> ./target"
- name: Download pavex CLI artifact
uses: actions/download-artifact@v4
with:
name: pavex_cli_macos
path: ~/.cargo/bin
- name: Download pavexc CLI artifact
uses: actions/download-artifact@v4
with:
name: pavexc_cli_macos
path: ~/.cargo/bin
- name: Mark pavex as executable
env:
PAVEX: /Users/runner/.cargo/bin/pavex
PAVEXC: /Users/runner/.cargo/bin/pavexc
run: |
chmod +x ${{ env.PAVEX }}
chmod +x ${{ env.PAVEXC }}
- name: Activate pavex
env:
PAVEX_ACTIVATION_KEY: ${{ secrets.pavex_activation_key }}
run: |
pavex self activate
pavexc self setup
- name: Run tests
working-directory: libs
run: |
cargo test --no-run
cargo test --workspace --exclude="pavex_cli"
- name: Run UI tests
env:
PAVEX_TEST_CLI_PATH: /Users/runner/.cargo/bin/pavex
PAVEXC_TEST_CLI_PATH: /Users/runner/.cargo/bin/pavexc
working-directory: libs
run: |
cargo test --package pavex_cli
- uses: ./.github/actions/finalize-check
if: ${{ always() && github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Run tests (macos)
conclusion: ${{ job.status }}
github_token: ${{ secrets.GITHUB_TOKEN }}
build_clis_windows:
name: "Build CLIs (windows)"
runs-on: windows-2022
permissions:
pull-requests: write
checks: write
# Run if it's a PR on the official repo or a push to `main`
if: |
(github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)) ||
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
steps:
- name: Checkout repository from source repo
if: |
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
uses: actions/checkout@v4
- name: Checkout repository from fork
if: |
github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)
uses: actions/checkout@v4
with:
ref: "refs/pull/${{ github.event.client_payload.pull_request.number }}/merge"
- uses: ./.github/actions/create-check
if: ${{ github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Build CLIs (windows)
workflow: "Build and store docs artifacts"
run_id: ${{ github.run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Rust
uses: actions-rust-lang/[email protected]
with:
cache-workspaces: "./libs -> ./target"
- name: Build CLI
run: |
cd libs
cargo build --bin pavex --bin pavexc --release
- name: Store pavex CLI artifact
uses: actions/upload-artifact@v4
with:
name: pavex_cli_windows
path: libs/target/release/pavex.exe
- name: Store pavexc CLI artifact
uses: actions/upload-artifact@v4
with:
name: pavexc_cli_windows
path: libs/target/release/pavexc.exe
- uses: ./.github/actions/finalize-check
if: ${{ always() && github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Build CLIs (windows)
conclusion: ${{ job.status }}
github_token: ${{ secrets.GITHUB_TOKEN }}
tests_windows:
name: "Run tests (windows)"
runs-on: windows-2022
needs:
- build_clis_windows
permissions:
pull-requests: write
checks: write
# Run if it's a PR on the official repo or a push to `main`
if: |
(github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)) ||
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
steps:
- name: Checkout repository from source repo
if: |
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
uses: actions/checkout@v4
- name: Checkout repository from fork
if: |
github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)
uses: actions/checkout@v4
with:
ref: "refs/pull/${{ github.event.client_payload.pull_request.number }}/merge"
- uses: ./.github/actions/create-check
if: ${{ github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Run tests (windows)
workflow: "Build and store docs artifacts"
run_id: ${{ github.run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Rust stable toolchain
uses: actions-rust-lang/[email protected]
with:
components: rustfmt
rustflags: ""
cache-workspaces: "./libs -> ./target"
- name: Download pavex CLI artifact
uses: actions/download-artifact@v4
with:
name: pavex_cli_windows
path: ~/.cargo/bin
- name: Download pavexc CLI artifact
uses: actions/download-artifact@v4
with:
name: pavexc_cli_windows
path: ~/.cargo/bin
- name: Activate pavex
env:
PAVEX_ACTIVATION_KEY: ${{ secrets.pavex_activation_key }}
run: |
pavex self activate
pavexc self setup
- name: Run tests
working-directory: libs
run: |
cargo test --no-run
cargo test --workspace --exclude="pavex_cli"
- name: Run UI tests
env:
PAVEX_TEST_CLI_PATH: C:\Users\runneradmin\.cargo\bin\pavex.exe
PAVEXC_TEST_CLI_PATH: C:\Users\runneradmin\.cargo\bin\pavexc.exe
working-directory: libs
run: |
cargo test --package pavex_cli
- uses: ./.github/actions/finalize-check
if: ${{ always() && github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Run tests (windows)
conclusion: ${{ job.status }}
github_token: ${{ secrets.GITHUB_TOKEN }}
build_tutorial_generator:
runs-on: ubuntu-latest
permissions:
pull-requests: write
checks: write
# Run if it's a PR on the official repo or a push to `main`
if: |
(github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)) ||
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
steps:
- name: Checkout repository from source repo
if: |
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
uses: actions/checkout@v4
- name: Checkout repository from fork
if: |
github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)
uses: actions/checkout@v4
with:
ref: "refs/pull/${{ github.event.client_payload.pull_request.number }}/merge"
- uses: ./.github/actions/create-check
if: ${{ github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Build tutorial generator
workflow: "Build and store docs artifacts"
run_id: ${{ github.run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Rust
uses: actions-rust-lang/[email protected]
with:
rustflags: ""
cache-workspaces: "./doc_examples/tutorial_generator -> ./target"
- name: Build CLI
run: |
cd doc_examples/tutorial_generator
cargo build
- name: Store CLI artifact
uses: actions/upload-artifact@v4
with:
name: tutorial_generator
path: doc_examples/tutorial_generator/target/debug/tutorial_generator
- uses: ./.github/actions/finalize-check
if: ${{ always() && github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Build tutorial generator
conclusion: ${{ job.status }}
github_token: ${{ secrets.GITHUB_TOKEN }}
is_up_to_date:
runs-on: ubuntu-latest
env:
PAVEX_PAVEXC: "/home/runner/.cargo/bin/pavexc"
needs:
- build_clis_linux
- build_tutorial_generator
permissions:
pull-requests: write
checks: write
# Run if it's a PR on the official repo or a push to `main`
if: |
(github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)) ||
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
steps:
- name: Checkout repository from source repo
if: |
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
uses: actions/checkout@v4
- name: Checkout repository from fork
if: |
github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)
uses: actions/checkout@v4
with:
ref: "refs/pull/${{ github.event.client_payload.pull_request.number }}/merge"
- uses: ./.github/actions/create-check
if: ${{ github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Check if up to date
workflow: "Build and store docs artifacts"
run_id: ${{ github.run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Set git identity
run: |
git config --global user.name "GitHub Actions"
git config --global user.email "[email protected]"
- name: Install Rust stable toolchain
uses: actions-rust-lang/[email protected]
with:
rustflags: ""
components: rustfmt
cache-workspaces: "./libs -> ./target"
- name: Download pavex CLI artifact
uses: actions/download-artifact@v4
with:
name: pavex_cli_linux
path: ~/.cargo/bin
- name: Download pavexc CLI artifact
uses: actions/download-artifact@v4
with:
name: pavexc_cli_linux
path: ~/.cargo/bin
- name: Download tutorial_generator CLI artifact
uses: actions/download-artifact@v4
with:
name: tutorial_generator
path: ~/.cargo/bin
- name: Mark as executable
run: |
chmod +x ~/.cargo/bin/pavex
chmod +x ~/.cargo/bin/pavexc
chmod +x ~/.cargo/bin/tutorial_generator
- name: Activate pavex
env:
PAVEX_ACTIVATION_KEY: ${{ secrets.pavex_activation_key }}
run: |
pavex self activate
pavexc self setup
- uses: cargo-bins/cargo-binstall@main
- name: Install cargo-px
run: cargo binstall -y --github-token=${{ secrets.GITHUB_TOKEN }} [email protected]
- name: Install exa
run: cargo binstall -y --github-token=${{ secrets.GITHUB_TOKEN }} [email protected]
- name: Verify tutorials
run: |
cd doc_examples
RUST_BACKTRACE=0 tutorial_generator --verify
- uses: ./.github/actions/finalize-check
if: ${{ always() && github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Check if up to date
conclusion: ${{ job.status }}
github_token: ${{ secrets.GITHUB_TOKEN }}
build_docs:
runs-on: ubuntu-latest
permissions:
pull-requests: write
checks: write
# Run if it's a PR on the official repo or a push to `main`
if: |
(github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)) ||
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
steps:
- name: Checkout repository from source repo
if: |
(github.event_name == 'push' && github.event.repository.full_name == github.repository)
uses: actions/checkout@v4
- name: Checkout repository from fork
if: |
github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.args.named.sha != '' &&
contains(
github.event.client_payload.pull_request.head.sha,
github.event.client_payload.slash_command.args.named.sha
)
uses: actions/checkout@v4
with:
ref: "refs/pull/${{ github.event.client_payload.pull_request.number }}/merge"
- uses: ./.github/actions/create-check
if: ${{ github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Build docs
workflow: "Build and store docs artifacts"
run_id: ${{ github.run_id }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Rust stable toolchain
uses: actions-rust-lang/[email protected]
with:
cache-workspaces: "./libs -> ./target"
- name: Build API reference
run: |
cd libs
cargo doc --package pavex --package pavex_cli_client --package pavex_session --package pavex_session_memory_store --no-deps
- name: Copy API reference files
run: |
mkdir -p docs/api_reference
cp -r libs/target/doc/* docs/api_reference
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and export to Docker
uses: docker/build-push-action@v5
with:
context: docs/
load: true
tags: pavex-docs
- name: Build docs
run: |
docker run --rm -v ${PWD}:/docs pavex-docs build
- uses: actions/upload-artifact@v4
with:
name: docs
path: site/
- name: Fix base
run: |
# Convert all "absolute" guide links in the reference to relative links so that we can scan for dead links
sudo find . -type f -exec sed -i "s#https://pavex.dev/docs/#file:///${PWD}/site/#g" {} +
sudo find . -type f -exec sed -i "s#https://pavex.dev/#file:///${PWD}/site/#g" {} +
- name: Link Checker
uses: lycheeverse/lychee-action@v2
with:
fail: true
# Pinning since there seems to be an issue with index.html files
# starting in 0.17.0
lycheeVersion: v0.16.1
args: |
--base site
--exclude-loopback
--exclude-path="site/api_reference/pavex/http"
--exclude-path="site/api_reference/pavex/time"
--exclude-path="site/api_reference/help.html"
--exclude-path="site/api_reference/settings.html"
--exclude="https://doc.rust-lang.org/*"
--exclude="https://stackoverflow.com/*"
--exclude="https://github.com/LukeMathWalker/pavex/edit/main/*"
--exclude="https://docs.rs/**/*"
--exclude-path="site/api_reference/static.files"
--exclude="https://fonts.gstatic.com"
--require-https
--no-progress
site
- uses: ./.github/actions/finalize-check
if: ${{ always() && github.event_name != 'push' }}
with:
pr_number: ${{ github.event.client_payload.pull_request.number }}
job: Build docs
conclusion: ${{ job.status }}
github_token: ${{ secrets.GITHUB_TOKEN }}