ok-to-test-command #730
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 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 (<<- target >>) | |
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 (<<- target >>) | |
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 (<< target >>) | |
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 (<< target >>) | |
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 (<<- target >>) | |
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 (<<- target >>) | |
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 (<< target >>) | |
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 (<< target >>) | |
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 (<<- target >>) | |
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 (<<- target >>) | |
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 (<< target >>) | |
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 (<< target >>) | |
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 }} |