Skip to content
This repository has been archived by the owner on Nov 15, 2024. It is now read-only.

Dev 1969 v3 bindings fix (#452) #233

Dev 1969 v3 bindings fix (#452)

Dev 1969 v3 bindings fix (#452) #233

Workflow file for this run

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"