feat: выбор цели деплоя devnet|our (свой test-validator) через workflow_dispatch
This commit is contained in:
@@ -1,12 +1,21 @@
|
|||||||
name: deploy-devnet
|
name: deploy-contract
|
||||||
|
|
||||||
on:
|
on:
|
||||||
release:
|
release:
|
||||||
types: [published]
|
types: [published]
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
target:
|
||||||
|
description: "Куда деплоить: 'devnet' или 'our' (наш test-validator)"
|
||||||
|
required: true
|
||||||
|
default: devnet
|
||||||
|
type: choice
|
||||||
|
options:
|
||||||
|
- devnet
|
||||||
|
- our
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy-devnet:
|
deploy-contract:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@@ -19,7 +28,7 @@ jobs:
|
|||||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
|
||||||
sh -s -- -y --profile minimal --default-toolchain 1.91.0
|
sh -s -- -y --profile minimal --default-toolchain 1.91.0
|
||||||
|
|
||||||
- name: Setup Solana CLI
|
- name: Setup Solana CLI (GitHub, минуя release.solana.com)
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
SOL_VERSION=v1.18.26
|
SOL_VERSION=v1.18.26
|
||||||
@@ -31,10 +40,9 @@ jobs:
|
|||||||
mkdir -p "$HOME/solana-local"
|
mkdir -p "$HOME/solana-local"
|
||||||
cp solana-release/bin/solana* "$HOME/solana-local/" 2>/dev/null || true
|
cp solana-release/bin/solana* "$HOME/solana-local/" 2>/dev/null || true
|
||||||
cp solana-release/bin/cargo-build-bpf "$HOME/solana-local/" 2>/dev/null || true
|
cp solana-release/bin/cargo-build-bpf "$HOME/solana-local/" 2>/dev/null || true
|
||||||
SOLDIR="$HOME/solana-local"
|
echo "$HOME/solana-local" >> "$GITHUB_PATH"
|
||||||
echo "$SOLDIR" >> "$GITHUB_PATH"
|
|
||||||
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
|
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
|
||||||
export PATH="$SOLDIR:$PATH"
|
export PATH="$HOME/solana-local:$PATH"
|
||||||
solana --version
|
solana --version
|
||||||
|
|
||||||
- name: Setup Anchor CLI (anchor-next)
|
- name: Setup Anchor CLI (anchor-next)
|
||||||
@@ -46,7 +54,9 @@ jobs:
|
|||||||
--branch anchor-next anchor-cli --locked
|
--branch anchor-next anchor-cli --locked
|
||||||
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
|
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
|
||||||
|
|
||||||
- name: Airdrop devnet SOL (to keypair address)
|
# ------ devnet: отдельно аирдроп ------
|
||||||
|
- name: Airdrop devnet SOL (target=devnet)
|
||||||
|
if: github.event.inputs.target == 'devnet'
|
||||||
run: |
|
run: |
|
||||||
export PATH="$HOME/solana-local:$PATH"
|
export PATH="$HOME/solana-local:$PATH"
|
||||||
solana airdrop 2 9ALsnxXNzDBv3mokngCHbruRTWUZiWR7pf7vswS1fCpf \
|
solana airdrop 2 9ALsnxXNzDBv3mokngCHbruRTWUZiWR7pf7vswS1fCpf \
|
||||||
@@ -55,6 +65,7 @@ jobs:
|
|||||||
--url https://api.devnet.solana.com
|
--url https://api.devnet.solana.com
|
||||||
solana balance 9ALsnxXNzDBv3mokngCHbruRTWUZiWR7pf7vswS1fCpf --url https://api.devnet.solana.com
|
solana balance 9ALsnxXNzDBv3mokngCHbruRTWUZiWR7pf7vswS1fCpf --url https://api.devnet.solana.com
|
||||||
|
|
||||||
|
# ------ общие: build + test ------
|
||||||
- name: Build program
|
- name: Build program
|
||||||
working-directory: program
|
working-directory: program
|
||||||
run: |
|
run: |
|
||||||
@@ -67,9 +78,34 @@ jobs:
|
|||||||
export PATH="$HOME/solana-local:$HOME/.cargo/bin:$PATH"
|
export PATH="$HOME/solana-local:$HOME/.cargo/bin:$PATH"
|
||||||
anchor test
|
anchor test
|
||||||
|
|
||||||
|
# ------ deploy: devnet ------
|
||||||
- name: Deploy to devnet
|
- name: Deploy to devnet
|
||||||
|
if: github.event.inputs.target == 'devnet'
|
||||||
working-directory: program
|
working-directory: program
|
||||||
run: |
|
run: |
|
||||||
export PATH="$HOME/solana-local:$HOME/.cargo/bin:$PATH"
|
export PATH="$HOME/solana-local:$HOME/.cargo/bin:$PATH"
|
||||||
anchor deploy --provider.cluster devnet \
|
anchor deploy --provider.cluster devnet \
|
||||||
--provider.wallet ../deploy/dev_smart_updown-keypair.json
|
--provider.wallet ../deploy/dev_smart_updown-keypair.json
|
||||||
|
|
||||||
|
# ------ deploy: наш тест-валидатор (всё в одном шаге, чтобы выжил) ------
|
||||||
|
- name: Deploy to our test-validator
|
||||||
|
if: github.event.inputs.target == 'our'
|
||||||
|
working-directory: program
|
||||||
|
run: |
|
||||||
|
export PATH="$HOME/solana-local:$HOME/.cargo/bin:$PATH"
|
||||||
|
mkdir -p /tmp/solana-ledger
|
||||||
|
solana-test-validator --ledger /tmp/solana-ledger \
|
||||||
|
--rpc-port 8899 --quiet > /tmp/validator.log 2>&1 &
|
||||||
|
VPD=$!
|
||||||
|
for i in $(seq 1 40); do
|
||||||
|
curl -s http://127.0.0.1:8899 -H 'Content-Type: application/json' \
|
||||||
|
-d '{"jsonrpc":"2.0","id":1,"method":"getHealth"}' 2>/dev/null | grep -q '"ok"' && break
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
solana airdrop 100 9ALsnxXNzDBv3mokngCHbruRTWUZiWR7pf7vswS1fCpf \
|
||||||
|
--url http://127.0.0.1:8899 || true
|
||||||
|
solana config set --url http://127.0.0.1:8899
|
||||||
|
echo ">>> Деплой в НАШ local test-validator (127.0.0.1:8899)"
|
||||||
|
anchor deploy --provider.cluster http://127.0.0.1:8899 \
|
||||||
|
--provider.wallet ../deploy/dev_smart_updown-keypair.json
|
||||||
|
kill $VPD 2>/dev/null || true
|
||||||
Reference in New Issue
Block a user