Repository navigation
Support release-candidate builds as a first-class mode - #274
Conversation
|
Thanks for the review, @gforsyth. I got the LLM to make a few corrections, but I'm going to take a closer look myself tomorrow. I'll ping you when I think it's ready. |
gforsyth
left a comment
There was a problem hiding this comment.
Looks good overall -- just the comment about some new env-vars and needing to document them.
| source_version="${RAPIDS_RELEASE_CANDIDATE_SOURCE_VERSION:-}" | ||
| if [[ -z "${source_version}" ]]; then | ||
| if [[ ! -f VERSION ]]; then | ||
| echo "RAPIDS_RELEASE_CANDIDATE_VERSION requires a VERSION file or RAPIDS_RELEASE_CANDIDATE_SOURCE_VERSION" >&2 |
There was a problem hiding this comment.
I think RAPIDS_RELEASE_CANDIDATE_VERSION and RAPIDS_RELEASE_CANDIDATE_SOURCE_VERSION need to be documented at the top of this script.
Additionally, this error message should clarify what RAPIDS_RELEASE_CANDIDATE_SOURCE_VERSION is
On reflection, I don't think I understand this. I get Are both of these env-vars being passed to |
|
From Codex: The second variable exists because many repositories run: RAPIDS_RELEASE_CANDIDATE_SOURCE_VERSION: |
|
It's a safety check. The new release platform has the final tag as an input parameter. This safety check is asserting that the input parameter matches the VERSION file that's in our source code. So the question is whether we would ever want an emitted package version that does not match the VERSION file. I'm inclined to say "no" to that, so I'm going to work on simplifying this stuff using that assumption. |
👍 agree with that assumption |
| elif git cat-file -e HEAD:VERSION 2>/dev/null; then | ||
| # Some build scripts redirect this command's output back to VERSION, | ||
| # which truncates the working file before this script starts. | ||
| candidate_version="$(git show HEAD:VERSION | sed -n '1p')" |
There was a problem hiding this comment.
I still don't understand how we arrive at this gate, but if it does ever happen, I think the handling here is correct.
|
/merge |
Why
The release platform builds final-version artifacts before their source tags are published. This is a new build type that is different from existing behaviors.
The behaviors are:
rapidsaiandrapidsai-nightlychannels when solving, which is for isolating our release candidate artifacts, ensuring that they are a self-consistent working setWhat changes
rapids-generate-versionacceptsRAPIDS_RELEASE_CANDIDATE_VERSIONand returns that exact final, three-component numeric version without requiring a published Git tag.RAPIDS_RELEASE_CANDIDATE_SOURCE_VERSIONpreserves that source value when a build script writes generated output back toVERSION.rapids-is-release-buildrecognizesRAPIDS_BUILD_TYPE=release-candidate, allowing shared workflows to pass the mode through directly instead of shadowing this command at runtime.rapids-rattler-channel-stringgives candidates explicit channel policy: use caller-prepended frozen candidate channels andconda-forge, with neither public RAPIDS channel added.rapids-github-run-idrecognizes candidate runs asbuild.yamlruns.release-candidateas a supported build type.