From e90f11fb48794984109746cc86c2dd9a47d714cd Mon Sep 17 00:00:00 2001 From: "Edward (Mike's sidekick)" Date: Mon, 11 May 2026 21:28:08 +0000 Subject: [PATCH] ci: pin solana-cli-version to 3.1.10 in all workflows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit heyAyushh/setup-solana@v5.9 (used directly in native/pinocchio/quasar and transitively via heyAyushh/setup-anchor@v4.999 in anchor.yml) has an intermittently broken 'stable' resolver. When the upstream STABLE_CHANNEL_LATEST_TAG env var is unset/empty in a given run, the action logs 'Using Solana CLI version ' (no version) and then curls https://release.anza.xyz/v/install, which returns HTTP 404 and fails the job. Recent main-branch CI run 25696483414 (Anchor) is a concrete example. The action is already at its latest tag (v4.999 / v5.9 follow a non-standard '4.99X / 5.X' floating-tag scheme where higher = newer) and the maintainer's most recent commit message is literally 'bumped action because of solana stable' — i.e. upstream is aware of the brittleness but consumers still get 'stable' as the de facto default. Pinning a concrete version is the only defensive answer available to us. 3.1.10 is the Solana CLI version recommended by Anchor 1.0.0's release notes and pinned by Anchor's own CI from 1.0.0-rc.5 onward (see the Anchor CHANGELOG). It is also compatible with our anchor-version: 1.0.0 pin. The non-anchor frameworks are pinned to the same value to keep the CI matrix consistent. The 'beta' steps in native.yml and pinocchio.yml are intentionally left floating: they are the channel-tracking jobs and are already marked continue-on-error with a comment explaining the upstream beta 404 behaviour. A separate issue will be filed upstream at heyAyushh/setup-solana documenting the empty-version resolver bug. Bump in lockstep with anchor-version when upgrading Anchor. --- .github/workflows/anchor.yml | 9 ++++++++- .github/workflows/native.yml | 11 ++++++++++- .github/workflows/pinocchio.yml | 11 ++++++++++- .github/workflows/quasar.yml | 8 +++++++- 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/.github/workflows/anchor.yml b/.github/workflows/anchor.yml index 3f8e36133..1de8dcf8b 100644 --- a/.github/workflows/anchor.yml +++ b/.github/workflows/anchor.yml @@ -138,7 +138,14 @@ jobs: - uses: heyAyushh/setup-anchor@v4.999 with: anchor-version: 1.0.0 - solana-cli-version: stable + # Pinned to 3.1.10 (not `stable`) because heyAyushh/setup-anchor's + # `stable` resolver intermittently returns an empty version string, + # which makes the action curl https://release.anza.xyz/v/install and + # 404. 3.1.10 is the version recommended by Anchor 1.0.0's release + # notes and pinned by Anchor's own CI in 1.0.0-rc.5+. Bump in lockstep + # with anchor-version above. See upstream issue tracking the brittle + # `stable` behaviour. + solana-cli-version: 3.1.10 - name: Install Surfpool run: curl -sL https://run.surfpool.run/ | bash - name: Display Versions diff --git a/.github/workflows/native.yml b/.github/workflows/native.yml index 7799128ab..f9ce77b08 100644 --- a/.github/workflows/native.yml +++ b/.github/workflows/native.yml @@ -222,7 +222,16 @@ jobs: - name: Setup Solana Stable uses: heyAyushh/setup-solana@v5.9 with: - solana-cli-version: stable + # Pinned to 3.1.10 (not `stable`) because heyAyushh/setup-solana's + # `stable` resolver intermittently returns an empty version string, + # which makes the action curl https://release.anza.xyz/v/install and + # 404. 3.1.10 is the version recommended by Anchor 1.0.0's release + # notes; we use it here too to keep the matrix consistent across + # frameworks. The `beta` step below intentionally stays floating — + # it's the channel-tracking job and is already marked + # continue-on-error. See upstream issue tracking the brittle `stable` + # behaviour. + solana-cli-version: 3.1.10 - name: Build and Test with Stable run: | source build_and_test.sh diff --git a/.github/workflows/pinocchio.yml b/.github/workflows/pinocchio.yml index f63582b14..84ac3bc11 100644 --- a/.github/workflows/pinocchio.yml +++ b/.github/workflows/pinocchio.yml @@ -222,7 +222,16 @@ jobs: - name: Setup Solana Stable uses: heyAyushh/setup-solana@v5.9 with: - solana-cli-version: stable + # Pinned to 3.1.10 (not `stable`) because heyAyushh/setup-solana's + # `stable` resolver intermittently returns an empty version string, + # which makes the action curl https://release.anza.xyz/v/install and + # 404. 3.1.10 is the version recommended by Anchor 1.0.0's release + # notes; we use it here too to keep the matrix consistent across + # frameworks. The `beta` step below intentionally stays floating — + # it's the channel-tracking job and is already marked + # continue-on-error. See upstream issue tracking the brittle `stable` + # behaviour. + solana-cli-version: 3.1.10 - name: Build and Test with Stable run: | source build_and_test.sh diff --git a/.github/workflows/quasar.yml b/.github/workflows/quasar.yml index 25e604b64..ff172be4e 100644 --- a/.github/workflows/quasar.yml +++ b/.github/workflows/quasar.yml @@ -197,7 +197,13 @@ jobs: - name: Setup Solana Stable uses: heyAyushh/setup-solana@v5.9 with: - solana-cli-version: stable + # Pinned to 3.1.10 (not `stable`) because heyAyushh/setup-solana's + # `stable` resolver intermittently returns an empty version string, + # which makes the action curl https://release.anza.xyz/v/install and + # 404. 3.1.10 is the version recommended by Anchor 1.0.0's release + # notes; using it here keeps the matrix consistent across frameworks. + # See upstream issue tracking the brittle `stable` behaviour. + solana-cli-version: 3.1.10 - name: Install Quasar CLI # Pinned to quasar rev 3d6fb0d8 (the HEAD this migration was written # against, immediately after PRs #195 + #196). The next merged PR