11name : Deploy to Devnet
22
3+ # This workflow performs automatic deployment of aleph-node to the Devnet environment
4+ # It does it from the scratch, ie it
5+ # 1) syncs the validators keys from S3,
6+ # 2) generates raw chainspec from the deployed aleph-node binary,
7+ # 3) restart nodes with cleaned db
8+
39on :
410 workflow_dispatch :
511
2228 id : vars
2329 shell : bash
2430 run : |
25- echo "##[set-output name=branch;]$(echo ${GITHUB_REF##*/})"
26- echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
31+ echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
2732
2833 - name : Configure AWS credentials
2934 uses : aws-actions/configure-aws-credentials@v1
@@ -49,58 +54,50 @@ jobs:
4954 with :
5055 version : ' v1.23.6'
5156
52- - name : Run fork-off update
53- env :
54- RELEASE_TAG : ${{ steps.vars.outputs.sha_short }}
55-
57+ - name : Sync all validator's keystores from S3
5658 run : |
5759 #!/bin/bash
58-
59- COMMIT_ID=$(curl -s -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "system_version"}' https://rpc.test.azero.dev | jq -r '.result' | cut -d "-" -f 2 | head -c 7)
60- echo $COMMIT_ID
61-
62- # sync all validator's keystores from S3
6360 aws s3 cp s3://alephzero-devnet-eu-central-1-keys-bucket/data data --recursive
64-
6561 # rename validator paths
6662 declare -A NAMES=([aleph-node-validator-0]=5D34dL5prEUaGNQtPPZ3yN5Y6BnkfXunKXXz6fo7ZJbLwRRH [aleph-node-validator-1]=5GBNeWRhZc2jXu7D55rBimKYDk8PGk8itRYFTPfC8RJLKG5o [aleph-node-validator-2]=5Dfis6XL8J2P6JHUnUtArnFWndn62SydeP8ee8sG2ky9nfm9 [aleph-node-validator-3]=5F4H97f7nQovyrbiq4ZetaaviNwThSVcFobcA5aGab6167dK [aleph-node-validator-4]=5DiDShBWa1fQx6gLzpf3SFBhMinCoyvHM1BWjPNsmXS8hkrW [aleph-node-validator-5]=5EFb84yH9tpcFuiKUcsmdoF7xeeY3ajG1ZLQimxQoFt9HMKR [aleph-node-validator-6]=5DZLHESsfGrJ5YzT3HuRPXsSNb589xQ4Unubh1mYLodzKdVY [aleph-node-validator-7]=5GHJzqvG6tXnngCpG7B12qjUvbo5e4e9z8Xjidk3CQZHxTPZ [aleph-node-validator-8]=5CUnSsgAyLND3bxxnfNhgWXSe9Wn676JzLpGLgyJv858qhoX [aleph-node-validator-9]=5CVKn7HAZW1Ky4r7Vkgsr7VEW88C2sHgUNDiwHY9Ct2hjU8q)
67-
6863 for NAME in "${!NAMES[@]}"; do
6964 mv -v data/$NAME data/${NAMES[$NAME]}
7065 done
7166
72- # generate chainspec, it will reuse keys from the synced keystore
73- docker run -i -v $(pwd)/data:/data --env RUST_BACKTRACE=1 --entrypoint "/usr/local/bin/aleph-node" public.ecr.aws/p6e8q1z1/aleph-node:${COMMIT_ID} bootstrap-chain --raw --base-path /data --chain-id a0dnet1 --account-ids 5D34dL5prEUaGNQtPPZ3yN5Y6BnkfXunKXXz6fo7ZJbLwRRH,5GBNeWRhZc2jXu7D55rBimKYDk8PGk8itRYFTPfC8RJLKG5o,5Dfis6XL8J2P6JHUnUtArnFWndn62SydeP8ee8sG2ky9nfm9,5F4H97f7nQovyrbiq4ZetaaviNwThSVcFobcA5aGab6167dK,5DiDShBWa1fQx6gLzpf3SFBhMinCoyvHM1BWjPNsmXS8hkrW,5EFb84yH9tpcFuiKUcsmdoF7xeeY3ajG1ZLQimxQoFt9HMKR,5DZLHESsfGrJ5YzT3HuRPXsSNb589xQ4Unubh1mYLodzKdVY,5GHJzqvG6tXnngCpG7B12qjUvbo5e4e9z8Xjidk3CQZHxTPZ,5CUnSsgAyLND3bxxnfNhgWXSe9Wn676JzLpGLgyJv858qhoX,5CVKn7HAZW1Ky4r7Vkgsr7VEW88C2sHgUNDiwHY9Ct2hjU8q --sudo-account-id 5F4SvwaUEQubiqkPF8YnRfcN77cLsT2DfG4vFeQmSXNjR7hD > chainspec.skeleton.json
74-
75- docker run -i -v $(pwd):/app public.ecr.aws/p6e8q1z1/fork-off:latest --ws-rpc-endpoint=wss://ws.test.azero.dev --initial-spec-path=chainspec.skeleton.json --combined-spec-path=chainspec.json
67+ - name : Generate chainspec
68+ env :
69+ RELEASE_TAG : ${{ steps.vars.outputs.sha_short }}
7670
71+ run : |
72+ #!/bin/bash
73+ aws s3 cp s3://alephzero-devnet-eu-central-1-keys-bucket/data data --recursive
74+ docker run -i -v $(pwd)/data:/data --env RUST_BACKTRACE=1 --entrypoint "/usr/local/bin/aleph-node" public.ecr.aws/p6e8q1z1/aleph-node:${RELEASE_TAG} bootstrap-chain --raw --base-path /data --chain-id a0dnet1 --account-ids 5D34dL5prEUaGNQtPPZ3yN5Y6BnkfXunKXXz6fo7ZJbLwRRH,5GBNeWRhZc2jXu7D55rBimKYDk8PGk8itRYFTPfC8RJLKG5o,5Dfis6XL8J2P6JHUnUtArnFWndn62SydeP8ee8sG2ky9nfm9,5F4H97f7nQovyrbiq4ZetaaviNwThSVcFobcA5aGab6167dK,5DiDShBWa1fQx6gLzpf3SFBhMinCoyvHM1BWjPNsmXS8hkrW,5EFb84yH9tpcFuiKUcsmdoF7xeeY3ajG1ZLQimxQoFt9HMKR,5DZLHESsfGrJ5YzT3HuRPXsSNb589xQ4Unubh1mYLodzKdVY,5GHJzqvG6tXnngCpG7B12qjUvbo5e4e9z8Xjidk3CQZHxTPZ,5CUnSsgAyLND3bxxnfNhgWXSe9Wn676JzLpGLgyJv858qhoX,5CVKn7HAZW1Ky4r7Vkgsr7VEW88C2sHgUNDiwHY9Ct2hjU8q --sudo-account-id 5F4SvwaUEQubiqkPF8YnRfcN77cLsT2DfG4vFeQmSXNjR7hD > chainspec.json
7775 aws s3 cp chainspec.json s3://alephzero-devnet-eu-central-1-keys-bucket/chainspec.json
7876
79- # stop and clean devnet
80-
77+ - name : Stop and purge db Devnet
78+ run : |
79+ #!/bin/bash
8180 aws eks --region eu-central-1 update-kubeconfig --name alephzero-devnet-eu-central-1-eks
8281
8382 kubectl delete sts aleph-node-validator -n devnet --ignore-not-found=true
8483 kubectl delete pvc -l app=aleph-node-validator -n devnet --ignore-not-found=true
85- kubectl delete job send-runtime-hook -n devnet --ignore-not-found=true
86-
87- cd aleph-apps/aleph-node-validators/overlays/devnet/eu-central-1
88- kustomize edit set image "aleph-node-validator-image-placeholder=public.ecr.aws/p6e8q1z1/aleph-node:${COMMIT_ID}"
89- kustomize edit remove resource send-runtime-hook.yaml
90- kustomize build . | kubectl apply -f -
91- sleep 2
92- kubectl rollout status --watch --timeout=3600s statefulset/aleph-node-validator -n devnet
9384
94- echo "Waiting 15 minutes"
95- sleep 900
85+ - name : Start Devnet
86+ env :
87+ RELEASE_TAG : ${{ steps.vars.outputs.sha_short }}
88+ run : |
89+ #!/bin/bash
9690
91+ cd aleph-apps/aleph-node-validators/overlays/devnet/eu-central-1
9792 kustomize edit set image "aleph-node-validator-image-placeholder=public.ecr.aws/p6e8q1z1/aleph-node:${RELEASE_TAG}"
9893 kustomize build . | kubectl apply -f -
9994 sleep 2
10095 kubectl rollout status --watch --timeout=3600s statefulset/aleph-node-validator -n devnet
10196
102- kustomize edit add resource send-runtime-hook.yaml
103- kustomize build . | kubectl apply -f -
97+ - name : Waiting 5 minutes for validators to boot
98+ run : |
99+ #!/bin/bash
100+ sleep 300
104101
105102 - name : GIT | Commit changes to aleph-apps repository.
106103 uses : EndBug/add-and-commit@v5.1.0
0 commit comments