Skip to content

Simplify and validate release build-output action configuration - #136

Open
msarahan wants to merge 3 commits into
rapidsai:mainfrom
msarahan:agent/release-build-output-container
Open

Simplify and validate release build-output action configuration#136
msarahan wants to merge 3 commits into
rapidsai:mainfrom
msarahan:agent/release-build-output-container

Conversation

@msarahan

@msarahan msarahan commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Posted by Codex (GPT-5) on behalf of @msarahan. This pull request description is LLM-generated; readers should treat its content accordingly.

Summary

Simplify release-build-output-dispatch to accept one schema-validated config JSON object and make the action work reliably from both host and container jobs.

The action now:

  • accepts artifact_type, component_id, output_directory, and any custom-producer package/artifact selection through one config input;
  • derives artifact descriptors and package identity for standard Conda and wheel outputs;
  • requires custom producers to provide explicit artifact descriptors and exactly one of inline package identity or a producer-created package_file;
  • validates the complete configuration before inspecting build outputs and reports field-specific errors as GitHub Actions annotations;
  • resolves its implementation relative to the checked-out action, including the host/container workspace-path translation needed by container jobs;
  • fixes the companion filenames as release-build-output.json and release-build-metadata.json, then uploads them with collected evidence as release-build-output-<source-artifact-name>; and
  • removes the redundant nested release-build-output/action.yml entry point.

Why

The previous interface exposed many related scalar inputs and allowed combinations that only failed later during materialization. It also checked out shared-actions and invoked a nested local action, which could resolve to a host-only path from a container job. A single discriminated JSON object gives standard and custom producers one explicit contract, while schema and runtime validation provide actionable failures early in the pipeline.

@msarahan msarahan added the DO NOT MERGE Development or canary PR; do not merge label Aug 7, 2026
@msarahan
msarahan force-pushed the agent/release-build-output-container branch from 76acdd5 to 3a9568f Compare August 7, 2026 18:55
@msarahan msarahan added improvement Improves an existing functionality non-breaking Introduces a non-breaking change and removed DO NOT MERGE Development or canary PR; do not merge labels Aug 13, 2026
@msarahan
msarahan marked this pull request as ready for review August 13, 2026 14:30
@msarahan
msarahan requested a review from a team as a code owner August 13, 2026 14:30
@msarahan
msarahan requested a review from jameslamb August 13, 2026 14:30
@msarahan
msarahan force-pushed the agent/release-build-output-container branch 3 times, most recently from 0197244 to 4144565 Compare August 13, 2026 15:45
@msarahan
msarahan force-pushed the agent/release-build-output-container branch from 4144565 to a18a4a7 Compare August 13, 2026 20:09
@msarahan msarahan added breaking Introduces a breaking change non-breaking Introduces a non-breaking change and removed non-breaking Introduces a non-breaking change breaking Introduces a breaking change labels Aug 13, 2026
@msarahan msarahan changed the title Make release output dispatch container-safe Simplify and validate release build-output action configuration Aug 17, 2026

@jameslamb jameslamb left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I did my best to review this.

My read is that this replaces a bunch of individual arguments with:

  • automatically calculating some of the values
  • allowing a few more values only needed in specific cases (like cuVS Java builds) to be passed in as a single dictionary via this new config: argument

At a surface level that sounds good to me! Less opportunity for misconfiguration across the repos, easier to change the behavior in the future.

My comments in this PR are light, but see my review on rapidsai/shared-workflows#609 ... I think documentation (ideally written by a human) in the release-build-output/ directory would be really helpful for folks to understand why this exists and what it does. I looked through the code, logs, and output from the testing PRs (rapidsai/dask-cuda#1672, rapidsai/nx-cugraph#274, NVIDIA/cuvs#2400) and think I have a picture of that, but I personally would find it hard to modify this setup if a new requirement came in.

Comment thread .pre-commit-config.yaml
# The runtime validator suite requires jq. pre-commit.ci validates the same
# valid fixtures against config.schema.json; GitHub Actions runs the full
# valid/invalid runtime suite on an Ubuntu runner with jq.
skip: [actionlint-docker, release-build-output-config]

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
skip: [actionlint-docker, release-build-output-config]
# why skip these in pre-commit.ci?
#
# * 'actionlint-docker': needs docker
# * 'release-build-output-config': need 'jq'
#
# There are covered in other CI jobs where we have more control over the runtime evnvironment.
#
skip: [actionlint-docker, release-build-output-config]

This comment is really verbose, overly-specific, and only applies to release-build-output-config even though its placement makes it looks like it applies to everything in skip:. Would you consider something like this suggestion?

description: >-
Release build-output JSON object containing artifact_type, component_id, output_directory, and custom artifact
selection and package identity when artifact_type is custom. Schema and field documentation:
https://github.com/rapidsai/shared-actions/blob/main/release-build-output/config.schema.json

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
https://github.com/rapidsai/shared-actions/blob/main/release-build-output/config.schema.json
JSON string with configuration for this action. Schema and field documentation:
https://github.com/rapidsai/shared-actions/blob/main/release-build-output/config.schema.json

I don't think repeating the literal field names and the implementation detail "... and package identity when artifact_type is custom" is helpful. Let's simplify this and redirect back to the schema.

]
},
"component_id": {
"description": "Stable release component ID shared by the selected files and their matrix variants.",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

How do I figure out a value for this?

Do I generate a UUID and provide my own? Is this auto-generated by the code?

That type of detail would be helpful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

improvement Improves an existing functionality non-breaking Introduces a non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants