name: deploy-devnet on: release: types: [published] workflow_dispatch: jobs: deploy-devnet: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Rust toolchain + C compiler run: | apt-get update apt-get install -y --no-install-recommends build-essential pkg-config libssl-dev clang curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \ sh -s -- -y --profile minimal --default-toolchain 1.91.0 - name: Setup Solana CLI run: | for i in 1 2 3; do curl -sSfL https://release.solana.com/v1.18.26/install -o /tmp/solana-install.sh && break echo "retry $i"; sleep 5 done sh /tmp/solana-install.sh ls "$HOME/.local/share/solana/install/active_release/bin" >/dev/null 2>&1 || \ curl -sSfL https://release.solana.com/v1.18.26/install -o /tmp/solana-install.sh && sh /tmp/solana-install.sh echo "$HOME/.local/share/solana/install/active_release/bin" >> "$GITHUB_PATH" echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Setup Anchor CLI (anchor-next) run: | . "$HOME/.cargo/env" mkdir -p "$HOME/.cargo" printf '[net]\ngit-fetch-with-cli = true\n' > "$HOME/.cargo/config.toml" cargo install --force --git https://github.com/otter-sec/anchor.git \ --branch anchor-next anchor-cli --locked echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Airdrop devnet SOL (to keypair address) run: | export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH" solana airdrop 2 9ALsnxXNzDBv3mokngCHbruRTWUZiWR7pf7vswS1fCpf \ --url https://api.devnet.solana.com || \ solana airdrop 2 9ALsnxXNzDBv3mokngCHbruRTWUZiWR7pf7vswS1fCpf \ --url https://api.devnet.solana.com solana balance 9ALsnxXNzDBv3mokngCHbruRTWUZiWR7pf7vswS1fCpf --url https://api.devnet.solana.com - name: Build program working-directory: program run: | export PATH="$HOME/.local/share/solana/install/active_release/bin:$HOME/.cargo/bin:$PATH" anchor build - name: Test program working-directory: program run: | export PATH="$HOME/.local/share/solana/install/active_release/bin:$HOME/.cargo/bin:$PATH" anchor test - name: Deploy to devnet working-directory: program run: | export PATH="$HOME/.local/share/solana/install/active_release/bin:$HOME/.cargo/bin:$PATH" anchor deploy --provider.cluster devnet \ --provider.wallet ../deploy/dev_smart_updown-keypair.json