Cache CLI version information across Actions steps by henrymercer · Pull Request #3943 · github/codeql-action
Persist CLI version information across Actions steps to avoid calling codeql version in each step. This saves 3 to 6 calls (and associated JVM startups) in a typical analysis job.
We use the path to the CodeQL CLI as a cache key. This is robust to setting up a different CLI with init or setup-codeql in the same job, but if a user hotswaps the CLI with a different mechanism and keeps the path the same, we are going to have the wrong version information. That seems like a rare enough case to be acceptable, but if we care about this, we could introduce more data into the cache key (at the cost of some performance).
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
dynamicworkflows (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.
- Third-party analyses - The changes affect the
upload-sarifaction.
Environments:
- Dotcom - Impacts CodeQL workflows on
github.comand/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.tsfiles). - 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.
- 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.