-
Notifications
You must be signed in to change notification settings - Fork 964
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
feat: add job_name to github context #3489
base: main
Are you sure you want to change the base?
Conversation
Hi, thanks for the patch. I am really looking forward to have it merged! By the way, what do you think about including the job ID? It would help with a bridge from https://api.github.com/repos/ClickHouse/ClickHouse/actions/runs/8363985040/jobs?per_page=1&page=13 to https://api.github.com/repos/ClickHouse/ClickHouse/actions/jobs/22961931602 in no additional actions |
@Felixoid unfortunately the job id needed for the api is not present, the System Variables {
"system.isScheduled": {
"value": "False"
},
"system.servertype": {
"value": "Hosted"
},
"system.culture": {
"value": ""
},
"system.pipelineStartTime": {
"value": "2024-10-04 11:28:22+00:00"
},
"system.runner.lowdiskspacethreshold": {
"value": "100"
},
"DistributedTask.NewActionMetadata": {
"value": "true"
},
"DistributedTask.EnableCompositeActions": {
"value": "true"
},
"DistributedTask.EnhancedAnnotations": {
"value": "true"
},
"DistributedTask.UploadStepSummary": {
"value": "true"
},
"DistributedTask.ForceGithubJavascriptActionsToNode16": {
"value": "true"
},
"DistributedTask.ForceGithubJavascriptActionsToNode20": {
"value": "true"
},
"DistributedTask.AddWarningToNode12Action": {
"value": "true"
},
"DistributedTask.AddWarningToNode16Action": {
"value": "true"
},
"DistributedTask.LogTemplateErrorsAsDebugMessages": {
"value": "true"
},
"DistributedTask.AllowRunnerContainerHooks": {
"value": "true"
},
"DistributedTask.DeprecateStepOutputCommands": {
"value": "true"
},
"DistributedTask.UseWhich2": {
"value": "true"
},
"DistributedTask.DetailUntarFailure": {
"value": "true"
},
"DistributedTask.UseActionArchiveCache": {
"value": "true"
},
"DistributedTask.EnableJobServerQueueTelemetry": {
"value": "true"
},
"DistributedTask.MarkJobAsFailedOnWorkerCrash": {
"value": "true"
},
"Actions.EnableHttpRedirects": {
"value": "true"
},
"system.teamProjectId": {
"value": "00000000-0000-0000-0000-000000000000"
},
"build.buildId": {
"value": "666"
},
"build.containerId": {
"value": "18431423"
},
"system.workflowFilePath": {
"value": ".github/workflows/example.yaml"
},
"system.phaseDisplayName": {
"value": "build"
},
"system.phaseId": {
"value": "08529e53-a864-5e57-8255-b4ac74128910"
},
"system.phaseName": {
"value": "build"
},
"system.phaseAttempt": {
"value": "1"
},
"system.jobIdentifier": {
"value": "build-with-reusable-workflow-with-matrix._20_x.build.__default"
},
"system.jobAttempt": {
"value": "1"
},
"System.JobPositionInPhase": {
"value": "1"
},
"System.TotalJobsInPhase": {
"value": "1"
},
"system.github.job": {
"value": "build"
},
"system.jobDisplayName": {
"value": "build-with-reusable-workflow-with-matrix (20.x) / build"
},
"system.jobId": {
"value": "0315e721-8f55-564f-db13-292a0596e43b"
},
"system.jobName": {
"value": "__default"
},
"system.github.token.permissions": {
"value": "{\"Contents\":\"read\",\"Metadata\":\"read\",\"Packages\":\"read\"}"
},
"system.workflowFileFullPath": {
"value": "qoomon/actions--context/.github/workflows/example-reusable.yml"
},
"system.github.token": {
"value": "***",
"isSecret": true
},
"system.github.results_endpoint": {
"value": "https://results-receiver.actions.githubusercontent.com/"
},
"system.github.results_upload_with_sdk": {
"value": "True"
},
"system.workflowFileRef": {
"value": "refs/heads/main"
},
"system.workflowFileSha": {
"value": "d2fec0f6c3c70eea6c8124a0a9458c7aea4565f4"
},
"system.runnerEnvironment": {
"value": "github-hosted"
},
"system.orchestrationId": {
"value": "595b9a62-e373-4b13-ba58-2f92a6c39f3a.build-with-reusable-workflow-with-matrix._20_x.build.__default"
},
"system.runnerGroupName": {
"value": "GitHub Actions"
}
} |
I see. Even a correct jobDisplayName is already a solid solution for the job ID resolving. So, many kudos to you |
Oh, wait. What about a defined env variable for this value? |
@Felixoid No unfortunately not. |
Thanks for making this PR. Fwiw, it's also asked for in https://github.com/orgs/community/discussions/16614 |
This would make life exponentially easier. |
I have been involved tangentially with @qoomon a bit on this. @qoomon Correct me if i am wrong. Not Short, sadly too long full detail version: Up to this point it seems like a quality of life issue not necessarily a bug... But... Since the system.jobId contains a GUID that is not present in job api endpoint, the only unique identifier is the JOB name. The issue becomes apparent when you apply a matrix or reusable workflow: EDIT: (Since the is the only guaranteed unique data shared between the job level api and the github.job context) Something similar was added for the Telemetry. |
Currently there is no system variable that contains a job id value that can be used to request the github api for a job.
system.jobId
contains a GUID and therefore is useless for job API endpointBy providing the real/effective job name (as in the github api response of jobs), we are able to determine and request the current job by using list-jobs-for-a-workflow-run-attempt API endpoint and find the actual job by its name.
This would solve a lot of community requests e.g., https://github.com/orgs/community/discussions/8945
There was an attempt from attempt already from @TingluoHuang to fix this issue two years ago #1950
Update
It looks like the job.name of the api response job objects getting truncated at 100 characters 🤯.
So to make this work always the api response need to be adjusted as well.