From 484aed980789e199345efb076fca30f2a2fb1447 Mon Sep 17 00:00:00 2001 From: Gustavo Valverde Date: Wed, 25 Sep 2024 17:25:31 +0100 Subject: [PATCH] feat(cd): add external static IPs to release nodes --- .github/workflows/cd-deploy-nodes-gcp.yml | 25 ++++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/.github/workflows/cd-deploy-nodes-gcp.yml b/.github/workflows/cd-deploy-nodes-gcp.yml index fcd14715e8a..129bdb35c57 100644 --- a/.github/workflows/cd-deploy-nodes-gcp.yml +++ b/.github/workflows/cd-deploy-nodes-gcp.yml @@ -216,7 +216,7 @@ jobs: permissions: contents: 'read' id-token: 'write' - if: ${{ !cancelled() && !failure() && ((github.event_name == 'push' && github.ref_name == 'main') || github.event_name == 'release') }} + if: ${{ !cancelled() && !failure() && ((github.event_name == 'push' && github.ref_name == 'main') || github.event_name == 'release') || github.event_name == 'workflow_dispatch' }} steps: - uses: actions/checkout@v4.1.7 @@ -250,12 +250,17 @@ jobs: - name: Set up Cloud SDK uses: google-github-actions/setup-gcloud@v2.1.1 - # TODO we should implement the fixes from https://github.com/ZcashFoundation/zebra/pull/5670 here - # but the implementation is failing as it's requiring the disk names, contrary to what is stated in the official documentation + - name: Get IP address for long-running release nodes + # if: ${{ github.event_name == 'release' }} + run: echo "IP_ADDRESS=$(gcloud compute addresses describe zebra-${NETWORK} --region ${{ vars.GCP_REGION }} --format='value(address)')" >> "$GITHUB_ENV" + - name: Create instance template for ${{ matrix.network }} run: | - NAME="zebrad-cache-${{ env.GITHUB_HEAD_REF_SLUG_URL || env.GITHUB_REF_SLUG_URL }}-${{ env.GITHUB_SHA_SHORT }}-${NETWORK}" - DISK_PARAMS="name=${NAME},device-name=${NAME},size=400GB,type=pd-ssd" + if [ -n "${{ env.IP_ADDRESS }}" ]; then + IP_FLAG="--address=${{ env.IP_ADDRESS }}" + fi + DISK_NAME="zebrad-cache-${{ env.GITHUB_HEAD_REF_SLUG_URL || env.GITHUB_REF_SLUG_URL }}-${{ env.GITHUB_SHA_SHORT }}-${NETWORK}" + DISK_PARAMS="name=${DISK_NAME},device-name=${DISK_NAME},size=400GB,type=pd-ssd" if [ -n "${{ env.CACHED_DISK_NAME }}" ]; then DISK_PARAMS+=",image=${{ env.CACHED_DISK_NAME }}" else @@ -268,9 +273,9 @@ jobs: --boot-disk-type=pd-ssd \ --image-project=cos-cloud \ --image-family=cos-stable \ - --network-interface=subnet=${{ vars.GCP_SUBNETWORK }} \ + --network-interface=subnet=${{ vars.GCP_SUBNETWORK }} ${IP_FLAG} \ --create-disk="${DISK_PARAMS}" \ - --container-mount-disk=mount-path='/var/cache/zebrad-cache',name=${NAME},mode=rw \ + --container-mount-disk=mount-path='/var/cache/zebrad-cache',name=${DISK_NAME},mode=rw \ --container-stdin \ --container-tty \ --container-image ${{ vars.GAR_BASE }}/zebrad@${{ needs.build.outputs.image_digest }} \ @@ -363,8 +368,8 @@ jobs: # Create instance template from container image - name: Manual deploy of a single ${{ inputs.network }} instance running zebrad run: | - NAME="zebrad-cache-${{ env.GITHUB_HEAD_REF_SLUG_URL || env.GITHUB_REF_SLUG_URL }}-${{ env.GITHUB_SHA_SHORT }}-${NETWORK}" - DISK_PARAMS="name=${NAME},device-name=${NAME},size=400GB,type=pd-ssd" + DISK_NAME="zebrad-cache-${{ env.GITHUB_HEAD_REF_SLUG_URL || env.GITHUB_REF_SLUG_URL }}-${{ env.GITHUB_SHA_SHORT }}-${NETWORK}" + DISK_PARAMS="name=${DISK_NAME},device-name=${DISK_NAME},size=400GB,type=pd-ssd" if [ -n "${{ env.CACHED_DISK_NAME }}" ]; then DISK_PARAMS+=",image=${{ env.CACHED_DISK_NAME }}" else @@ -379,7 +384,7 @@ jobs: --image-family=cos-stable \ --network-interface=subnet=${{ vars.GCP_SUBNETWORK }} \ --create-disk="${DISK_PARAMS}" \ - --container-mount-disk=mount-path='/var/cache/zebrad-cache',name=${NAME},mode=rw \ + --container-mount-disk=mount-path='/var/cache/zebrad-cache',name=${DISK_NAME},mode=rw \ --container-stdin \ --container-tty \ --container-image ${{ vars.GAR_BASE }}/zebrad@${{ needs.build.outputs.image_digest }} \