This repository has been archived by the owner on Nov 15, 2024. It is now read-only.
Dev 1969 v2 bindings fix (#451) #229
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Pipeline | |
on: | |
push: | |
jobs: | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
- name: Build | |
run: | | |
cargo build --verbose | |
working-directory: . | |
test: | |
needs: build | |
name: Test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
- name: test | |
run: | | |
cargo test --verbose | |
working-directory: . | |
devnet: | |
#needs: test | |
name: deploy on devnet | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/main' | |
environment: devnet | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Downloading elys | |
run: | | |
URL=https://github.com/elys-network/elys/releases/download/v0.30.0/elysd-v0.30.0-linux-amd64 | |
wget $URL -O elysd | |
chmod +x elysd | |
- name: Set up Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
- name: Compile | |
run: | | |
getNewVersionBYContract(){ | |
local contractAddress=$1 | |
ELYSD=./elysd | |
local json=$($ELYSD q --output json --node "${{vars.NODE}}" wasm contract-state smart "$contractAddress" '{ "version": {} }') | |
local VERSION=$(echo $json | jq -r ".data.version") | |
# Extract the major, minor, and patch versions | |
local version_parts=(${VERSION//./ }) | |
local major=${version_parts[0]} | |
local minor=${version_parts[1]} | |
local patch=${version_parts[2]} | |
# Increment the minor version | |
local minor=$((minor + 1)) | |
# Update the version string | |
VERSION="$major.$minor.$patch" | |
echo $VERSION | |
} | |
tradeShieldContractVersion=$(getNewVersionBYContract ${{vars.TS_CONTRACT_ADDRESS}}) | |
echo "new tradeShieldContractVersion: $tradeShieldContractVersion" | |
sed -i "s/^version = .*/version = \"$tradeShieldContractVersion\"/" contracts/trade-shield-contract/Cargo.toml | |
cargo update | |
docker run --rm -v "$(pwd)":/code \ | |
--mount type=volume,source="$(basename "$(pwd)")_cache",target=/target \ | |
--mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ | |
cosmwasm/workspace-optimizer:0.14.0 | |
- name: Deploy | |
run: | | |
# helper functions | |
extract_txhash() { awk -F 'txhash: ' '/txhash:/{print $2; exit}'; } | |
extract_code_id() { awk -F 'key: code_id|value: ' '/key: code_id/ { getline; gsub(/"/, "", $2); print $2; exit }'; } | |
extract_contract_address() { awk -F 'key: _contract_address|value: ' '/key: _contract_address/ { getline; gsub(/"/, "", $2); print $2; exit }'; } | |
extract_account_number() { awk -F 'account_number: ' '/account_number:/ { gsub(/"/, "", $2); print $2 + 0; exit; }'; } | |
extract_sequence() { awk -F 'sequence: ' '/sequence:/ { gsub(/"/, "", $2); print $2 + 0; exit; }'; } | |
ELYSD=./elysd | |
wait_for_tx() { | |
local txhash=$1 | |
# loop until query tx cli does not fail | |
while ! $ELYSD q tx $txhash --node "$NODE" &> /dev/null; do | |
echo "Waiting for the transaction $txhash to be included in a block..." | |
sleep 0.5 | |
done | |
} | |
exit_if_tx_is_empty() { | |
local tx=$1 | |
if [[ -z "$tx" ]]; then | |
echo "Error: there is not a txhash" | |
exit 1 | |
fi | |
} | |
# environment variables | |
NODE=${{vars.NODE}} | |
NAME=${{vars.NAME}} | |
# contract addresses enviroment variables | |
# set elysd config | |
$ELYSD config keyring-backend test | |
$ELYSD config node $NODE | |
$ELYSD config chain-id ${{vars.CHAIN_ID}} | |
$ELYSD config broadcast-mode sync | |
# save private keys to files | |
echo "${{ secrets.PRIVATE_KEY_MALLORCA }}" > /tmp/private_key_mallorca.txt | |
# recover keys | |
echo "${{ secrets.PASSPHRASE_MALLORCA }}" | $ELYSD keys import mallorca --keyring-backend test /tmp/private_key_mallorca.txt | |
user_address=$(echo "${{ secrets.PASSPHRASE_MALLORCA }}" | $ELYSD keys show $NAME -a) | |
# get account and sequence number | |
account_number=$($ELYSD q account $user_address --node $NODE | extract_account_number) | |
sequence=$($ELYSD q account $user_address --node $NODE | extract_sequence) | |
echo "account_number: $account_number" | |
echo "sequence: $sequence" | |
# environment variables | |
OPTIONS="--from $NAME --node $NODE --chain-id ${{vars.CHAIN_ID}} --keyring-backend=test --gas auto --gas-adjustment 1.3 --fees 300000uelys -y --account-number $account_number -b async --log_level trace --trace" | |
##contracts | |
TS_CONTRACT_ADDRESS=${{vars.TS_CONTRACT_ADDRESS}} | |
printf "TS_CONTRACT_ADDRESS=%s\n" "$TS_CONTRACT_ADDRESS" | |
# store and init/migrate trade shield contract | |
txhash=$(echo "${{ secrets.PASSPHRASE_MALLORCA }}" | $ELYSD tx wasm store $OPTIONS --sequence $(($sequence + 3)) artifacts/trade_shield_contract.wasm | extract_txhash) | |
echo "ts store txhash: $txhash" | |
exit_if_tx_is_empty $txhash | |
wait_for_tx $txhash | |
codeid=$($ELYSD q tx $txhash --node $NODE | extract_code_id) | |
echo "ts code id: $codeid" | |
if [ "$TS_CONTRACT_ADDRESS" != "empty" ]; then | |
txhash=$(echo "${{ secrets.PASSPHRASE_MALLORCA }}" | $ELYSD tx wasm migrate $OPTIONS --sequence $(($sequence + 4)) $TS_CONTRACT_ADDRESS $codeid '{}' | extract_txhash) | |
echo "ts migrate txhash: $txhash" | |
else | |
# set localnet AH deterministic address as param | |
txhash=$(echo "${{ secrets.PASSPHRASE_MALLORCA }}" | $ELYSD tx wasm init $OPTIONS --sequence $(($sequence + 4)) --label "ts" --admin $NAME $codeid '{}' | extract_txhash) | |
echo "ts init txhash: $txhash" | |
fi | |
exit_if_tx_is_empty $txhash | |
wait_for_tx $txhash | |
export ts_contract_address=$($ELYSD q tx $txhash --node $NODE | extract_contract_address) | |
echo "ts_contract_address: $ts_contract_address" | |
# print environment variables to set | |
printf "\nset those environment variables to use the contracts:\n\n" | |
printf "export NODE=%s\n" "$NODE" | |
printf "export NAME=%s\n" "$NAME" | |
printf "export TS_CONTRACT_ADDRESS=%s\n" "$ts_contract_address" |