# Check if Cached State Disks Exist Workflow # This workflow is designed to check the availability of cached state disks in Google Cloud Platform (GCP) for different types of Zcash applications. # - Accepts network type as input to determine which disks to search for. # - Checks for the existence of three types of disks: lightwalletd tip, Zebra tip, and Zebra checkpoint. # - Uses Google Cloud SDK to query and identify available disks based on network and version. # - Outputs the availability of each disk type, which can be utilized in subsequent workflows. # The workflow streamlines the process of verifying disk availability, crucial for optimizing and speeding up integration tests and deployments. name: Check if cached state disks exist on: workflow_call: inputs: network: description: 'The Zcash network used to look up the disks' required: true type: string outputs: lwd_tip_disk: description: 'true if there is a lightwalletd and Zebra cached state disk, synced near the chain tip' value: ${{ jobs.get-available-disks.outputs.lwd_tip_disk }} zebra_tip_disk: description: 'true if there is a Zebra cached state disk synced near the chain tip' value: ${{ jobs.get-available-disks.outputs.zebra_tip_disk }} zebra_checkpoint_disk: description: 'true if there is a Zebra cached state disk synced to the mandatory Zebra checkpoint' value: ${{ jobs.get-available-disks.outputs.zebra_checkpoint_disk }} jobs: get-available-disks: name: Check if cached state disks exist runs-on: ubuntu-latest outputs: lwd_tip_disk: ${{ steps.get-available-disks.outputs.lwd_tip_disk }} zebra_tip_disk: ${{ steps.get-available-disks.outputs.zebra_tip_disk }} zebra_checkpoint_disk: ${{ steps.get-available-disks.outputs.zebra_checkpoint_disk }} permissions: contents: 'read' id-token: 'write' steps: - uses: actions/checkout@v4.1.1 with: persist-credentials: false fetch-depth: 0 # Setup gcloud CLI - name: Authenticate to Google Cloud id: auth uses: google-github-actions/auth@v2.0.0 with: retries: '3' workload_identity_provider: '${{ vars.GCP_WIF }}' service_account: '${{ vars.GCP_DEPLOYMENTS_SA }}' - name: Set up Cloud SDK uses: google-github-actions/setup-gcloud@v2.0.0 # Disk images in GCP are required to be in lowercase, but the blockchain network # uses sentence case, so we need to downcase ${{ inputs.network }} # # Passes a lowercase Network name to subsequent steps using $NETWORK env variable - name: Downcase network name for disks run: | NETWORK_CAPS=${{ inputs.network }} echo "NETWORK=${NETWORK_CAPS,,}" >> $GITHUB_ENV # Check if there are cached state disks available for subsequent jobs to use. - name: Check if cached state disks exist id: get-available-disks env: GITHUB_WORKSPACE: ${{ env.GITHUB_WORKSPACE }} NETWORK: ${{ env.NETWORK }} # use lowercase version from env, not input run: | ./.github/workflows/scripts/gcp-get-available-disks.sh