Skip to content

Commit

Permalink
feat(ci): create publish-crates job to publish public crates
Browse files Browse the repository at this point in the history
  • Loading branch information
t00ts committed Jan 27, 2025
1 parent 5426654 commit 8873932
Showing 1 changed file with 57 additions and 0 deletions.
57 changes: 57 additions & 0 deletions .github/workflows/publish-crates.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Publish Crates

on:
workflow_dispatch:
inputs:
version:
description: 'Version to publish (without v prefix)'
required: true
type: string

permissions:
contents: read

jobs:
publish-crates:
name: Publish crates to crates.io
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable

- name: Login to crates.io
run: cargo login ${{ secrets.CRATES_IO_TOKEN }}

# Publish crates in dependency order with retries
- name: Publish crates
run: |
publish_with_retry() {
local package=$1
local max_attempts=3
local attempt=1
while [ $attempt -le $max_attempts ]; do
echo "Attempting to publish $package (attempt $attempt/$max_attempts)"
if cargo publish -p $package; then
return 0
fi
attempt=$((attempt + 1))
[ $attempt -le $max_attempts ] && sleep 30
done
return 1
}
# First publish crypto as it has no internal dependencies
publish_with_retry pathfinder-crypto
sleep 30
# Publish common which depends on crypto
publish_with_retry pathfinder-common
sleep 30
# Publish serde which depends on common and crypto
publish_with_retry pathfinder-serde
sleep 30
# Finally publish class-hash which depends on common, crypto and serde
publish_with_retry pathfinder-class-hash

0 comments on commit 8873932

Please sign in to comment.