#!/bin/bash # CARGO_NET_GIT_FETCH_WITH_CLI=true and --entrypoint /srtool/entrypoint.sh # are required to allow srtool to fetch from github private repositories # self-hosted runner uses user `maintenance` to match srtool `builder` user 1001 # $(~/srtool/uid-gid-mapping.sh 1001 | xargs) is used to map the user and group # Determine whether to use Podman or Docker if [ "${IS_PODMAN}" = "true" ]; then CONTAINER_ENGINE="podman" USER_FLAG="--userns=keep-id" else CONTAINER_ENGINE="docker" USER_FLAG="--user $(id -u):$(id -g)" fi # Container command to generate JSON blob of the runtime CMD="${CONTAINER_ENGINE} run \ -i \ --rm \ ${USER_FLAG} \ -e CARGO_NET_GIT_FETCH_WITH_CLI=true \ -e PACKAGE=datahaven-${GH_WORKFLOW_MATRIX_CHAIN}-runtime \ -e RUNTIME_DIR=operator/runtime/${GH_WORKFLOW_MATRIX_CHAIN} \ -e BUILD_OPTS=${RUNTIME_BUILD_OPTS} \ -e PROFILE=${RUNTIME_BUILD_PROFILE} \ -v "${PWD}:/build" \ ${GH_WORKFLOW_MATRIX_SRTOOL_IMAGE}:${GH_WORKFLOW_MATRIX_SRTOOL_IMAGE_TAG} \ build --app --json -cM" # Here we run the command and stream the output (JSON blob) to a variable stdbuf -oL $CMD | { while IFS= read -r line do echo ║ $line JSON="$line" done echo "json=$JSON" >> $GITHUB_OUTPUT PROP=$(echo $JSON | jq -r .runtimes.compact.prop) echo "proposal_hash=$PROP" >> $GITHUB_OUTPUT WASM=$(echo $JSON | jq -r .runtimes.compact.wasm) echo "wasm=$WASM" >> $GITHUB_OUTPUT Z_WASM=$(echo $JSON | jq -r .runtimes.compressed.wasm) echo "wasm_compressed=$Z_WASM" >> $GITHUB_OUTPUT IPFS=$(echo $JSON | jq -r .runtimes.compact.ipfs) echo "ipfs=$IPFS" >> $GITHUB_OUTPUT }