diff --git a/deploy-atom.sh b/deploy-atom.sh new file mode 100755 index 0000000..9a38bc1 --- /dev/null +++ b/deploy-atom.sh @@ -0,0 +1,113 @@ +#!/bin/bash + +# Exit on any error +set -e + +# Trigger + +# Check for required positional arguments +if [ $# -ne 2 ]; then + echo "Error: Two arguments required" + echo "Usage: $0 " + exit 1 +fi + +# Check required environment variables +if [ -z "$CERC_REGISTRY_USER_KEY" ]; then + echo "Error: CERC_REGISTRY_USER_KEY environment variable is required" + exit 1 +fi + +if [ -z "$CERC_REGISTRY_BOND_ID" ]; then + echo "Error: CERC_REGISTRY_BOND_ID environment variable is required" + exit 1 +fi + +REPO_PATH="$1" +TAG="$2" +REPO="https://github.com/${REPO_PATH}" + +# Get the commit hash for the tag using GitHub API +COMMIT_HASH=$(curl -s "https://api.github.com/repos/${REPO_PATH}/git/refs/tags/${TAG}" | jq -r '.object.sha') +if [ -z "$COMMIT_HASH" ] || [ "$COMMIT_HASH" = "null" ]; then + echo "Error: Could not find commit hash for tag $TAG" + exit 1 +fi + +# Create temporary files +RECORD_FILE=tmp.rf.$$ +CONFIG_FILE=$(mktemp) + +# Generate registry configuration +cat < "$CONFIG_FILE" +services: + registry: + rpcEndpoint: '${CERC_REGISTRY_RPC_ENDPOINT}' + gqlEndpoint: '${CERC_REGISTRY_GQL_ENDPOINT}' + chainId: ${CERC_REGISTRY_CHAIN_ID} + gas: 900000 + fees: 900000alnt +EOF + +# Generate the application record +cat < "$RECORD_FILE" +record: + type: ApplicationRecord + name: "$APP_NAME" + version: "$TAG" + app_type: webapp + repository: + - "$REPO" + repository_ref: "$COMMIT_HASH" + app_version: "0.0.1" +EOF + +# Publish the application record +echo "Publishing application record..." +cat $RECORD_FILE +RECORD_ID=$(laconic -c $CONFIG_FILE registry record publish --filename $RECORD_FILE --user-key "${CERC_REGISTRY_USER_KEY}" --bond-id ${CERC_REGISTRY_BOND_ID} | jq -r '.id') +echo "Record ID: $RECORD_ID" + +# Set up LRN (Laconic Resource Name) +if [ -z "$CERC_REGISTRY_APP_LRN" ]; then + CERC_REGISTRY_APP_LRN="lrn://$AUTHORITY/applications/$APP_NAME" +fi + +# Set name mappings +echo "Setting name mappings..." +laconic -c $CONFIG_FILE registry name set --user-key "${CERC_REGISTRY_USER_KEY}" --bond-id ${CERC_REGISTRY_BOND_ID} "$CERC_REGISTRY_APP_LRN" "$RECORD_ID" +laconic -c $CONFIG_FILE registry name set --user-key "${CERC_REGISTRY_USER_KEY}" --bond-id ${CERC_REGISTRY_BOND_ID} "$CERC_REGISTRY_APP_LRN@${COMMIT_HASH}" "$RECORD_ID" + +## TODO manually enter a txhash after sending atom + +# Generate deployment request +echo "Generating deployment request..." +cat < "$RECORD_FILE" +record: + type: ApplicationDeploymentRequest + version: '1.0.0' + name: "$APP_NAME" + application: "$CERC_REGISTRY_APP_LRN" + deployer: $DEPLOYER_LRN + dns: $CERC_REGISTRY_DEPLOYMENT_HOSTNAME + config: + env: + LACONIC_HOSTED_CONFIG_laconicd_chain_id: laconic-testnet-2 + meta: + note: "Added by CI @ $(date)" + repository: "$REPO" + repository_ref: "$COMMIT_HASH" + payment: FB3968A92E605872B57FC80864E1530BD7DCEFD7CE9BD14EF76698B5A2EF9742 +EOF + + cat $RECORD_FILE + DEPLOY_RECORD_ID=$(laconic -c $CONFIG_FILE registry record publish \ + --filename $RECORD_FILE \ + --user-key "${CERC_REGISTRY_USER_KEY}" \ + --bond-id ${CERC_REGISTRY_BOND_ID} | jq -r '.id') + echo "Deployment Record ID: $DEPLOY_RECORD_ID" +fi + +# Cleanup +rm -f $RECORD_FILE $CONFIG_FILE +echo "Script completed successfully"