Skip to content

ci: align agent toolchain versions#24

Merged
rickylabs merged 1 commit into
mainfrom
fix/ci-toolchain-versions
Jun 10, 2026
Merged

ci: align agent toolchain versions#24
rickylabs merged 1 commit into
mainfrom
fix/ci-toolchain-versions

Conversation

@rickylabs

Copy link
Copy Markdown
Owner

Summary

Fixes the CI/agent toolchain drift that let OpenHands and Copilot bootstrap with stale or mismatched runner tools.

Changes

  • Adds .github/toolchain.env as the shared NetScript CI/agent toolchain source:
    • Deno v2.7.11
    • .NET SDK 10.0.x / install channel 10.0
    • Aspire CLI 13.2.2
  • Updates Copilot setup to read that file, install Deno/.NET/Aspire from it, verify Aspire exactly matches the scaffold SDK constant, and provision latest stable Docker via docker/setup-docker-action@v5.
  • Updates OpenHands workflow hydration so PR-triggered runs get the toolchain file from the workflow/default-branch ref, even when the target PR branch is older.
  • Updates OpenHands bootstrap to fail closed instead of accepting stale tools:
    • upgrades/downgrades Deno to the configured exact 2.7.x patch
    • installs .NET 10 when only older SDKs are present
    • always installs Aspire CLI 13.2.2 over any stale preinstalled 8.x
    • fails if Docker or Docker Compose are unavailable

Why

The failing database.init E2E gate is caused by CI using an incompatible Aspire CLI/runtime environment. The project scaffold constants target Aspire 13.2.2, so CI and cloud-agent bootstrap must install that version instead of using whichever aspire binary happens to be on the runner.

Validation

  • bash -n .openhands/setup.sh
  • Parsed both workflow YAML files with jsr:@std/yaml
  • git diff --check

The Deno YAML parse emitted existing workspace config warnings from examples/playground/deno.json; both workflow files parsed successfully.

@rickylabs
rickylabs merged commit 7fcea3b into main Jun 10, 2026
1 of 3 checks passed
@augmentcode

augmentcode Bot commented Jun 10, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: Aligns CI/agent bootstrap tooling so Copilot/OpenHands runs use the same pinned Deno/.NET/Aspire versions.

Changes:

  • Introduces .github/toolchain.env as the single source of truth for toolchain pins.
  • Updates the Copilot setup workflow to read those pins, install Deno/.NET/Aspire, and verify the Aspire version matches scaffold constants.
  • Adds Docker provisioning via docker/setup-docker-action@v5 in Copilot and OpenHands workflows.
  • Updates OpenHands hydration so PR runs pull the toolchain file from the workflow ref.
  • Makes OpenHands bootstrap fail closed by enforcing tool versions and requiring Docker/Compose.

🤖 Was this summary useful? React with 👍 or 👎

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 2 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

installer_url="https://raw.githubusercontent.com/dotnet/aspire/d7d0b6759ce4b936c76bc4775814d27db560dd6d/eng/scripts/get-aspire-cli.sh"
installer_sha256="df1247d87f6e5ca83e71abf55f78bca1bd9a421a3f2f0fd5481f153fc958632a"
aspire_version="${{ steps.toolchain.outputs.aspire-version }}"
installer_url="https://aspire.dev/install.sh"

@augmentcode augmentcode Bot Jun 10, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.github/workflows/copilot-setup-steps.yml:69: Switching to installer_url="https://aspire.dev/install.sh" without any pin/hash verification means CI is now trusting a mutable remote script, which weakens supply-chain integrity compared to the previous pinned+verified installer.

Severity: high

Other Locations
  • .openhands/setup.sh:50

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

aspire --version
actual="$(aspire --version)"
echo "$actual"
test "$actual" = "${{ steps.toolchain.outputs.aspire-version }}"

@augmentcode augmentcode Bot Jun 10, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.github/workflows/copilot-setup-steps.yml:83: test "$actual" = "..." assumes aspire --version outputs exactly the raw version string; if the CLI ever includes a prefix/suffix this will fail even when the correct version is installed.

Severity: medium

Other Locations
  • .openhands/setup.sh:65

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant