-
Notifications
You must be signed in to change notification settings - Fork 59
70 lines (57 loc) · 2.92 KB
/
mainnet-deploy-2h.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
name: MainNet deploy in 2 hours
on:
workflow_dispatch:
permissions:
contents: write
jobs:
release:
name: Deploy to MainNet in 2 hours
runs-on: ubuntu-latest
steps:
- name: Create software upgrade proposal
run: |
# Get latest release version using GitHub API
ELYS_VERSION=$(curl -s https://api.github.com/repos/elys-network/elys/releases/latest | grep -Po '"tag_name": "\K.*?(?=")')
echo "Latest elys version: $ELYS_VERSION"
# Download latest binary
DOWNLOAD_BINARY_URL=https://github.com/elys-network/elys/releases/download/${ELYS_VERSION}/elysd-${ELYS_VERSION}-linux-amd64
DOWNLOAD_SHA256_URL=https://github.com/elys-network/elys/releases/download/${ELYS_VERSION}/sha256sum.txt
ELYSD=/tmp/elysd-${ELYS_VERSION}
SHA256SUM=/tmp/sha256sum.txt
curl -L $DOWNLOAD_BINARY_URL -o $ELYSD && chmod +x $ELYSD
curl -L $DOWNLOAD_SHA256_URL -o $SHA256SUM
# helper functions
extract_txhash() { awk -F 'txhash: ' '/txhash:/{print $2; exit}'; }
extract_proposal_id() { awk -F 'key: proposal_id|value: ' '/key: proposal_id/ { getline; gsub(/"/, "", $2); print $2; exit }'; }
extract_and_calc_upgrade_height() { awk -F'"latest_block_height":"' '{ split($2,a,"\""); print a[1]+2600; exit }'; }
extract_checksum() { awk "/elysd-${ELYS_VERSION}-linux-amd64.tar.gz/ {print \$1; exit}"; }
# environment variables
NODE=https://rpc.elys.network:443
OPTIONS="--node $NODE --chain-id elys-1 --keyring-backend=test -b=sync --fees=100000uelys --gas=300000 -y"
# import proposer key
${ELYSD} keys import-hex proposer ${{ secrets.MAINNET_PROPOSER_PRIVATE_KEY }} --keyring-backend=test
# get checksum
checksum=$(cat $SHA256SUM | extract_checksum)
# query and upgrade height
height=$(${ELYSD} status --node $NODE | extract_and_calc_upgrade_height)
# generate upgrade version
upgrade_version=$(echo ${ELYS_VERSION} | cut -d'.' -f1)
echo "current version: ${ELYS_VERSION}"
echo "upgrade_version: $upgrade_version"
# create proposal
# create proposal
txhash=$(
${ELYSD} software-upgrade-tx \
$upgrade_version \
$height \
5000000000uelys \
"Elys Network ${upgrade_version} released. Focuses on enhancements and codebase improvements." \
"{\"binaries\":{\"linux/amd64\":\"https://github.com/elys-network/elys/releases/download/${ELYS_VERSION}/elysd-${ELYS_VERSION}-linux-amd64.tar.gz?checksum=$checksum\"}}" \
true \
--from=proposer \
$OPTIONS | extract_txhash
)
echo "txhash: $txhash"
sleep 10
proposalid=$(${ELYSD} q tx $txhash --node $NODE | extract_proposal_id)
echo "proposalid: $proposalid"