Skip to content

chore: update CI runners and dependencies for macOS and Windows#505

Merged
kinyoklion merged 4 commits intomainfrom
devin/1773080391-fix-ci-runners
Mar 10, 2026
Merged

chore: update CI runners and dependencies for macOS and Windows#505
kinyoklion merged 4 commits intomainfrom
devin/1773080391-fix-ci-runners

Conversation

@kinyoklion
Copy link
Member

@kinyoklion kinyoklion commented Mar 9, 2026

BEGIN_COMMIT_OVERRIDE
chore: Update CI runners and dependencies for macOS and Windows
chore: Add arm64 mac builds.
END_COMMIT_OVERRIDE

Summary

Updates CI infrastructure to fix broken macOS and Windows builds, and adds dual-architecture macOS release artifacts:

  1. macOS runners: Replaced deprecated macos-13 with macos-15 across all 8 CI/test workflow files. macos-13 has been fully removed from GitHub Actions and was causing all Mac jobs to be cancelled.

  2. Windows OpenSSL: Updated the chocolatey OpenSSL package from 3.5.4 to 3.6.1. The 3.5.4 installer was removed from slproweb.com's download server (returning 404), causing all Windows CI jobs to fail.

  3. macOS Boost pin: Pinned Homebrew Boost to boost@1.85 on macOS. The default Boost (1.90) on macos-15 is incompatible with the vendored foxy library — Boost 1.90 removed several boost::beast::http::field members (proxy_authentication_info, proxy_features, proxy_instruction) that foxy references. A follow-up PR will update the vendored foxy code and remove the pin.

  4. Dual-architecture macOS release artifacts: Release workflows (release-please.yml, manual-sdk-release-artifacts.yml) now produce both x64 and arm64 macOS binaries:

    • x64 artifacts (mac-clang-x64-*.zip) built on macos-15-large (Intel)
    • arm64 artifacts (mac-clang-arm64-*.zip) built on macos-15 (Apple Silicon)
    • The sdk-release composite action accepts a new mac_artifact_arch input (default: x64) to parameterize artifact filenames
    • Separate SLSA provenance jobs are included for each architecture (e.g. macos-arm64-client-multiple-provenance.intoto.jsonl)

All 37 CI checks pass (Linux, Windows, macOS).

Review & Testing Checklist for Human

  • macos-15-large runner availability: Release workflows now use macos-15-large for x64 macOS builds. This is a paid larger runner — verify your GitHub org has this runner label configured. This cannot be validated by PR CI since release workflows only trigger on actual releases.
  • Release workflow output wiring: The new arm64 jobs output hashes-macos-arm64 which feeds into corresponding provenance jobs. Verify the output names match between the release and provenance jobs in both release-please.yml and manual-sdk-release-artifacts.yml — these paths are only exercised during real releases.
  • Boost pin expiration: boost@1.85 is marked deprecated in Homebrew and will be disabled on 2026-04-05. A follow-up PR to update the vendored foxy library and unpin Boost must be completed before that date.

Suggested test plan: After merging, trigger a manual release artifact build via manual-sdk-release-artifacts.yml to validate that both macos-15-large (x64) and macos-15 (arm64) jobs succeed and produce correctly-named artifacts with provenance.

Notes

  • Requested by: @kinyoklion
  • Link to Devin Session
  • Follow-up needed: update vendored foxy for Boost 1.90 compatibility and remove the boost@1.85 pin before 2026-04-05.
  • OpenSSL 3.6.1 compatibility verified: SDK uses only stable OpenSSL APIs (SHA256/SHA1, Boost.Asio SSL, curl TLS options) with guaranteed ABI compatibility across OpenSSL 3.x minor versions. All Windows CI jobs pass.

Note

Medium Risk
CI-only changes, but switching macOS runners (and thus architecture/toolchain) and pinning core crypto/build dependencies can affect build outputs and release artifacts.

Overview
Updates GitHub Actions CI/release workflows to run on macos-15 instead of the removed macos-13, including smoketests and release artifact builds.

Adjusts dependency installation to keep builds green on the new runners: pins macOS Homebrew Boost to boost@1.85 and bumps the Windows Chocolatey OpenSSL package from 3.5.4 to 3.6.1.

Adds dual-architecture macOS release artifact support: x64 builds on macos-15-large and arm64 builds on macos-15.

Written by Cursor Bugbot for commit d0b80a8. This will update automatically on new commits. Configure here.

devin-ai-integration bot and others added 2 commits March 9, 2026 18:20
macos-13 has been deprecated and removed from GitHub Actions.
Update all workflow files to use macos-15.

Co-Authored-By: rlamb@launchdarkly.com <kingdewman@gmail.com>
…s CI

The previous version's download URL was removed from slproweb.com,
causing all Windows CI jobs to fail with 404 errors.

Co-Authored-By: rlamb@launchdarkly.com <kingdewman@gmail.com>
@devin-ai-integration
Copy link
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@devin-ai-integration
Copy link
Contributor

Adding devin-pr label.

The vendored foxy library is incompatible with Boost 1.90 (installed
by default on macos-15 via Homebrew). Pin to boost@1.85 until foxy
is updated to work with the newer Boost version.

Co-Authored-By: rlamb@launchdarkly.com <kingdewman@gmail.com>
@kinyoklion kinyoklion marked this pull request as ready for review March 9, 2026 19:21
@kinyoklion kinyoklion requested a review from a team as a code owner March 9, 2026 19:21
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

@kinyoklion kinyoklion marked this pull request as draft March 9, 2026 19:32
- sdk-release action: added mac_artifact_arch input (default x64) to
  parameterize macOS artifact filenames (mac-clang-{arch}-*.zip)
- release-please.yml: use macos-15-large (x64) for existing matrix,
  added separate arm64 jobs + provenance for client, server, server-redis
- manual-sdk-release-artifacts.yml: same pattern for manual releases
- Future releases will include both x64 and arm64 macOS artifacts

Co-Authored-By: rlamb@launchdarkly.com <kingdewman@gmail.com>
@kinyoklion
Copy link
Member Author

aside: Boost pinning is temporary a followup PR will update the code and unpin it.

@kinyoklion kinyoklion marked this pull request as ready for review March 9, 2026 20:06
if: runner.os == 'macOS'
shell: bash
run: |
brew install boost
Copy link
Member Author

Choose a reason for hiding this comment

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

aside: Temporary PIN. Then there is a followup PR. I wanted to start with a cleanly working CI.

if: runner.os == 'Windows'
shell: bash
run: |
choco install openssl --version 3.5.4 -y --no-progress
Copy link
Member Author

@kinyoklion kinyoklion Mar 10, 2026

Choose a reason for hiding this comment

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

aside: chocolatey removes versions pretty consistently. This one is gone, so the builds break.

Copy link
Member Author

@kinyoklion kinyoklion Mar 10, 2026

Choose a reason for hiding this comment

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

aside: Adding an ARM arch release artifact. Previously it was only inter.

aside: We may consider dropping the intel version, but probably not until apple drops it in their latest OS.

matrix:
# Each of the platforms for which release-artifacts need generated.
os: [ ubuntu-22.04, windows-2022, macos-13 ]
os: [ ubuntu-22.04, windows-2022, macos-15-large ]
Copy link
Member Author

Choose a reason for hiding this comment

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

aside: The large variant is intel.

@kinyoklion kinyoklion merged commit 322bbac into main Mar 10, 2026
42 checks passed
@kinyoklion kinyoklion deleted the devin/1773080391-fix-ci-runners branch March 10, 2026 16:53
devin-ai-integration bot added a commit that referenced this pull request Mar 10, 2026
The boost@1.85 pin was re-introduced when merging main (which
contains PR #505's pinned version). This commit re-applies the
unpin so macOS CI builds against the latest Homebrew Boost (1.90),
exercising the new BOOST_VERSION >= 109000 code path in foxy.

Co-Authored-By: rlamb@launchdarkly.com <kingdewman@gmail.com>
kinyoklion added a commit that referenced this pull request Mar 11, 2026
…506)

## Summary

Updates the vendored `foxy` library to compile against Boost 1.90 (which
removed three `boost::beast::http::field` enum values) while retaining
backward compatibility with Boost 1.8x. Unpins macOS Homebrew Boost from
the deprecated `boost@1.85` so it installs the latest version.

**Foxy change:** Adds a `#if BOOST_VERSION >= 109000` guard in
`export_connect_fields.hpp` around the `hop_by_hops` array. Boost 1.90
removed `proxy_authentication_info`, `proxy_features`, and
`proxy_instruction` from `boost::beast::http::field`, so the Boost 1.90+
path uses an 8-element array without those fields. The pre-1.90 path is
unchanged (11 elements).

**Boost unpin:** Reverts `brew install boost@1.85` → `brew install
boost` in `install-boost/action.yml`, so macOS CI builds against the
latest Homebrew Boost (currently 1.90). This removes the `boost@1.85`
pin introduced in PR #505, which had a Homebrew deprecation deadline of
**2026-04-05**.

Both `#if` branches are validated by CI: macOS builds use Boost 1.90
(`#if` path), Linux uses 1.81 and Windows uses 1.87 (`#else` path). All
36 CI checks pass.

## Review & Testing Checklist for Human

- [x] **Unpinning strategy**: Unpinning means macOS CI will track
Homebrew's latest Boost. Future Boost updates could introduce new
breakages in vendored `foxy`. Confirm this is acceptable vs. pinning to
`boost@1.90`.

**Test plan:** CI validates both preprocessor branches across all three
platforms. The macOS jobs passing confirm Boost 1.90 compatibility
(including that `proxy_connection` was not removed alongside the other
three fields). Linux and Windows jobs confirm the `#else` path still
compiles correctly with older Boost versions.

### Notes
- Requested by: @kinyoklion
- [Link to Devin
Session](https://app.devin.ai/sessions/20776de6453c4e8baa2e4486dfe9aaba)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> CI will now track Homebrew’s latest Boost on macOS, which can
introduce future build breakages. The code change is a small
compile-time guard but affects HTTP header filtering behavior across
Boost versions.
> 
> **Overview**
> macOS CI now installs Homebrew’s default `boost` package instead of
the pinned `boost@1.85`, so builds track the latest Boost release.
> 
> The vendored `foxy` header `export_connect_fields.hpp` is updated for
Boost 1.90+ by conditionally excluding the removed
`boost::beast::http::field` enum values (`proxy_authentication_info`,
`proxy_features`, `proxy_instruction`) via a `BOOST_VERSION >= 109000`
guard, preserving the previous hop-by-hop header list for older Boost
versions.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
5442186. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
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.

2 participants