46 lines
1.3 KiB
YAML
46 lines
1.3 KiB
YAML
name: Resume publish to crates.io
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
resume_after:
|
|
description: "Last successfully published crate (will start from the next one)"
|
|
required: true
|
|
type: string
|
|
|
|
jobs:
|
|
publish:
|
|
runs-on: arc-linux-latest
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Install rust toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
override: true
|
|
|
|
- name: Install cargo-workspaces
|
|
run: cargo install cargo-workspaces
|
|
|
|
- name: Preflight publish checks
|
|
run: |
|
|
python3 tools/internal/check_publish_preflight.py
|
|
|
|
- name: Publish remaining crates
|
|
env:
|
|
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
|
run: |
|
|
# Get crates in publish order, skip up to and including resume_after
|
|
cargo workspaces plan 2>/dev/null | sed -n '/^${{ inputs.resume_after }}$/,$p' | tail -n +2 | while read crate; do
|
|
echo "Publishing $crate..."
|
|
cargo publish -p "$crate" --allow-dirty
|
|
echo "Waiting 600s before next publish..."
|
|
sleep 600
|
|
done
|
|
|
|
- name: Show package versions
|
|
run: cargo workspaces list --long
|