Remove unused registry types from LANGUAGE_TO_REGISTRY_TYPE#3527
Remove unused registry types from LANGUAGE_TO_REGISTRY_TYPE#3527
LANGUAGE_TO_REGISTRY_TYPE#3527Conversation
There was a problem hiding this comment.
Pull request overview
This PR introduces a feature-flagged “reduced” registry-type allowlist for the start-proxy action so that only the ecosystems that are actually supported for private registries are considered when filtering credentials.
Changes:
- Add a new
StartProxyRemoveUnusedRegistriesfeature flag and plumb it intostart-proxy-action. - Add a second registry-type mapping (
NEW_LANGUAGE_TO_REGISTRY_TYPE) and use it when the feature flag is enabled. - Add unit tests covering the Actions-language behavior under both mappings.
Reviewed changes
Copilot reviewed 16 out of 16 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/start-proxy.ts | Adds a feature-flag-controlled registry-type mapping used to filter credentials by language. |
| src/start-proxy.test.ts | Adds tests for getCredentials behavior with KnownLanguage.actions under both mappings. |
| src/start-proxy-action.ts | Reads the feature flag and passes it into getCredentials. |
| src/feature-flags.ts | Defines the new StartProxyRemoveUnusedRegistries flag and its config. |
| lib/* | Generated JS output updates corresponding to the TypeScript changes. |
| const NEW_LANGUAGE_TO_REGISTRY_TYPE: RegistryMapping = { | ||
| actions: [], | ||
| java: ["maven_repository"], | ||
| csharp: ["nuget_feed"], | ||
| javascript: [], | ||
| python: [], | ||
| ruby: [], | ||
| rust: [], | ||
| go: ["goproxy_server", "git_source"], | ||
| } as const; |
There was a problem hiding this comment.
NEW_LANGUAGE_TO_REGISTRY_TYPE does not include all KnownLanguage values (e.g. cpp, swift). When skipUnusedRegistries is enabled and language is one of these missing keys, registryMapping[language] becomes undefined and the code stops filtering, so all credential types are accepted. If the intent is to only allow registries for Java/C#/Go, consider making the "missing key" case behave like an empty allowlist when skipUnusedRegistries is true (or explicitly add the missing languages with []).
| ); | ||
| t.deepEqual(credentials, []); | ||
| }); | ||
|
|
There was a problem hiding this comment.
The new behavior behind skipUnusedRegistries is only tested for KnownLanguage.actions. Adding tests for at least one KnownLanguage value that is currently missing from NEW_LANGUAGE_TO_REGISTRY_TYPE (e.g. cpp or swift) would help catch cases where the "reduced mapping" unintentionally falls back to allowing all credentials for an unlisted language.
| test("getCredentials returns all credentials for Cpp when using LANGUAGE_TO_REGISTRY_TYPE", async (t) => { | |
| const credentialsInput = toEncodedJSON(mixedCredentials); | |
| const credentials = startProxyExports.getCredentials( | |
| getRunnerLogger(true), | |
| undefined, | |
| credentialsInput, | |
| KnownLanguage.cpp, | |
| false, | |
| ); | |
| t.is(credentials.length, mixedCredentials.length); | |
| }); | |
| test("getCredentials returns no credentials for Cpp when using NEW_LANGUAGE_TO_REGISTRY_TYPE", async (t) => { | |
| const credentialsInput = toEncodedJSON(mixedCredentials); | |
| const credentials = startProxyExports.getCredentials( | |
| getRunnerLogger(true), | |
| undefined, | |
| credentialsInput, | |
| KnownLanguage.cpp, | |
| true, | |
| ); | |
| t.deepEqual(credentials, []); | |
| }); |
Removes unused registry types from
LANGUAGE_TO_REGISTRY_TYPE. Currently we only support private registries for Java (maven_repository), C# (nuget_feed), and Go (git_source,goproxy_server). However, the configuration inLANGUAGE_TO_REGISTRY_TYPEallows other registry types for other languages to be enabled in CodeQL workflows. This may give users the wrong impression that those types of registries are actually supported.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