Consolidate CI work from #31 and #34#36
Draft
hoolioh wants to merge 9 commits into
Draft
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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?
fetch/extractapproachwith
net/http-basedfetch_release_artifactsand a newpackage_from_githubconvenience task; simplifiespackageto validateall platforms are present in
vendor/and build a single fat gem; addspush_gemstask for CI publishing; updatespush_to_rubygemsto use aglob instead of hardcoded gem names; removes the
httpgem dependencylibdatadog.gemspec: addsSUPPORTED_RUBY_PLATFORMSconstant andlogic to include pre-built vendor binaries for all supported platforms
when packaging
publish.yml: overhauled — now triggers on version tags (v*) inaddition to manual dispatch; calls the
build.ymlworkflow; downloadsthe pre-packaged
gemsartifact and publishes viapush_gemsmain.yml: addsworkflow_dispatchtrigger; addscontents: readpermission to the
buildjob; gates thecompletejob onbuildpassingtest.yml: removes theextract+packagesteps (packaging is nowhandled in
build.yml's ownpackagejob)build.yml: installsllvm-nmin thepackagejob so thesymbol-prefix spec can inspect the Darwin
.dylibalongside Linux.sofiles
spec/gem_packaging.rb: addsSUPPORTED_RUBY_PLATFORMS, a CI-onlycheck that gems for all platforms were produced, and cross-platform
shared-library symbol inspection using
llvm-nmwith a fallback tonative
nmspec/libdatadog_spec.rb: strips-gnusuffix from the platformstring when detecting the current platform
.gitignore: adds/build/and/target(Rust build artifacts)How to test the change?
Watch CI on this branch; verify:
buildworkflowpackagejob produces agemsartifact containing.gemfiles forall 5 platforms
completegate turns green only afterbuild,test, andnixall pass
Additional Notes
The
packagetask now fails fast if any platform's vendor directory ismissing, rather than silently building an incomplete gem.