-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Add JOB_ env vars #4053
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Add JOB_ env vars #4053
Conversation
Add env vars for top-level primitives in job context job.check_run_id => JOB_CHECK_RUN_ID job.status => JOB_STATUS
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds support for exposing job context primitives as environment variables by implementing the IEnvironmentContextData interface on JobContext. The implementation allows job.check_run_id and job.status to be accessible as $JOB_CHECK_RUN_ID and $JOB_STATUS environment variables respectively.
- Implements
IEnvironmentContextDatainterface onJobContextclass - Adds
GetRuntimeEnvironmentVariables()method to expose job context data as environment variables - Includes comprehensive unit tests to verify the environment variable generation functionality
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| src/Runner.Worker/JobContext.cs | Implements IEnvironmentContextData interface and adds method to convert job context properties to environment variables |
| src/Test/L0/Worker/JobContextL0.cs | Adds unit tests to verify correct environment variable generation from job context data |
| { | ||
| if (data.Value is StringContextData value) | ||
| { | ||
| yield return new KeyValuePair<string, string>($"JOB_{data.Key.ToUpperInvariant()}", value); |
Copilot
AI
Sep 22, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Implicit conversion from StringContextData to string may not work as expected. Use value.ToString() to explicitly convert the value to a string.
| yield return new KeyValuePair<string, string>($"JOB_{data.Key.ToUpperInvariant()}", value); | |
| yield return new KeyValuePair<string, string>($"JOB_{data.Key.ToUpperInvariant()}", value.ToString()); |
| { | ||
| if (data.Value is StringContextData value) | ||
| { | ||
| yield return new KeyValuePair<string, string>($"JOB_{data.Key.ToUpperInvariant()}", value); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would go for a GITHUB_JOB_ prefix instead of just JOB_ to make it more consistent to other environment variables and to point out that these variables are github context variables.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's not a bad idea, I'm curious to see what the maintainers think. I had originally considered that, but:
- It makes it less consistent with how other context -> env vars work, i.e.
github.->GITHUB_andrunner.->RUNNER_ - There's potentially a risk of collisions if any
github.job_...fields are added in the future, since those would also have aGITHUB_JOB_prefix
Personally my preference would have been to name the context field github.job_id, in which case the env var could just be GITHUB_JOB_ID, but I think that ship has sailed 🫤
cc @ericsciple
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jenseng I think you are right your name pattern makes sense then
|
Hey @jenseng wondering if you're still hoping to get this merged 🙏🏼 excited about it! |
@alexevanczuk absolutely! Just waiting for the GitHub folks to review it🤞 |
Add env vars for top-level job context primitives, i.e.
job.check_run_id=>$JOB_CHECK_RUN_IDjob.status=>$JOB_STATUSReferences