Skip to content

Commit

Permalink
imp: add more params to automation jobs
Browse files Browse the repository at this point in the history
  • Loading branch information
johnalotoski committed May 31, 2023
1 parent a04b757 commit 13c2882
Showing 1 changed file with 117 additions and 69 deletions.
186 changes: 117 additions & 69 deletions nix/automation/jobs.nix
Expand Up @@ -156,29 +156,51 @@ in {
name = "gen-custom-node-config";
runtimeInputs = [packages.cardano-cli nixpkgs.coreutils];
text = ''
# Inputs: $START_TIME, $SLOT_LENGTH, $SECURITY_PARAM, $TESTNET_MAGIC, $TEMPLATE_DIR, $GENESIS_DIR, $NUM_GENESIS_KEYS
# Inputs: $START_TIME, $SLOT_LENGTH, $SECURITY_PARAM, $TESTNET_MAGIC, $TEMPLATE_DIR, $GENESIS_DIR, $NUM_GENESIS_KEYS, $DEBUG
[ -n "''${DEBUG:-}" ] && set -x
# There is a genesis creation bug in cardano-cli of node 8.0.0 which prevents new clusters from being funded.
# Fall back to 1.35.7 cli usage until resolved
# Ref: https://github.com/input-output-hk/cardano-node/issues/5287
CLI_1_35_7=(
"nix"
"--experimental-features" "nix-command flakes"
"--accept-flake-config"
"run"
"github:input-output-hk/cardano-node?ref=tags/1.35.7#cardano-cli"
"--"
)
export START_TIME=''${START_TIME:-$(date --utc +"%Y-%m-%dT%H:%M:%SZ" --date " now +30 min")}
export SLOT_LENGTH=''${SLOT_LENGTH:-1000}
export SECURITY_PARAM=''${SECURITY_PARAM:-36}
export NUM_GENESIS_KEYS=''${NUM_GENESIS_KEYS:-3}
export TESTNET_MAGIC=''${TESTNET_MAGIC:-42}
export TEMPLATE_DIR=''${TEMPLATE_DIR:-"${iohk-nix}/cardano-lib/testnet-template"}
export GENESIS_DIR=''${GENESIS_DIR:-"$PRJ_ROOT/workbench/custom"}
mkdir -p "$GENESIS_DIR"
cardano-cli genesis create-cardano \
--genesis-dir "$GENESIS_DIR" \
--gen-genesis-keys "$NUM_GENESIS_KEYS" \
--supply 30000000000000000 \
--testnet-magic "$TESTNET_MAGIC" \
--slot-coefficient 0.05 \
--byron-template "$TEMPLATE_DIR/byron.json" \
--shelley-template "$TEMPLATE_DIR/shelley.json" \
--alonzo-template "$TEMPLATE_DIR/alonzo.json" \
--conway-template "$TEMPLATE_DIR/conway.json" \
--node-config-template "$TEMPLATE_DIR/config.json" \
--security-param "$SECURITY_PARAM" \
--slot-length "$SLOT_LENGTH" \
--start-time "$START_TIME"
CLI_CREATE_CARDANO=(
"''${CLI_1_35_7[@]}" "genesis" "create-cardano"
"--genesis-dir" "$GENESIS_DIR"
"--gen-genesis-keys" "$NUM_GENESIS_KEYS"
"--supply" "30000000000000000"
"--testnet-magic" "$TESTNET_MAGIC"
"--slot-coefficient" "0.05"
"--byron-template" "$TEMPLATE_DIR/byron.json"
"--shelley-template" "$TEMPLATE_DIR/shelley.json"
"--alonzo-template" "$TEMPLATE_DIR/alonzo.json"
# Fallback 1.35.7 cli usage does not include conway genesis template which still needs to be patched in.
# "--conway-template" "$TEMPLATE_DIR/conway.json"
"--node-config-template" "$TEMPLATE_DIR/config.json"
"--security-param" "$SECURITY_PARAM"
"--slot-length" "$SLOT_LENGTH"
"--start-time" "$START_TIME"
)
"''${CLI_CREATE_CARDANO[@]}"
# TODO remove when genesis generator outputs non-extended-key format
pushd "$GENESIS_DIR/genesis-keys"
for ((i=0; i < "$NUM_GENESIS_KEYS"; i++))
Expand All @@ -198,48 +220,50 @@ in {
name = "gen-custom-kv-config";
runtimeInputs = [nixpkgs.jq nixpkgs.coreutils];
text = ''
# Inputs: $GENESIS_DIR, $NUM_GENESIS_KEYS, $ENV_NAME
export GENESIS_DIR=''${GENESIS_DIR:-"$PRJ_ROOT/workbench/custom"}
export NUM_GENESIS_KEYS=''${NUM_GENESIS_KEYS:-3}
export ENV_NAME=''${ENV_NAME:-"custom-env"}
mkdir -p "$PRJ_ROOT/nix/cloud/kv/consul/cardano"
mkdir -p "$PRJ_ROOT/nix/cloud/kv/vault/cardano/$ENV_NAME"
pushd "$GENESIS_DIR"
jq -n \
--arg byron "$(base64 -w 0 < byron-genesis.json)" \
--arg shelley "$(base64 -w 0 < shelley-genesis.json)" \
--arg alonzo "$(base64 -w 0 < alonzo-genesis.json)" \
--arg conway "$(base64 -w 0 < conway-genesis.json)" \
--argjson config "$(< node-config.json)" \
'{byronGenesisBlob: $byron, shelleyGenesisBlob: $shelley, alonzoGenesisBlob: $alonzo, conwayGenesisBlob: $conway, nodeConfig: $config}' \
> config.json
cp config.json "$PRJ_ROOT/nix/cloud/kv/consul/cardano/$ENV_NAME.json"
pushd delegate-keys
for ((i=0; i < "$NUM_GENESIS_KEYS"; i++)); do
jq -n \
--argjson cold "$(<shelley."00$i".skey)" \
--argjson vrf "$(<shelley."00$i".vrf.skey)" \
--argjson kes "$(<shelley."00$i".kes.skey)" \
--argjson opcert "$(<shelley."00$i".opcert.json)" \
--argjson counter "$(<shelley."00$i".counter.json)" \
--argjson byron_cert "$(<byron."00$i".cert.json)" \
'{
"kes.skey": $kes,
"vrf.skey": $vrf,
"opcert.json": $opcert,
"byron.cert.json": $byron_cert,
"cold.skey": $cold,
"cold.counter": $counter
}' > "bft-$i.json"
cp "bft-$i.json" "$PRJ_ROOT/nix/cloud/kv/vault/cardano/$ENV_NAME"
done
popd
pushd "$PRJ_ROOT/nix/cloud/kv/vault/cardano/$ENV_NAME"
for ((i=0; i < "$NUM_GENESIS_KEYS"; i++)); do
sops -e "bft-$i.json" > "bft-$i.enc.json" && rm "bft-$i.json"
done
popd
# Inputs: $GENESIS_DIR, $NUM_GENESIS_KEYS, $ENV_NAME, $DEBUG
[ -n "''${DEBUG:-}" ] && set -x
export GENESIS_DIR=''${GENESIS_DIR:-"$PRJ_ROOT/workbench/custom"}
export NUM_GENESIS_KEYS=''${NUM_GENESIS_KEYS:-3}
export ENV_NAME=''${ENV_NAME:-"custom-env"}
mkdir -p "$PRJ_ROOT/nix/cloud/kv/consul/cardano"
mkdir -p "$PRJ_ROOT/nix/cloud/kv/vault/cardano/$ENV_NAME"
pushd "$GENESIS_DIR"
jq -n \
--arg byron "$(base64 -w 0 < byron-genesis.json)" \
--arg shelley "$(base64 -w 0 < shelley-genesis.json)" \
--arg alonzo "$(base64 -w 0 < alonzo-genesis.json)" \
--arg conway "$(base64 -w 0 < conway-genesis.json)" \
--argjson config "$(< node-config.json)" \
'{byronGenesisBlob: $byron, shelleyGenesisBlob: $shelley, alonzoGenesisBlob: $alonzo, conwayGenesisBlob: $conway, nodeConfig: $config}' \
> config.json
cp config.json "$PRJ_ROOT/nix/cloud/kv/consul/cardano/$ENV_NAME.json"
pushd delegate-keys
for ((i=0; i < "$NUM_GENESIS_KEYS"; i++)); do
jq -n \
--argjson cold "$(<shelley."00$i".skey)" \
--argjson vrf "$(<shelley."00$i".vrf.skey)" \
--argjson kes "$(<shelley."00$i".kes.skey)" \
--argjson opcert "$(<shelley."00$i".opcert.json)" \
--argjson counter "$(<shelley."00$i".counter.json)" \
--argjson byron_cert "$(<byron."00$i".cert.json)" \
'{
"kes.skey": $kes,
"vrf.skey": $vrf,
"opcert.json": $opcert,
"byron.cert.json": $byron_cert,
"cold.skey": $cold,
"cold.counter": $counter
}' > "bft-$i.json"
cp "bft-$i.json" "$PRJ_ROOT/nix/cloud/kv/vault/cardano/$ENV_NAME"
done
popd
pushd "$PRJ_ROOT/nix/cloud/kv/vault/cardano/$ENV_NAME"
for ((i=0; i < "$NUM_GENESIS_KEYS"; i++)); do
sops -e "bft-$i.json" > "bft-$i.enc.json" && rm "bft-$i.json"
done
popd
popd
'';
}
// {after = ["gen-custom-node-config"];};
Expand All @@ -257,7 +281,9 @@ in {
name = "create-stake-pools";
runtimeInputs = [nixpkgs.jq nixpkgs.coreutils];
text = ''
# Inputs: $PAYMENT_KEY, $NUM_POOLS, $START_INDEX, $STAKE_POOL_OUTPUT_DIR, $POOL_RELAY, $POOL_RELAY_PORT
# Inputs: $PAYMENT_KEY, $NUM_POOLS, $START_INDEX, $STAKE_POOL_OUTPUT_DIR, $POOL_RELAY, $POOL_RELAY_PORT, $DEBUG
[ -n "''${DEBUG:-}" ] && set -x
WITNESSES=$(("$NUM_POOLS" * 2 + 1))
END_INDEX=$(("$START_INDEX" + "$NUM_POOLS"))
CHANGE_ADDRESS=$(cardano-cli address build --payment-verification-key-file "$PAYMENT_KEY".vkey --testnet-magic "$TESTNET_MAGIC")
Expand Down Expand Up @@ -368,7 +394,9 @@ in {
name = "update-stake-pools";
runtimeInputs = [nixpkgs.jq nixpkgs.coreutils];
text = ''
# Inputs: $PAYMENT_KEY, $NUM_POOLS, $START_INDEX, $STAKE_POOL_DIR, $POOL_RELAY, $POOL_RELAY_PORT
# Inputs: $PAYMENT_KEY, $NUM_POOLS, $START_INDEX, $STAKE_POOL_DIR, $POOL_RELAY, $POOL_RELAY_PORT, $DEBUG
[ -n "''${DEBUG:-}" ] && set -x
WITNESSES=$(("$NUM_POOLS" * 2 + 1))
END_INDEX=$(("$START_INDEX" + "$NUM_POOLS"))
CHANGE_ADDRESS=$(cardano-cli address build --payment-verification-key-file "$PAYMENT_KEY".vkey --testnet-magic "$TESTNET_MAGIC")
Expand Down Expand Up @@ -424,7 +452,9 @@ in {
name = "gen-custom-kv-config-pools";
runtimeInputs = [nixpkgs.jq nixpkgs.coreutils];
text = ''
# Inputs: $NUM_POOLS, $START_INDEX, $STAKE_POOL_DIR, $ENV_NAME
# Inputs: $NUM_POOLS, $START_INDEX, $STAKE_POOL_DIR, $ENV_NAME, $DEBUG
[ -n "''${DEBUG:-}" ] && set -x
export ENV_NAME=''${ENV_NAME:-"custom-env"}
END_INDEX=$(("$START_INDEX" + "$NUM_POOLS"))
mkdir -p "$PRJ_ROOT/nix/cloud/kv/vault/cardano/$ENV_NAME"
Expand Down Expand Up @@ -460,7 +490,9 @@ in {
name = "rotate-kes-pools";
runtimeInputs = [nixpkgs.jq nixpkgs.coreutils];
text = ''
# Inputs: $NUM_POOLS, $START_INDEX, $STAKE_POOL_DIR, $ENV_NAME, $CURRENT_KES_PERIOD
# Inputs: $NUM_POOLS, $START_INDEX, $STAKE_POOL_DIR, $ENV_NAME, $CURRENT_KES_PERIOD, $DEBUG
[ -n "''${DEBUG:-}" ] && set -x
export ENV_NAME=''${ENV_NAME:-"custom-env"}
END_INDEX=$(("$START_INDEX" + "$NUM_POOLS"))
mkdir -p "$PRJ_ROOT/nix/cloud/kv/vault/cardano/$ENV_NAME"
Expand Down Expand Up @@ -502,7 +534,9 @@ in {
name = "move-genesis-utxo";
runtimeInputs = [nixpkgs.jq nixpkgs.coreutils];
text = ''
# Inputs: $PAYMENT_ADDRESS, $BYRON_SIGNING_KEY, $TESTNET_MAGIC
# Inputs: $PAYMENT_ADDRESS, $BYRON_SIGNING_KEY, $TESTNET_MAGIC, $SUBMIT_TX, $ERA, $DEBUG
[ -n "''${DEBUG:-}" ] && set -x
BYRON_UTXO=$(cardano-cli query utxo --whole-utxo --testnet-magic "$TESTNET_MAGIC" --out-file /dev/stdout|jq \
'to_entries[]|
{"txin": .key, "address": .value.address, "amount": .value.value.lovelace}
Expand All @@ -513,16 +547,20 @@ in {
BYRON_ADDRESS=$(echo "$BYRON_UTXO"|jq -r '.address')
TXIN=$(echo "$BYRON_UTXO"|jq -r '.txin')
cardano-cli transaction build-raw --tx-in "$TXIN" --tx-out "$PAYMENT_ADDRESS+$SUPPLY" --fee "$FEE" --out-file tx-byron.txbody
cardano-cli transaction build-raw ''${ERA:+$ERA} --tx-in "$TXIN" --tx-out "$PAYMENT_ADDRESS+$SUPPLY" --fee "$FEE" --out-file tx-byron.txbody
cardano-cli transaction sign --tx-body-file tx-byron.txbody --out-file tx-byron.txsigned --address "$BYRON_ADDRESS" --signing-key-file "$BYRON_SIGNING_KEY"
cardano-cli transaction submit --testnet-magic "$TESTNET_MAGIC" --tx-file tx-byron.txsigned
if [ "''${SUBMIT_TX:-TRUE}" = "TRUE" ]; then
cardano-cli transaction submit --testnet-magic "$TESTNET_MAGIC" --tx-file tx-byron.txsigned
fi
'';
};
update-proposal-generic = writeShellApplication {
name = "update-proposal-generic";
runtimeInputs = [nixpkgs.jq nixpkgs.coreutils];
text = ''
# Inputs: $PAYMENT_KEY, $NUM_GENESIS_KEYS, $KEY_DIR, [$MAJOR_VERSION], $TESTNET_MAGIC, $PROPOSAL_ARGS
# Inputs: $PAYMENT_KEY, $NUM_GENESIS_KEYS, $KEY_DIR, [$MAJOR_VERSION], $TESTNET_MAGIC, $PROPOSAL_ARGS, $DEBUG
[ -n "''${DEBUG:-}" ] && set -x
if [ "$#" -eq 0 ]; then
echo "Generic update proposal args must be provided as cli args in the pattern:"
echo "nix run .#x86_64-linux.automation.jobs.update-proposal-generic -- \"\''${PROPOSAL_ARGS[@]}\""
Expand All @@ -536,7 +574,9 @@ in {
name = "update-proposal-d";
runtimeInputs = [nixpkgs.jq nixpkgs.coreutils];
text = ''
# Inputs: $PAYMENT_KEY, $NUM_GENESIS_KEYS, $KEY_DIR, $D_VALUE, $TESTNET_MAGIC
# Inputs: $PAYMENT_KEY, $NUM_GENESIS_KEYS, $KEY_DIR, $D_VALUE, $TESTNET_MAGIC, $DEBUG
[ -n "''${DEBUG:-}" ] && set -x
PROPOSAL_ARGS=(
"--decentralization-parameter" "$D_VALUE"
)
Expand All @@ -547,7 +587,9 @@ in {
name = "update-proposal-hard-fork";
runtimeInputs = [nixpkgs.jq nixpkgs.coreutils];
text = ''
# Inputs: $PAYMENT_KEY, $NUM_GENESIS_KEYS, $KEY_DIR, $MAJOR_VERSION, $TESTNET_MAGIC
# Inputs: $PAYMENT_KEY, $NUM_GENESIS_KEYS, $KEY_DIR, $MAJOR_VERSION, $TESTNET_MAGIC, $DEBUG
[ -n "''${DEBUG:-}" ] && set -x
PROPOSAL_ARGS=(
"--protocol-major-version" "$MAJOR_VERSION"
"--protocol-minor-version" "0"
Expand All @@ -559,7 +601,9 @@ in {
name = "update-proposal-cost-model";
runtimeInputs = [nixpkgs.jq nixpkgs.coreutils];
text = ''
# Inputs: $PAYMENT_KEY, $NUM_GENESIS_KEYS, $KEY_DIR, $COST_MODEL, $TESTNET_MAGIC
# Inputs: $PAYMENT_KEY, $NUM_GENESIS_KEYS, $KEY_DIR, $COST_MODEL, $TESTNET_MAGIC, $DEBUG
[ -n "''${DEBUG:-}" ] && set -x
PROPOSAL_ARGS=(
"--cost-model-file" "$COST_MODEL"
)
Expand All @@ -570,7 +614,9 @@ in {
name = "update-proposal-mainnet-params";
runtimeInputs = [nixpkgs.jq nixpkgs.coreutils];
text = ''
# Inputs: $PAYMENT_KEY, $NUM_GENESIS_KEYS, $KEY_DIR, $TESTNET_MAGIC
# Inputs: $PAYMENT_KEY, $NUM_GENESIS_KEYS, $KEY_DIR, $TESTNET_MAGIC, $DEBUG
[ -n "''${DEBUG:-}" ] && set -x
PROPOSAL_ARGS=(
"--max-block-body-size" "90112"
"--number-of-pools" "500"
Expand Down Expand Up @@ -608,7 +654,9 @@ in {
name = "generate-and-run-node";
runtimeInputs = [packages.cardano-cli nixpkgs.coreutils];
text = ''
# Inputs: $SLOT_LENGTH, $SECURITY_PARAM, $TESTNET_MAGIC, $TEMPLATE_DIR, $GENESIS_DIR, $NUM_GENESIS_KEYS
# Inputs: $SLOT_LENGTH, $SECURITY_PARAM, $TESTNET_MAGIC, $TEMPLATE_DIR, $GENESIS_DIR, $NUM_GENESIS_KEYS, $DEBUG
[ -n "''${DEBUG:-}" ] && set -x
export SLOT_LENGTH=''${SLOT_LENGTH:-200}
export SECURITY_PARAM=''${SECURITY_PARAM:-8}
export NUM_GENESIS_KEYS=''${NUM_GENESIS_KEYS:-1}
Expand Down

0 comments on commit 13c2882

Please sign in to comment.