Skip to content

Generate job UUID in start-proxy action - #4049

Open
mbg wants to merge 15 commits into
mainfrom
mbg/start-proxy/job-uuid
Open

Generate job UUID in start-proxy action#4049
mbg wants to merge 15 commits into
mainfrom
mbg/start-proxy/job-uuid

Conversation

@mbg

@mbg mbg commented Jul 28, 2026

Copy link
Copy Markdown
Member

The start-proxy action precedes the init action in Default Setup, but a UUID for the analysis is only generated in the init action. That means that telemetry from the start-proxy step is not easy to associate with subsequent steps in the workflow.

This PR refactors the existing code that's duplicated across init and setup-codeql into a function, allows it to retrieve the existing job UUID from the environment, adds tests, and then uses the new function in start-proxy. This ensures that telemetry from start-proxy includes a unique identifier and the same one is used for the rest of the workflow, while workflows that don't use start-proxy also still generate one in init.

Risk assessment

For internal use only. Please select the risk level of this change:

  • Low risk: Changes are fully under feature flags, or have been fully tested and validated in pre-production environments and are highly observable, or are documentation or test only.

Which use cases does this change impact?

Workflow types:

  • Advanced setup - Impacts users who have custom CodeQL workflows.
  • Managed - Impacts users with dynamic workflows (Default Setup, Code Quality, ...).

Products:

  • Code Scanning - The changes impact analyses when analysis-kinds: code-scanning.
  • Code Quality - The changes impact analyses when analysis-kinds: code-quality.
  • Other first-party - The changes impact other first-party analyses.

Environments:

  • Dotcom - Impacts CodeQL workflows on github.com and/or GitHub Enterprise Cloud with Data Residency.
  • GHES - Impacts CodeQL workflows on GitHub Enterprise Server.

How did/will you validate this change?

  • Unit tests - I am depending on unit test coverage (i.e. tests in .test.ts files).
  • End-to-end tests - I am depending on PR checks (i.e. tests in pr-checks).

If something goes wrong after this change is released, what are the mitigation and rollback strategies?

  • Rollback - Change can only be disabled by rolling back the release or releasing a new version with a fix.

How will you know if something goes wrong after this change is released?

  • Telemetry - I rely on existing telemetry or have made changes to the telemetry.
    • Dashboards - I will watch relevant dashboards for issues after the release. Consider whether this requires this change to be released at a particular time rather than as part of a regular release.
    • Alerts - New or existing monitors will trip if something goes wrong with this change.

Are there any special considerations for merging or releasing this change?

  • No special considerations - This change can be merged at any time.

Merge / deployment checklist

  • Confirm this change is backwards compatible with existing workflows.
  • Consider adding a changelog entry for this change.
  • Confirm the readme and docs have been updated if necessary.

@mbg mbg self-assigned this Jul 28, 2026
Copilot AI review requested due to automatic review settings July 28, 2026 17:54
@mbg
mbg requested a review from a team as a code owner July 28, 2026 17:54
@github-actions github-actions Bot added the size/S Should be easy to review label Jul 28, 2026

This comment was marked as outdated.

mario-campos
mario-campos previously approved these changes Jul 29, 2026

@mario-campos mario-campos left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

One nit but otherwise makes sense and LGTM.

Comment thread src/start-proxy-action.ts Outdated
Comment thread src/status-report.ts
Comment on lines +143 to +144
// Create a unique identifier for this run.
getJobUUID(actionState);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Perhaps it would make sense to do this in createStatusReportBase so we don't have to remember to call this in every Action that might run as the first step.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I was actually thinking about putting it in runInActions since that's intended to be the common entry point for all actions, but that would mean some more work to make that suitable for all actions.

Comment thread src/testing-utils.ts Outdated
throw new Error(`Input required and not supplied: ${name}`);
},
getOptionalInput: () => undefined,
exportVariable: () => {},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This seems like it could be surprising — it'll silently discard all env var writes, while getTestEnv preserves writes.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Yeah, I agree. I cherry-picked this from a different branch where I was working on adding exportVariable to ActionsEnv and had stalled on what I wanted the test behaviour of exportVariable to be there. I'll have a go at improving this.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I have pushed a few commits which make the test ActionsEnv backed by an Env and then added a way of asserting that the Env contains particular entries after the main assertion has run.

@github-actions github-actions Bot added size/M Should be of average difficulty to review and removed size/S Should be easy to review labels Jul 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/M Should be of average difficulty to review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants