Skip to content

fix(ci): use ubuntu-latest for test/audit/publish release jobs#30

Merged
mickvandijke merged 2 commits intomainfrom
fix/release-ubuntu-latest
Mar 18, 2026
Merged

fix(ci): use ubuntu-latest for test/audit/publish release jobs#30
mickvandijke merged 2 commits intomainfrom
fix/release-ubuntu-latest

Conversation

@mickvandijke
Copy link
Copy Markdown
Collaborator

Summary

  • Test, security-audit, validate, publish-crate, and release jobs now use ubuntu-latest
  • Only build, installers-linux, and sign jobs remain on ubuntu-22.04 (need GLIBC 2.35 compat for deployed binaries)

Problem

The release workflow's test job failed with linker errors:

undefined symbol: __isoc23_strtol
undefined symbol: __isoc23_sscanf

These are C23 glibc symbols referenced by lmdb-master-sys and aws-lc-sys headers that aren't available on ubuntu-22.04's glibc. The CI workflow (ci.yml) already uses ubuntu-latest for tests.

🤖 Generated with Claude Code

ubuntu-22.04 causes glibc C23 symbol errors (__isoc23_strtol,
__isoc23_sscanf) when linking lmdb-master-sys and aws-lc-sys.
Only build/installer/sign jobs need ubuntu-22.04 for GLIBC 2.35 compat.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings March 18, 2026 14:07
Only build and installers-linux need ubuntu-22.04 for GLIBC 2.35
compat on distributed binaries. The sign job runs only on CI.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates the release GitHub Actions workflow to run validation/testing/audit/publish/release steps on a newer Ubuntu runner to avoid glibc/C23 symbol linker failures seen on ubuntu-22.04, while keeping artifact-building/signing steps pinned to ubuntu-22.04 for GLIBC 2.35 compatibility of distributed binaries.

Changes:

  • Switch validate, test, and security-audit jobs to ubuntu-latest.
  • Switch publish-crate and release jobs to ubuntu-latest.
  • Keep build/install/sign jobs on ubuntu-22.04 to preserve runtime compatibility targets.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

validate:
name: Validate Release
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented Mar 18, 2026

Greptile Summary

This PR fixes CI failures in release.yml caused by missing C23 glibc symbols (__isoc23_strtol, __isoc23_sscanf) from lmdb-master-sys and aws-lc-sys when running on ubuntu-22.04. Five jobs that don't produce deployment binaries are migrated to ubuntu-latest, bringing them in line with what ci.yml already uses.

  • validate, test, security-audit: Moved to ubuntu-latest — these jobs run formatting checks, clippy, tests, and audits but produce no distributed binaries, so glibc portability is irrelevant.
  • publish-crate: Moved to ubuntu-latest — publishes Rust source code to crates.io, not compiled binaries.
  • release: Moved to ubuntu-latest — only downloads pre-built signed artifacts and creates the GitHub Release via the API; no compilation occurs.
  • build, installers-linux, sign: Correctly remain on ubuntu-22.04 to ensure distributed binaries link against GLIBC 2.35, maintaining compatibility with server deployments on older Linux distributions.

The change is well-scoped and consistent with the existing ci.yml approach.

Confidence Score: 5/5

  • This PR is safe to merge — it makes a minimal, targeted change to runner labels with no effect on code or build logic.
  • The diff is purely a configuration change (5 runs-on label replacements), the reasoning is sound, the split between jobs that produce portable binaries (kept on ubuntu-22.04) and jobs that do not (moved to ubuntu-latest) is correct, and the approach matches what ci.yml already uses.
  • No files require special attention.

Important Files Changed

Filename Overview
.github/workflows/release.yml Five jobs migrated from ubuntu-22.04 to ubuntu-latest (validate, test, security-audit, publish-crate, release); binary-producing jobs (build, installers-linux, sign) correctly remain on ubuntu-22.04 for GLIBC 2.35 compatibility. No issues found.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["validate\n🟢 ubuntu-latest"] --> B["test\n🟢 ubuntu-latest"]
    A --> C["security-audit\n🟢 ubuntu-latest"]
    B --> D["build\n🔵 ubuntu-22.04 matrix"]
    C --> D
    A --> D
    D --> E["installers-linux\n🔵 ubuntu-22.04"]
    A --> F["installers-windows\nwindows-latest"]
    D --> F
    E --> G["sign\n🔵 ubuntu-22.04"]
    F --> G
    D --> G
    B --> H["publish-crate\n🟢 ubuntu-latest"]
    C --> H
    A --> H
    G --> I["release\n🟢 ubuntu-latest"]
    A --> I

    classDef latest fill:#22c55e,color:#fff,stroke:#16a34a
    classDef focal fill:#3b82f6,color:#fff,stroke:#2563eb
    classDef windows fill:#8b5cf6,color:#fff,stroke:#7c3aed

    class A,B,C,H,I latest
    class D,E,G focal
    class F windows
Loading

Last reviewed commit: "fix(ci): switch sign..."

@mickvandijke mickvandijke merged commit 6b69de7 into main Mar 18, 2026
12 checks passed
@mickvandijke mickvandijke deleted the fix/release-ubuntu-latest branch March 18, 2026 14:16
mickvandijke added a commit that referenced this pull request Apr 1, 2026
Implements the remaining untested scenarios from REPLICATION_DESIGN.md
Section 18, bringing coverage from 47/56 to 56/56:

- #20: paid-list local hit bypasses presence quorum (quorum.rs)
- #22: paid-list rejection below threshold (quorum.rs)
- #29: audit start gate during bootstrap (audit.rs)
- #30: audit peer selection from sampled keys (audit.rs)
- #31: audit periodic cadence with jitter bounds (config.rs)
- #32: dynamic challenge size equals PeerKeySet (audit.rs)
- #47: bootstrap claim grace period in audit path (audit.rs)
- #48: bootstrap claim abuse after grace period (paid_list.rs)
- #53: audit partial per-key failure with mixed responsibility (audit.rs)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
mickvandijke added a commit that referenced this pull request Apr 1, 2026
Implements the remaining untested scenarios from REPLICATION_DESIGN.md
Section 18, bringing coverage from 47/56 to 56/56:

- #20: paid-list local hit bypasses presence quorum (quorum.rs)
- #22: paid-list rejection below threshold (quorum.rs)
- #29: audit start gate during bootstrap (audit.rs)
- #30: audit peer selection from sampled keys (audit.rs)
- #31: audit periodic cadence with jitter bounds (config.rs)
- #32: dynamic challenge size equals PeerKeySet (audit.rs)
- #47: bootstrap claim grace period in audit path (audit.rs)
- #48: bootstrap claim abuse after grace period (paid_list.rs)
- #53: audit partial per-key failure with mixed responsibility (audit.rs)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.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.

3 participants