Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
83d1431
Migrate `changetool` to `pr-checks`
mbg Sep 9, 2026
b136352
Fix some formatting in `pr-checks.yml`
mbg Sep 9, 2026
d235931
Address linter errors in `validate.test.mts`
mbg Sep 9, 2026
6f5a84b
Update changelog and version after v4.38.0
github-actions[bot] Sep 9, 2026
23a5edc
Rebuild
github-actions[bot] Sep 9, 2026
e855781
Merge pull request #4132 from github/mergeback/v4.38.0-to-main-b96794f0
henrymercer Sep 9, 2026
d40707c
Bump the npm-minor group across 1 directory with 6 updates
dependabot[bot] Sep 9, 2026
a727983
Bump actions/setup-java
dependabot[bot] Sep 9, 2026
d9ef050
Rebuild
github-actions[bot] Sep 9, 2026
9f28912
Rebuild
github-actions[bot] Sep 9, 2026
d982658
Merge pull request #4136 from github/dependabot/github_actions/dot-gi…
mbg Sep 10, 2026
5584cec
Merge pull request #4134 from github/dependabot/npm_and_yarn/npm-mino…
mbg Sep 10, 2026
5bd5bf9
Bump @octokit/types from 17.0.0 to 18.0.0
dependabot[bot] Sep 10, 2026
aaa0143
Remove unneeded `Promise.resolve`
mbg Sep 10, 2026
0484c3a
Merge remote-tracking branch 'origin/main' into mbg/move-changetool
mbg Sep 10, 2026
14c568a
Merge pull request #4128 from github/mbg/move-changetool
mbg Sep 10, 2026
5bdaf5d
Preserve HTTP errors from streaming bundle downloads
henrymercer Sep 10, 2026
a50b659
Update dependencies
mbg Sep 10, 2026
4375107
Move `withTmpFile` to `util.ts` and update tests to use it
mario-campos Sep 10, 2026
f6491d6
Reduce duplication by using `withTmpDir` in `withTmpFile`
mario-campos Sep 10, 2026
297617d
Update npm commands in sync.sh to include workspace root dependencies
mario-campos Sep 10, 2026
80d5f4e
Always clean-up temp dirs in `withTmpDir`
mario-campos Sep 10, 2026
7be8083
Merge pull request #4139 from github/mbg/10sep26-deps
mbg Sep 11, 2026
032138d
Merge pull request #4141 from github/mario-campos/finally-clean-withT…
mbg Sep 11, 2026
cc78526
Improve Copilot instructions
mbg Sep 11, 2026
27a821e
Rename `validate-changelog` to `changenotes`
mbg Sep 11, 2026
15b91db
Delete unnecessary `.js` file extension from `import` statement
mario-campos Sep 11, 2026
e72db59
Merge pull request #4143 from github/mbg/rename-script-to-changenote
mbg Sep 11, 2026
faf4f3a
Add JSDoc to `withTmpFile`
mario-campos Sep 11, 2026
1cf8f51
Merge pull request #4140 from github/mario-campos/move-withTmpFile
mario-campos Sep 11, 2026
b1c1bbb
Extend ESLint rules to `*.mts` files
mario-campos Sep 11, 2026
a691c16
Extend `changetool` to support directories
mario-campos Aug 31, 2026
f60f4d9
Validate change-notes in PRs
mario-campos Aug 31, 2026
1335412
Omit unknown HTTP status codes from download errors
henrymercer Sep 14, 2026
f45ef9d
Log something on successful changenote validation
mario-campos Sep 14, 2026
6041eff
Update validate.test.mts test names to reflect new `isValidAllChangen…
mario-campos Sep 14, 2026
0224ca9
Use a plain error when the HTTP status is unknown
henrymercer Sep 15, 2026
d65664d
Merge pull request #4138 from github/henrymercer/bundle-download-errors
henrymercer Sep 15, 2026
f19a847
Merge pull request #4135 from github/dependabot/npm_and_yarn/octokit/…
henrymercer Sep 15, 2026
e26a5c4
Be consistent with language and conventions
mario-campos Sep 15, 2026
1970c45
Separate CodeQL bundle resolution from installation
henrymercer Sep 15, 2026
ec5eecb
Use per-language CodeQL bundles
henrymercer Sep 15, 2026
eb76062
Include failed bundle attempts in fallback timing
henrymercer Sep 15, 2026
f959bfd
Merge remote-tracking branch 'origin/main' into mbg/copilot/update-in…
mbg Sep 16, 2026
53e5014
Address review comments
mbg Sep 16, 2026
f3e0c87
Clarify resolved bundle handling
henrymercer Sep 16, 2026
7dbd038
Merge pull request #4142 from github/mbg/copilot/update-instructions
mbg Sep 16, 2026
9961729
Merge pull request #4116 from github/mario-campos/validate-cn-workflow
mario-campos Sep 16, 2026
289376d
Use per-language CodeQL bundles
henrymercer Sep 15, 2026
59ce3a2
Include failed bundle attempts in fallback timing
henrymercer Sep 15, 2026
2d47caf
Isolate per-language bundle eligibility state
henrymercer Sep 16, 2026
dfb9bf5
Share CodeQL bundle platform definitions
henrymercer Sep 16, 2026
f536ef4
Centralize CodeQL download telemetry fields
henrymercer Sep 16, 2026
2f552a9
Clarify bundle resolution and latest-nightly selection
henrymercer Sep 16, 2026
ac47650
Bump the npm-minor group across 1 directory with 3 updates
dependabot[bot] Sep 16, 2026
bd2ddba
Extract explicit CodeQL bundle URL classification
henrymercer Sep 16, 2026
89606bb
Return toolcache rejection reasons with Result
henrymercer Sep 16, 2026
f4fa111
Share elapsed-time rounding for bundle downloads
henrymercer Sep 16, 2026
69f4715
Use Result.orElse for bundle extraction paths
henrymercer Sep 16, 2026
cf9bbfe
Merge pull request #4150 from github/dependabot/npm_and_yarn/npm-mino…
henrymercer Sep 16, 2026
5a2f29e
Merge published per-language bundle history
henrymercer Sep 16, 2026
06f4ce7
Isolate bundle cleanup test environments
henrymercer Sep 17, 2026
41c04be
Use initAllState in bundle cleanup tests
henrymercer Sep 17, 2026
a0cc010
Merge pull request #4145 from github/henrymercer/bundle-resolution-pr
henrymercer Sep 17, 2026
28b8f59
Use shared test state for bundle eligibility
henrymercer Sep 17, 2026
ed3a24c
Group bundle eligibility test state overrides
henrymercer Sep 17, 2026
549d498
Simplify per-language platform eligibility checks
henrymercer Sep 17, 2026
ead1f7d
Rename the platform module
henrymercer Sep 17, 2026
79fe3a1
Move download telemetry into the status-report directory
henrymercer Sep 17, 2026
ecec9b5
Share per-language telemetry fields without renaming
henrymercer Sep 17, 2026
f18f353
Describe the bundle URL resolver
henrymercer Sep 17, 2026
07fa87d
Clarify the latest-nightly eligibility exception
henrymercer Sep 17, 2026
a65b83a
Merge pull request #4146 from github/henrymercer/per-language-bundles-pr
mbg Sep 18, 2026
cc6c691
Update changelog for v4.38.1
github-actions[bot] Sep 18, 2026
a97cdca
Add changelog entry for #4146
mbg Sep 18, 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
25 changes: 22 additions & 3 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,33 @@
# CodeQL Action - Copilot Instructions

The CodeQL Action is used in GitHub Actions workflows to run CodeQL scans using the CodeQL CLI.

## Overview

- The repository contains two TypeScript projects.
- The main TypeScript codebase is in the `src` directory, with accompanying unit tests in `.test.ts` files in the same directory.
- The main codebase is compiled to bundled JavaScript code, which is also contained in the repository in the `lib` directory.
- A secondary TypeScript codebase with scripts that are only used for development purposes or by CI is in the `pr-checks` directory. This codebase is not compiled to bundled JavaScript. It is executed directly with `tsx`, which handles compilation internally.

## Review instructions

- When wording review comments, be helpful and friendly. Assume that the PR author has written the code with the best of intentions. Word your comments constructively as suggestions for improvements. Do not word suggestions as commands.
- If you want to comment on a change that you believe will fail a CI check, do not present the CI failure you expect as a fact. Instead, write that you think a change "may" lead to a failure in CI. Suggest that, if such a failure manifests, the changes you are commenting on may be the place responsible for the failure and are worth looking at.
- If a suggestion you make is suitable for a follow-up, such as a refactoring that doesn't change the behaviour or fixing a typo in a comment, mention that it can be addressed in a later PR rather than blocking this one.
- If a change is a net improvement, for example because it improves on an existing limitation of existing code, do not complain about pre-existing problems that remain. You may comment on them, but you should make it clear that the thing you are commenting on is not new by writing e.g. "Not new in this PR, but [..]" followed by your description of the issue and a suggestion that it could be improved at the same time with e.g. "Consider whether this is worth addressing as part of this PR as well."

## Generated code

The CodeQL Action is written in TypeScript and compiled to JavaScript. Both the TypeScript sources and the **generated** JavaScript code are contained in this repository. The TypeScript sources are contained in the `src` directory and the JavaScript code is contained in the `lib` directory. A GitHub Actions workflow checks that the JavaScript code in `lib` is up-to-date. Therefore, you should not review any changes to the contents of the `lib` folder and it is expected that the JavaScript code in `lib` closely mirrors the TypeScript code it is generated from.
The main codebase of the CodeQL Action is written in TypeScript and compiled to JavaScript. Both the TypeScript sources and the **generated** JavaScript code are contained in this repository. The TypeScript sources are contained in the `src` directory and the JavaScript code is contained in the `lib` directory. A GitHub Actions workflow checks that the JavaScript code in `lib` is up-to-date. Therefore, you should not review any changes to the contents of the `lib` folder and it is expected that the JavaScript code in `lib` closely mirrors the TypeScript code it is generated from. The secondary TypeScript codebase has sources in the `pr-checks` directory, which are executed directly with `tsx` and not compiled to JavaScript in the `lib` folder.

GitHub Actions workflows in the `.github/workflows` directory whose filenames start with two underscores (e.g. `__all-platform-bundle.yml`) are automatically generated using the `pr-checks/sync.sh` script from template files in the `pr-checks/checks` directory. Therefore, you do not need to review files in the `.github/workflows` directory that start with two underscores. However, you should review changes to the `pr-checks` directory as well as workflows in the `.github/workflows` directory that do not start with underscores.

## Release process

Changes that are merged to the `main` branch are not used in production straight away. Instead, changes from `main` must first be released using the release process, which has to be manually triggered by a staff member. Therefore, it is possible for further changes to be made to the code after some changes have been merged to `main` but before they are released. Once the release process automation is started, a series of PRs are automatically generated:

- A release-PR is a PR which matches all of the following patterns:

- PR title starts with the exact prefix: `Merge main into releases/v`
- Equivalent regex: `^Merge main into releases\/v`
- AND head (source) branch matches the update-branch pattern:
Expand All @@ -17,5 +36,5 @@ GitHub Actions workflows in the `.github/workflows` directory whose filenames st
- Regex: `^releases\/v` (e.g. `releases/v3`)

- Consider all files in release-PRs to have already been reviewed and do not review them, except for the following two files:
- `CHANGELOG.md`
- `package.json`
- `CHANGELOG.md`
- `package.json`

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

2 changes: 1 addition & 1 deletion .github/workflows/__build-mode-autobuild.yml

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

3 changes: 2 additions & 1 deletion .github/workflows/__bundle-toolcache.yml

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

164 changes: 164 additions & 0 deletions .github/workflows/__per-language-bundle-validation.yml

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

3 changes: 2 additions & 1 deletion .github/workflows/codescanning-config-cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ jobs:
uses: ./../action/.github/actions/check-codescanning-config
with:
expected-config-file-contents: "{}"
languages: javascript
# Request multiple languages so later checks can reuse the combined bundle.
languages: javascript,python
tools: ${{ steps.prepare-test.outputs.tools-url }}

- name: Packs from input
Expand Down
39 changes: 8 additions & 31 deletions .github/workflows/pr-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache: "npm"

- name: Install dependencies
run: |
Expand Down Expand Up @@ -77,33 +77,6 @@ jobs:
sarif_file: eslint.sarif
category: eslint

changetool-tests:
name: changetool unit tests
permissions:
contents: read
runs-on: ubuntu-slim
timeout-minutes: 10

concurrency:
cancel-in-progress: ${{ github.event_name == 'pull_request' || false }}
group: pr-checks-changetool-tests-${{ github.ref }}-${{ github.event_name }}

steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Set up Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Run changetool unit tests
run: npm --workspace changetool test

# These checks do not need to be run as part of the same matrix that we use for the `unit-tests`
# job.
other-checks:
Expand All @@ -126,7 +99,7 @@ jobs:
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
cache: 'npm'
cache: "npm"

- name: Install dependencies
id: install-deps
Expand All @@ -141,6 +114,10 @@ jobs:
working-directory: pr-checks
run: npx tsx --test

- name: Run `pr-checks/changenotes.mts` to ensure that all unreleased change notes are valid
if: ${{ !cancelled() && steps.install-deps.outcome == 'success' }}
run: npx tsx pr-checks/changenotes.mts validate

- name: Verify all Actions use the same Node version
id: head-version
run: |
Expand Down Expand Up @@ -190,14 +167,14 @@ jobs:
path: ${{ runner.temp }}/repo-size/
if-no-files-found: error

- name: 'Backport: Check out base ref'
- name: "Backport: Check out base ref"
id: checkout-base
if: ${{ startsWith(github.head_ref, 'backport-') }}
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.base_ref }}

- name: 'Backport: Verify Node versions unchanged'
- name: "Backport: Verify Node versions unchanged"
if: steps.checkout-base.outcome == 'success'
env:
HEAD_VERSION: ${{ steps.head-version.outputs.node_version }}
Expand Down
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.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)

## 4.38.0 - 09 Sept 2026

- On GitHub-hosted runners, the CodeQL Action now deletes unused CodeQL bundles from the toolcache before downloading a different bundle, which frees up disk space for the analysis. We expect to roll this change out to everyone in September. [#4124](https://github.com/github/codeql-action/pull/4124)
Expand Down
18 changes: 2 additions & 16 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ export default [
},
},
{
files: ["**/*.ts", "**/*.js"],
files: ["**/*.ts", "**/*.js", "**/*.mts"],

rules: {
"@typescript-eslint/no-explicit-any": "off",
Expand All @@ -180,7 +180,7 @@ export default [
},
},
{
files: ["pr-checks/**/*.ts"],
files: ["pr-checks/**/*.ts", "pr-checks/**/*.mts"],

languageOptions: {
parserOptions: {
Expand Down Expand Up @@ -209,18 +209,4 @@ export default [
],
},
},
{
files: ["scripts/changetool/**/*.ts"],

languageOptions: {
parserOptions: {
project: "./scripts/changetool/tsconfig.json",
},
},

rules: {
"no-console": "off",
"import/extensions": "off",
},
},
];
Loading
Loading