Repository navigation
Conversation
520eff7 to
2613b9c
Compare
b5ce898 to
9312ede
Compare
9312ede to
65d8aa4
Compare
65d8aa4 to
9eeab46
Compare
There was a problem hiding this comment.
Warning
- Copilot's review of this pull request may be incomplete because some of the changed files are excluded by your Copilot content exclusion settings. See Excluding content from Copilot for details.
🟡 Changes recommended
Temporary-write failures can abort initialization, cross-filesystem moves can lose diagnostics, and the new check does not validate failed SARIF export.
5 open findings
What changed in this PR
Persists pre-database diagnostics on disk so they can be included in failed SARIF output.
Changes:
- Replaces in-memory buffering with temporary diagnostic files.
- Passes temporary diagnostics to CodeQL export.
- Adds unit and PR-check coverage.
| File | Description |
|---|---|
src/diagnostics.ts |
Implements temporary persistence and database relocation. |
src/init-action.ts |
Flushes and logs temporary diagnostics. |
src/init-action-post-helper.ts |
Supplies temporary diagnostics during failed SARIF generation. |
src/codeql.ts |
Adds --diagnostic-dir support. |
src/diagnostics.test.ts |
Tests temporary persistence and flushing. |
src/setup-codeql.test.ts |
Provides temporary-directory test setup. |
src/config/db-config.test.ts |
Provides temporary-directory test setup. |
pr-checks/diagnostics-without-db.ts |
Checks for the expected diagnostic file. |
pr-checks/checks/diagnostics-without-db.yml |
Defines the new PR check. |
lib/entry-points.js |
Generated bundle; excluded from review. |
.github/workflows/__diagnostics-without-db.yml |
Generated workflow; excluded from review. |
Files excluded by content exclusion policy (2)
- .github/workflows/__diagnostics-without-db.yml
- lib/entry-points.js
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
4b32487 to
9104ff3
Compare
3cf39b0 to
b5557b8
Compare
324bd7e to
12b2055
Compare
There was a problem hiding this comment.
Warning
- Copilot's review of this pull request may be incomplete because some of the changed files are excluded by your Copilot content exclusion settings. See Excluding content from Copilot for details.
🟡 Changes recommended
Eager configuration loading can reject independently pinned upload steps even when no CLI merging is needed.
1 open finding
5 resolved since last review
Files excluded by content exclusion policy (3)
- .github/workflows/__diagnostics-export.yml
- .github/workflows/__diagnostics-without-db.yml
- lib/entry-points.js
🧠 Review effort: Balanced
| // CodeQL Action step to have come before `upload-sarif`, this has previously been the behaviour | ||
| // when `combineSarifFilesUsingCLI` called `getConfig` directly. Since the only effect of this would | ||
| // be that an existing CLI that was installed gets re-used, we maintain this behaviour. | ||
| const maybeConfig = await getConfig(tempDir, logger); |
There was a problem hiding this comment.
getConfigrejects configurations written by a different Action version
This is true. There are two high-level scenarios:
- The rarer one is that there is a config from a previous step. It will be even rarer that the config was produced by a different version of the CodeQL Action, but if it is:
- If there are multiple SARIF files, we now produce the error earlier than we would have previously. We therefore avoid work that would have been pointless if the error is raised later.
- If there is only one, then
combineSarifFilesUsingCLInever gets called. We produce an error when we wouldn't have previously.
- The more common one is that we don't have a config because
upload-sarifis the only CodeQL Action step in a workflow job. No error is produced as before.
I have no strong feelings on the one case that matters here, because in principle we do not support mixed versions of the CodeQL Action in any case. If upload-sarif was working in a workflow job like that until now, then that was a happy accident. Equally, upload-sarif currently has no need for the config except when combineSarifFilesUsingCLI is called.
Add limited test coverage
12b2055 to
f69da90
Compare
There was a problem hiding this comment.
Warning
- Copilot's review of this pull request may be incomplete because some of the changed files are excluded by your Copilot content exclusion settings. See Excluding content from Copilot for details.
🟢 Approval recommended
No blocking issues remain in the reviewable changes, which include targeted unit and end-to-end coverage.
1 open finding
Files excluded by content exclusion policy (2)
- .github/workflows/__diagnostics-without-db.yml
- lib/entry-points.js
🧠 Review effort: Balanced


Diagnostics are typically written to the database cluster and are then included in the SARIF that is generated by the CLI. However, in the CodeQL Action we may produce diagnostics before the database cluster is initialised. To work around this, we have so far relied on tracking diagnostics in memory that were created before the database cluster is ready. After the cluster is initialised, those diagnostics are then flushed to disk. However, this represents a problem if the database cluster is never successfully initialised.
This PR changes this so that diagnostics are written directly to a temporary directory on disk if the database cluster is not yet ready. They are then moved to the database cluster once it is initialised. If the cluster is never initialised, then we point the CLI at the temporary directory on disk using a
--diagnostic-dirargument. The CLI will then pick up any diagnostics that are still in that location and include them in the failed SARIF.Risk assessment
For internal use only. Please select the risk level of this change:
Which use cases does this change impact?
Workflow types:
dynamicworkflows (Default Setup, Code Quality, ...).Products:
analysis-kinds: code-scanning.analysis-kinds: code-quality.Environments:
github.comand/or GitHub Enterprise Cloud with Data Residency.How did/will you validate this change?
.test.tsfiles).pr-checks).If something goes wrong after this change is released, what are the mitigation and rollback strategies?
How will you know if something goes wrong after this change is released?
Are there any special considerations for merging or releasing this change?
Merge / deployment checklist