diff --git a/.env b/.env deleted file mode 100644 index a077bea..0000000 --- a/.env +++ /dev/null @@ -1,3 +0,0 @@ -REGISTRY_BOND_ID=e2271e59c85b500f97d7efcef320e7ebf5c470f1580d4479302ba20b32624adc -DEPLOYER_LRN=lrn://vaasl-provider/deployers/webapp-deployer-api.apps.vaasl.io -AUTHORITY=vaasl diff --git a/.github/workflows/publish-to-laconic.yml b/.github/workflows/publish-to-laconic.yml index 2328746..105a9e6 100644 --- a/.github/workflows/publish-to-laconic.yml +++ b/.github/workflows/publish-to-laconic.yml @@ -1,20 +1,20 @@ -name: Publish Namadillo to Laconic Registry +name: Publish Ranger template to Laconic Registry on: release: types: [published] push: branches: - main - - deploy-webapp env: - CERC_REGISTRY_USER_KEY: ${{ secrets.CICD_LACONIC_USER_KEY }} - CERC_REGISTRY_BOND_ID: ${{ secrets.CICD_LACONIC_BOND_ID }} - CERC_REGISTRY_RPC_ENDPOINT: "https://laconicd-sapo.laconic.com" - CERC_REGISTRY_GQL_ENDPOINT: "https://laconicd-sapo.laconic.com/api" - CERC_REGISTRY_CHAIN_ID: "laconic-testnet-2" - CERC_REGISTRY_DEPLOYMENT_HOSTNAME: namadillo + REGISTRY_USER_KEY: ${{ secrets.CICD_LACONIC_USER_KEY }} + REGISTRY_BOND_ID: ${{ secrets.CICD_LACONIC_BOND_ID }} + REGISTRY_RPC_ENDPOINT: "https://laconicd-sapo.laconic.com" + REGISTRY_GQL_ENDPOINT: "https://laconicd-sapo.laconic.com/api" + REGISTRY_CHAIN_ID: "laconic-testnet-2" + REGISTRY_DEPLOYMENT_HOSTNAME: ranger-default DEPLOYER_LRN: "lrn://vaasl-provider/deployers/webapp-deployer-api.apps.vaasl.io" + AUTHORITY: "vaasl" jobs: laconic_publish: diff --git a/scripts/deploy-frontend.sh b/scripts/deploy-frontend.sh index c8b6281..55befae 100755 --- a/scripts/deploy-frontend.sh +++ b/scripts/deploy-frontend.sh @@ -1,108 +1,83 @@ #!/bin/bash -source .env -echo "Using REGISTRY_BOND_ID: $REGISTRY_BOND_ID" -echo "Using DEPLOYER_LRN: $DEPLOYER_LRN" -echo "Using AUTHORITY: $AUTHORITY" +set -e -# Repository URL -REPO_URL="https://git.vdb.to/mito-systems/ranger-app" +RECORD_FILE=tmp.rf.$$ +CONFIG_FILE=`mktemp` -# Get the latest commit hash from the repository -LATEST_HASH=$(git ls-remote $REPO_URL HEAD | awk '{print $1}') +CERC_REPO_REF=${CERC_REPO_REF:-${GITHUB_SHA:-`git log -1 --format="%H"`}} +CERC_IS_LATEST_RELEASE=${CERC_IS_LATEST_RELEASE:-"true"} -PACKAGE_VERSION=0.0.15 +rcd_name=$(jq -r '.name' package.json | sed 's/null//') +rcd_desc=$(jq -r '.description' package.json | sed 's/null//') +rcd_repository=$(jq -r '.repository' package.json | sed 's/null//') +rcd_homepage=$(jq -r '.homepage' package.json | sed 's/null//') +rcd_license=$(jq -r '.license' package.json | sed 's/null//') +rcd_author=$(jq -r '.author' package.json | sed 's/null//') +rcd_app_version=$(jq -r '.version' package.json | sed 's/null//') -# Current date and time for note -CURRENT_DATE_TIME=$(date -u) - -## TODO make this -CONFIG_FILE=priv-config.yml - -# Reference: https://git.vdb.to/cerc-io/test-progressive-web-app/src/branch/main/scripts - -# Get latest version from registry and increment application-record version -NEW_APPLICATION_VERSION=$(laconic -c $CONFIG_FILE registry record list --type ApplicationRecord --all --name "wild" 2>/dev/null | jq -r -s ".[] | sort_by(.createTime) | reverse | [ .[] | select(.bondId == \"$REGISTRY_BOND_ID\") ] | .[0].attributes.version" | awk -F. -v OFS=. '{$NF += 1 ; print}') - -if [ -z "$NEW_APPLICATION_VERSION" ] || [ "1" == "$NEW_APPLICATION_VERSION" ]; then - # Set application-record version if no previous records were found - NEW_APPLICATION_VERSION=0.0.6 -fi - -# Generate application-record.yml with incremented version -cat >./records/application-record.yml < "$CONFIG_FILE" +services: + registry: + rpcEndpoint: '${REGISTRY_RPC_ENDPOINT:-http://testnet-a-1.dev.vaasl.io:26657}' + gqlEndpoint: '${REGISTRY_GQL_ENDPOINT:-http://testnet-a-1.dev.vaasl.io:9473/api}' + chainId: ${REGISTRY_CHAIN_ID:-laconic-08062024} + gas: 900000 + fees: 900000alnt EOF -echo "Files generated successfully" +next_ver=$(laconic -c $CONFIG_FILE registry record list --type ApplicationRecord --all --name "$rcd_name" 2>/dev/null | jq -r -s ".[] | sort_by(.createTime) | reverse | [ .[] | select(.bondId == \"$CERC_REGISTRY_BOND_ID\") ] | .[0].attributes.version" | awk -F. -v OFS=. '{$NF += 1 ; print}') -RECORD_FILE=records/application-record.yml - -# Publish ApplicationRecord -publish_response=$(laconic -c $CONFIG_FILE registry record publish --filename $RECORD_FILE) -rc=$? -if [ $rc -ne 0 ]; then - echo "FATAL: Failed to publish record" - exit $rc +if [ -z "$next_ver" ] || [ "1" == "$next_ver" ]; then + next_ver=0.0.1 fi -RECORD_ID=$(echo $publish_response | jq -r '.id') -echo "ApplicationRecord published" + +cat < "$RECORD_FILE" +record: + type: ApplicationRecord + version: ${next_ver} + name: "$rcd_name" + description: "$rcd_desc" + homepage: "$rcd_homepage" + license: "$rcd_license" + author: "$rcd_author" + app_type: webapp + repository: + - "https://github.com/zramsay/namada-interface" + repository_ref: "$CERC_REPO_REF" + app_version: "$rcd_app_version" +EOF + + +cat $RECORD_FILE +RECORD_ID=$(laconic -c $CONFIG_FILE registry record publish --filename $RECORD_FILE --user-key "${REGISTRY_USER_KEY}" --bond-id ${REGISTRY_BOND_ID} | jq -r '.id') echo $RECORD_ID -# Set name to record -REGISTRY_APP_LRN="lrn://$AUTHORITY/applications/wildlife" +rm -f $RECORD_FILE +unset $RECORD_ID -sleep 2 -laconic -c $CONFIG_FILE registry name set "$REGISTRY_APP_LRN@${PACKAGE_VERSION}" "$RECORD_ID" -rc=$? -if [ $rc -ne 0 ]; then - echo "FATAL: Failed to set name: $REGISTRY_APP_LRN@${PACKAGE_VERSION}" - exit $rc -fi -sleep 2 -laconic -c $CONFIG_FILE registry name set "$REGISTRY_APP_LRN@${LATEST_HASH}" "$RECORD_ID" -rc=$? -if [ $rc -ne 0 ]; then - echo "FATAL: Failed to set hash" - exit $rc -fi -sleep 2 -# Set name if latest release -laconic -c $CONFIG_FILE registry name set "$REGISTRY_APP_LRN" "$RECORD_ID" -rc=$? -if [ $rc -ne 0 ]; then - echo "FATAL: Failed to set release" - exit $rc -fi -echo "$REGISTRY_APP_LRN set for ApplicationRecord" - -# Check if record found for REGISTRY_APP_LRN -query_response=$(laconic -c $CONFIG_FILE registry name resolve "$REGISTRY_APP_LRN") -rc=$? -if [ $rc -ne 0 ]; then - echo "FATAL: Failed to query name" - exit $rc -fi -APP_RECORD=$(echo $query_response | jq '.[0]') -if [ -z "$APP_RECORD" ] || [ "null" == "$APP_RECORD" ]; then - echo "No record found for $REGISTRY_APP_LRN." - exit 1 +if [ -z "$REGISTRY_APP_LRN" ]; then + authority="vaasl" + app=$(echo "$rcd_name" | cut -d'/' -f2-) + REGISTRY_APP_LRN="lrn://$authority/applications/$app" fi -<<'COMMENTBLOCK' +laconic -c $CONFIG_FILE registry name set --user-key "${REGISTRY_USER_KEY}" --bond-id ${REGISTRY_BOND_ID} "$REGISTRY_APP_LRN@${rcd_app_version}" "$RECORD_ID" +laconic -c $CONFIG_FILE registry name set --user-key "${REGISTRY_USER_KEY}" --bond-id ${REGISTRY_BOND_ID} "$REGISTRY_APP_LRN@${CERC_REPO_REF}" "$RECORD_ID" +if [ "true" == "$CERC_IS_LATEST_RELEASE" ]; then + laconic -c $CONFIG_FILE registry name set --user-key "${REGISTRY_USER_KEY}" --bond-id ${REGISTRY_BOND_ID} "$REGISTRY_APP_LRN" "$RECORD_ID" +fi + +rcd_name=$(jq -r '.name' package.json | sed 's/null//' | sed 's/^@//') +rcd_app_version=$(jq -r '.version' package.json | sed 's/null//') + + # Get payment address for deployer -paymentAddress=$(laconic -c priv-config.yml registry name resolve "$DEPLOYER_LRN" | jq -r '.[0].attributes.paymentAddress') -paymentAmount=$(laconic -c priv-config.yml registry name resolve "$DEPLOYER_LRN" | jq -r '.[0].attributes.minimumPayment' | sed 's/alnt//g') +paymentAddress=$(laconic -c $CONFIG_FILE registry name resolve "$DEPLOYER_LRN" | jq -r '.[0].attributes.paymentAddress') +paymentAmount=$(laconic -c $CONFIG_FILE registry name resolve "$DEPLOYER_LRN" | jq -r '.[0].attributes.minimumPayment' | sed 's/alnt//g') # Pay deployer if paymentAmount is not null if [[ -n "$paymentAmount" && "$paymentAmount" != "null" ]]; then - payment=$(laconic -c priv-config.yml registry tokens send --address "$paymentAddress" --type alnt --quantity "$paymentAmount") + payment=$(laconic -c $CONFIG_FILE registry tokens send --address "$paymentAddress" --type alnt --quantity "$paymentAmount" --user-key "$REGISTRY_USER_KEY" --bond-id "$REGISTRY_BOND_ID") # Extract the transaction hash txHash=$(echo "$payment" | jq -r '.tx.hash') @@ -113,34 +88,30 @@ else fi # Generate application-deployment-request.yml -cat >./records/application-deployment-request.yml < "$RECORD_FILE" record: type: ApplicationDeploymentRequest version: '1.0.0' - name: wildlife@$PACKAGE_VERSION - application: lrn://$AUTHORITY/applications/wildlife@$PACKAGE_VERSION + name: "$rcd_name@$rcd_app_version" + application: "$REGISTRY_APP_LRN@$rcd_app_version" deployer: $DEPLOYER_LRN - dns: trail + dns: $REGISTRY_DEPLOYMENT_HOSTNAME config: env: LACONIC_HOSTED_CONFIG_laconicd_chain_id: laconic-testnet-2 meta: - note: Added by Mark @ $CURRENT_DATE_TIME - repository: "$REPO_URL" - repository_ref: $LATEST_HASH + note: "Added by CI @ `date`" + repository: "`git remote get-url origin`" + repository_ref: "${GITHUB_SHA:-`git log -1 --format="%H"`}" payment: $txHash EOF -RECORD_FILE=records/application-deployment-request.yml -sleep 2 -deployment_response=$(laconic -c $CONFIG_FILE registry record publish --filename $RECORD_FILE) -if [ $rc -ne 0 ]; then - echo "FATAL: Failed to query deployment request" - exit $rc -fi -DEPLOYMENT_REQUEST_ID=$(echo $deployment_response | jq -r '.id') -echo "ApplicationDeploymentRequest published" -echo $DEPLOYMENT_REQUEST_ID -#// end -COMMENTBLOCK +cat $RECORD_FILE +RECORD_ID=$(laconic -c $CONFIG_FILE registry record publish \ + --filename $RECORD_FILE \ + --user-key "${REGISTRY_USER_KEY}" \ + --bond-id ${REGISTRY_BOND_ID} | jq -r '.id') +echo $RECORD_ID + +rm -f $RECORD_FILE $CONFIG_FILE