Skip to content

Consolidate CI work from #31 and #34#36

Draft
hoolioh wants to merge 9 commits into
mainfrom
julio/consolidate-builder-ci
Draft

Consolidate CI work from #31 and #34#36
hoolioh wants to merge 9 commits into
mainfrom
julio/consolidate-builder-ci

Conversation

@hoolioh
Copy link
Copy Markdown

@hoolioh hoolioh commented May 5, 2026

Why?

FUP to #34 (chained PR). Consolidates #31 and #34: #34 provides the build
infrastructure (modular tasks/build.rake, pre-built Datadog Ruby images,
SHA256-verified rustup), this PR adds the missing packaging and publishing
layer from #31 on top of it.

What does this PR do?

  • Rakefile: replaces the old HTTP-gem-based fetch/extract approach
    with net/http-based fetch_release_artifacts and a new
    package_from_github convenience task; simplifies package to validate
    all platforms are present in vendor/ and build a single fat gem; adds
    push_gems task for CI publishing; updates push_to_rubygems to use a
    glob instead of hardcoded gem names; removes the http gem dependency
  • libdatadog.gemspec: adds SUPPORTED_RUBY_PLATFORMS constant and
    logic to include pre-built vendor binaries for all supported platforms
    when packaging
  • publish.yml: overhauled — now triggers on version tags (v*) in
    addition to manual dispatch; calls the build.yml workflow; downloads
    the pre-packaged gems artifact and publishes via push_gems
  • main.yml: adds workflow_dispatch trigger; adds contents: read
    permission to the build job; gates the complete job on build passing
  • test.yml: removes the extract + package steps (packaging is now
    handled in build.yml's own package job)
  • build.yml: installs llvm-nm in the package job so the
    symbol-prefix spec can inspect the Darwin .dylib alongside Linux .so
    files
  • spec/gem_packaging.rb: adds SUPPORTED_RUBY_PLATFORMS, a CI-only
    check that gems for all platforms were produced, and cross-platform
    shared-library symbol inspection using llvm-nm with a fallback to
    native nm
  • spec/libdatadog_spec.rb: strips -gnu suffix from the platform
    string when detecting the current platform
  • .gitignore: adds /build/ and /target (Rust build artifacts)

How to test the change?

Watch CI on this branch; verify:

  1. All platform builds complete in the build workflow
  2. The package job produces a gems artifact containing .gem files for
    all 5 platforms
  3. The complete gate turns green only after build, test, and nix
    all pass

Additional Notes

The package task now fails fast if any platform's vendor directory is
missing, rather than silently building an incomplete gem.

lloeki and others added 9 commits May 4, 2026 15:03
These fail on aarch64-linux-musl
rustup is a no-go; from libdatadog itself:

    Don't use rustup! For some reason it provides different native-static-libs
    and this can cause problems for users.
    Also, it doesn't understand x86_64-alpine-linux-musl like the OS's cargo.
@hoolioh hoolioh changed the base branch from main to lloeki/builder-ci May 5, 2026 10:14
@lloeki lloeki force-pushed the lloeki/builder-ci branch from 2809bd4 to 3a47bdf Compare May 21, 2026 11:49
Base automatically changed from lloeki/builder-ci to main May 22, 2026 12:11
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