diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c7938f3..3ee4839 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -122,3 +122,27 @@ jobs: with: files: ${{ matrix.asset_name }} tag_name: ${{ github.ref_name }} + + # ── Phase 3: Publish to Crates.io ────────────────────────────────────────── + publish-crates: + name: 📦 Publish to Crates.io + needs: build-binaries + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/v') + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Publish Workspace + shell: bash + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_IO_TOKEN }} + run: | + if [ -z "$CARGO_REGISTRY_TOKEN" ]; then + echo "⚠️ CRATES_IO_TOKEN not found. Skipping publish step." + exit 0 + fi + ./publish.sh diff --git a/publish.sh b/publish.sh new file mode 100755 index 0000000..01b293e --- /dev/null +++ b/publish.sh @@ -0,0 +1,53 @@ +#!/bin/bash +# ───────────────────────────────────────────────────────────────────────────── +# Atupa Workspace — Crates.io Publishing Script +# +# This script publishes all crates in the workspace in the required order. +# Usage: ./publish.sh [--dry-run] +# ───────────────────────────────────────────────────────────────────────────── + +set -e + +DRY_RUN="" +if [ "$1" == "--dry-run" ]; then + DRY_RUN="--dry-run" + echo "🔍 Performing DRY RUN..." +fi + +# 1. Foundation +echo "📦 Publishing atupa-core..." +cargo publish -p atupa-core $DRY_RUN + +# 2. Level 1 - Independent modules +echo "📦 Publishing atupa-rpc..." +cargo publish -p atupa-rpc $DRY_RUN + +echo "📦 Publishing atupa-parser..." +cargo publish -p atupa-parser $DRY_RUN + +echo "📦 Publishing atupa-adapters..." +cargo publish -p atupa-adapters $DRY_RUN + +# 3. Level 2 - Visuals & VM +echo "📦 Publishing atupa-output..." +cargo publish -p atupa-output $DRY_RUN + +echo "📦 Publishing atupa-nitro..." +cargo publish -p atupa-nitro $DRY_RUN + +# 4. Level 3 - Protocol Adapters +echo "📦 Publishing atupa-aave..." +cargo publish -p atupa-aave $DRY_RUN + +echo "📦 Publishing atupa-lido..." +cargo publish -p atupa-lido $DRY_RUN + +# 5. Facade SDK +echo "📦 Publishing atupa-sdk..." +cargo publish -p atupa-sdk $DRY_RUN + +# 6. Final Binary +echo "📦 Publishing atupa (binary)..." +cargo publish -p atupa $DRY_RUN + +echo "✅ All crates processed successfully!"