From 2831d7081fd5e34d5ad3b8ab1c3604ca45ca4ed2 Mon Sep 17 00:00:00 2001 From: pallyoung Date: Thu, 13 Aug 2026 19:00:52 +0800 Subject: [PATCH] fix(ci): use fresh acceptance for current stable --- .github/workflows/desktop-acceptance.yml | 14 ++++++++++++++ scripts/github-workflows.test.ts | 5 +++++ 2 files changed, 19 insertions(+) diff --git a/.github/workflows/desktop-acceptance.yml b/.github/workflows/desktop-acceptance.yml index bf0f6435..b198d81d 100644 --- a/.github/workflows/desktop-acceptance.yml +++ b/.github/workflows/desktop-acceptance.yml @@ -28,6 +28,9 @@ jobs: acceptance_scenarios: ${{ steps.channel.outputs.acceptance_scenarios }} steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Resolve acceptance channel id: channel shell: bash @@ -49,6 +52,17 @@ jobs: has_previous_desktop=false if gh api "repos/${GITHUB_REPOSITORY}/releases/latest" > "${latest_release_json}" 2> "${latest_release_error}"; then has_previous_desktop=$(node -e "const release=require(process.argv[1]); process.stdout.write(Array.isArray(release.assets)&&release.assets.some((asset)=>asset?.name==='desktop-channel.json')?'true':'false')" "${latest_release_json}") + if [[ "${has_previous_desktop}" == "true" ]]; then + latest_tag=$(node -e "const release=require(process.argv[1]); process.stdout.write(release.tag_name)" "${latest_release_json}") + latest_channel="${RUNNER_TEMP}/coder-studio-latest-channel.json" + gh release download "${latest_tag}" \ + --repo "${GITHUB_REPOSITORY}" \ + --pattern desktop-channel.json \ + --output "${latest_channel}" + current_shell=$(node -p "require('./packages/desktop/package.json').version") + current_runtime=$(node -p "require('./packages/cli/package.json').version") + has_previous_desktop=$(node -e "const channel=require(process.argv[1]); const currentShell=process.argv[2]; const currentRuntime=process.argv[3]; process.stdout.write(channel?.shell?.version===currentShell&&channel?.runtimes?.['win32-x64']?.version===currentRuntime&&channel?.runtimes?.['linux-x64']?.version===currentRuntime?'false':'true')" "${latest_channel}" "${current_shell}" "${current_runtime}") + fi elif ! grep -q '(HTTP 404)' "${latest_release_error}"; then cat "${latest_release_error}" >&2 exit 1 diff --git a/scripts/github-workflows.test.ts b/scripts/github-workflows.test.ts index 2700d262..934d2ce0 100644 --- a/scripts/github-workflows.test.ts +++ b/scripts/github-workflows.test.ts @@ -262,6 +262,11 @@ describe("GitHub workflow boundaries", () => { 'public_key_artifact="desktop-acceptance-public-key-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"' ); expect(resolveChannel?.run).toContain("has_previous_desktop=false"); + expect(resolveChannel?.run).toContain('--repo "${GITHUB_REPOSITORY}"'); + expect(resolveChannel?.run).toContain("require('./packages/desktop/package.json').version"); + expect(resolveChannel?.run).toContain("require('./packages/cli/package.json').version"); + expect(resolveChannel?.run).toContain("channel?.shell?.version===currentShell"); + expect(resolveChannel?.run).toContain("?'false':'true'"); expect(resolveChannel?.run).toContain('acceptance_scenarios=\'["fresh-native","fresh-wsl"]\''); expect(generateKey?.run).toContain("openssl genpkey -algorithm Ed25519"); expect(signingKeyUpload?.with).toMatchObject({