Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
ba80880
Update changelog and version after v4.38.1
github-actions[bot] Sep 18, 2026
f8b1c08
Rebuild
github-actions[bot] Sep 18, 2026
a7afe0a
Merge pull request #4153 from github/mergeback/v4.38.1-to-main-1c5b6756
mbg Sep 18, 2026
cb31eab
Do not include trailing newlines in `NO_CHANGES_STR`
mario-campos Sep 18, 2026
47d607e
Add changelog parsing helper `getHeader`
mario-campos Sep 18, 2026
bb1dc54
Add CHANGELOG function `addBodyLinesToUnreleasedSection`
mario-campos Sep 18, 2026
1ee3265
Add `changenotes.mts flush` command
mario-campos Sep 18, 2026
bffae1c
Use `withChangelog` I/O helper
mario-campos Sep 18, 2026
b246e56
Use `ExitCode` instead of `0`/`1`
mario-campos Sep 18, 2026
d63b2a4
Assume '[UNRELEASED]' section is first section
mario-campos Sep 18, 2026
128614a
Simplify `getHeader` to operate on `ChangelogSection`s
mario-campos Sep 18, 2026
bc0efd6
Simplify `addBodyLinesToUnreleasedSection`
mario-campos Sep 18, 2026
977b29b
Replace `splice` with `push` and `pop`
mario-campos Sep 18, 2026
7f54212
Rename `flush` command to `assemble`
mario-campos Sep 18, 2026
a92f7fb
Refactor changenote file listing into function to D.R.Y.
mario-campos Sep 18, 2026
7715606
Update JSDoc comment with parameter `lines`
mario-campos Sep 21, 2026
598cda3
Apply suggestion from @mbg
mario-campos Sep 21, 2026
c496c6c
Rename `name` to `absolutePath` for clarity
mario-campos Sep 21, 2026
0263122
Format code with `npm run lint-fix`
mario-campos Sep 21, 2026
c0bd54f
Replace JSDoc text with `@throws`
mario-campos Sep 21, 2026
b1668d6
Flesh out a comment
mario-campos Sep 21, 2026
669351e
Replace `getRequiredEnvParam` calls in `init` and `setup-codeql` action
mbg Sep 16, 2026
3a30b15
Refactor `setupDiffInformedQueryRun` querying `checkout_path` itself
mbg Sep 16, 2026
ada4e83
Refactor `cleanupAndUploadOverlayBaseDatabaseToCache` querying `check…
mbg Sep 16, 2026
8a88af6
Refactor `cleanupAndUploadDatabases` querying `checkout_path` itself
mbg Sep 16, 2026
6dd161b
Merge pull request #4155 from github/mario-campos/merge-changenotes
mario-campos Sep 22, 2026
416ff0d
Merge pull request #4157 from github/mbg/refactor/checkout-path
mbg Sep 22, 2026
07dc949
Use default state in per-language bundle tests
henrymercer Sep 22, 2026
06344e2
Stub nightly release listing directly
henrymercer Sep 22, 2026
dba87a1
Clarify elapsed-time helper documentation
henrymercer Sep 22, 2026
a9a8cd1
Explain the nightly bundle version-check exception
henrymercer Sep 22, 2026
f2ec2f6
Tweak comment for latest nightly version check
henrymercer Sep 22, 2026
48321b2
Update src/per-language-bundles.ts
henrymercer Sep 22, 2026
e574ef1
Merge main into per-language bundle follow-ups
henrymercer Sep 22, 2026
3bacfe2
Remove trailing whitespace from nightly comment
henrymercer Sep 22, 2026
5316224
Update default bundle to codeql-bundle-v2.27.1
github-actions[bot] Sep 22, 2026
81fb677
Add changelog note
github-actions[bot] Sep 22, 2026
33141e5
Merge pull request #4159 from github/henrymercer/pr-4146-follow-ups
henrymercer Sep 22, 2026
41a4b9a
Merge pull request #4160 from github/update-bundle/codeql-bundle-v2.27.1
mbg Sep 22, 2026
9691115
Disable `UsePerfData` for `resolveExtractor`
mbg Sep 23, 2026
f0064b2
Merge pull request #4162 from github/mbg/cli/disable-perfdata
mbg Sep 23, 2026
82d91df
Update changelog for v4.38.2
github-actions[bot] Sep 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

See the [releases page](https://github.com/github/codeql-action/releases) for the relevant changes to the CodeQL CLI and language packs.

## 4.38.2 - 23 Sept 2026

- Update default CodeQL bundle version to [2.27.1](https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.1). [#4160](https://github.com/github/codeql-action/pull/4160)

## 4.38.1 - 18 Sept 2026

- The CodeQL Action now has experimental support for CodeQL releases for which per-language bundles are available. Per-language bundles support analysis for a single language and are therefore smaller than the combined bundles that allow analysis for all supported languages. As a result, per-language bundles take up less space on disk and are faster to download. We expect to roll this change out to everyone in the coming weeks. [#4146](https://github.com/github/codeql-action/pull/4146)
Expand Down
8 changes: 4 additions & 4 deletions lib/defaults.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"bundleVersion": "codeql-bundle-v2.27.0",
"cliVersion": "2.27.0",
"priorBundleVersion": "codeql-bundle-v2.26.4",
"priorCliVersion": "2.26.4"
"bundleVersion": "codeql-bundle-v2.27.1",
"cliVersion": "2.27.1",
"priorBundleVersion": "codeql-bundle-v2.27.0",
"priorCliVersion": "2.27.0"
}
60 changes: 36 additions & 24 deletions lib/entry-points.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "codeql",
"version": "4.38.1",
"version": "4.38.2",
"private": true,
"description": "CodeQL action",
"scripts": {
Expand Down
4 changes: 2 additions & 2 deletions pr-checks/bundle-changelog.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,15 @@ ${NO_CHANGES_STR}`;
describe("updateChangelog", async () => {
await it("removes `NO_CHANGES_STR` if present in [UNRELEASED] section", async () => {
const result = updateChangelog(EMPTY_CHANGELOG, "");
assert.ok(!result.includes(NO_CHANGES_STR.trim()));
assert.ok(!result.includes(NO_CHANGES_STR));
});

await it("doesn't remove `NO_CHANGES_STR` if present in versioned section", async () => {
const result = updateChangelog(
EMPTY_CHANGELOG.replace(UNRELEASED_PLACEHOLDER, "1.2.3"),
"",
);
assert.ok(result.includes(NO_CHANGES_STR.trim()));
assert.ok(result.includes(NO_CHANGES_STR));
});

await it("throws if there are no sections", async () => {
Expand Down
99 changes: 99 additions & 0 deletions pr-checks/changelog.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,46 @@ import * as fs from "node:fs";
import { describe, it } from "node:test";

import {
addBodyLinesToUnreleasedSection,
ChangelogSection,
EMPTY_CHANGELOG,
getHeader,
getReleaseDateString,
NO_CHANGES_STR,
parseChangelog,
processChangelogForBackports,
renderChangelog,
setVersionAndDate,
UNRELEASED_PLACEHOLDER,
} from "./changelog";
import { CHANGELOG_FILE } from "./config";

const testDate = new Date(2026, 7, 14);

describe("getHeader", async () => {
function Section(headerLine: string): ChangelogSection {
return {
headerLine,
bodyLines: [],
};
}
await it("returns non-headers unchanged", () => {
assert.equal("foo", getHeader(Section("foo")));
assert.equal("- bar", getHeader(Section("- bar")));
});
await it("strips octothorpes", async () => {
assert.equal("foo", getHeader(Section("# foo")));
assert.equal("foo", getHeader(Section("## foo")));
assert.equal("foo", getHeader(Section("### foo")));
assert.equal("foo", getHeader(Section("#### foo")));
assert.equal("foo", getHeader(Section("##### foo")));
assert.equal("foo", getHeader(Section("###### foo")));
});
await it("strips whitespace", async () => {
assert.equal("foo", getHeader(Section("# foo ")));
});
});

describe("getReleaseDateString", async () => {
await it("formats dates as expected", async () => {
assert.equal(getReleaseDateString(testDate), "14 Aug 2026");
Expand Down Expand Up @@ -70,3 +99,73 @@ describe("processChangelogForBackports", async () => {
assert.deepEqual(result.split("\n"), testChangelogResult.split("\n"));
});
});

describe("addBodyLinesToUnreleasedSection", async () => {
function newChangelogWithSections(sections: ChangelogSection[]) {
return {
preamble: [],
sections,
};
}

await it("throws error if '[UNRELEASED]' section is not first", async () => {
const invalidChangelog = newChangelogWithSections([
{
headerLine: "## Release 1.0.0",
bodyLines: [],
},
{
headerLine: `## ${UNRELEASED_PLACEHOLDER}`,
bodyLines: [],
},
]);
assert.throws(() =>
addBodyLinesToUnreleasedSection(invalidChangelog, ["foo"]),
);
});

await it("overwrites 'No user facing changes.'", async () => {
const changelog = newChangelogWithSections([
{
headerLine: `## ${UNRELEASED_PLACEHOLDER}`,
bodyLines: ["", NO_CHANGES_STR, ""],
},
]);

addBodyLinesToUnreleasedSection(changelog, ["- foo"]);

assert.equal(changelog.sections[0].bodyLines.length, 3);
assert.deepEqual(changelog.sections[0].bodyLines, ["", "- foo", ""]);
});

await it("does nothing if lines is empty", async () => {
const changelog = newChangelogWithSections([
{
headerLine: `## ${UNRELEASED_PLACEHOLDER}`,
bodyLines: ["", NO_CHANGES_STR, ""],
},
]);
const changelogClone = structuredClone(changelog);

addBodyLinesToUnreleasedSection(changelog, []);

assert.deepEqual(changelog, changelogClone);
});

await it("inserts a line", async () => {
const changelog = newChangelogWithSections([
{
headerLine: `## ${UNRELEASED_PLACEHOLDER}`,
bodyLines: ["", "- Added a new dependency.", ""],
},
]);
const lineToInsert = "- foo";

addBodyLinesToUnreleasedSection(changelog, [lineToInsert]);

assert.equal(changelog.sections[0].bodyLines.length, 4);
assert.ok(
changelog.sections[0].bodyLines.some((line) => line === lineToInsert),
);
});
});
Loading
Loading