From ce25a5339850c76067f245e734c1673e13c3e0ab Mon Sep 17 00:00:00 2001 From: Abhishek Bhaskar Date: Tue, 8 Sep 2026 13:11:59 -0500 Subject: [PATCH] set package_manager env variable for proxy --- __tests__/proxy-integration.test.ts | 28 +++++++++++++------ __tests__/proxy.test.ts | 15 +++++++++- __tests__/updater-builder-integration.test.ts | 9 ++++-- __tests__/updater.test.ts | 3 +- dist/main.js | 11 +++++--- src/proxy.ts | 10 +++++-- src/updater.ts | 3 +- 7 files changed, 57 insertions(+), 22 deletions(-) diff --git a/__tests__/proxy-integration.test.ts b/__tests__/proxy-integration.test.ts index 2f5066dfc..54a59a5bc 100644 --- a/__tests__/proxy-integration.test.ts +++ b/__tests__/proxy-integration.test.ts @@ -13,6 +13,7 @@ integration('ProxyBuilder', () => { const jobId = 1 const jobToken = 'xxxyyyzzzz' const dependabotApiUrl = 'http://localhost:9000' + const packageManager = 'npm_and_yarn' const credentials: Credential[] = [ { type: 'git_source', @@ -38,7 +39,8 @@ integration('ProxyBuilder', () => { jobId, jobToken, dependabotApiUrl, - credentials + credentials, + packageManager ) await proxy.container.start() await proxy.waitUntilReady() @@ -96,7 +98,8 @@ integration('ProxyBuilder', () => { jobId, jobToken, dependabotApiUrl, - credentials + credentials, + packageManager ) await proxy.container.start() @@ -128,7 +131,8 @@ integration('ProxyBuilder', () => { jobId, jobToken, dependabotApiUrl, - credentials + credentials, + packageManager ) await proxy.container.start() @@ -154,7 +158,8 @@ integration('ProxyBuilder', () => { jobId, jobToken, dependabotApiUrl, - credentials + credentials, + packageManager ) await proxy.container.start() @@ -173,7 +178,8 @@ integration('ProxyBuilder', () => { jobId, jobToken, dependabotApiUrl, - credentials + credentials, + packageManager ) await proxy.container.start() @@ -193,7 +199,8 @@ integration('ProxyBuilder', () => { jobId, jobToken, dependabotApiUrl, - credentials + credentials, + packageManager ) await proxy.container.start() @@ -219,7 +226,8 @@ integration('ProxyBuilder', () => { jobId, jobToken, dependabotApiUrl, - credentials + credentials, + packageManager ) await proxy.container.start() @@ -244,7 +252,8 @@ integration('ProxyBuilder', () => { jobId, jobToken, dependabotApiUrl, - credentials + credentials, + packageManager ) await proxy.container.start() @@ -270,7 +279,8 @@ integration('ProxyBuilder', () => { jobId, jobToken, dependabotApiUrl, - credentials + credentials, + packageManager ) await proxy.container.start() diff --git a/__tests__/proxy.test.ts b/__tests__/proxy.test.ts index 209cce224..df2e261f2 100644 --- a/__tests__/proxy.test.ts +++ b/__tests__/proxy.test.ts @@ -64,7 +64,8 @@ async function buildProxyWithStopError( 1, 'job-token', 'https://dependabot-api.example.com', - credentials + credentials, + 'npm_and_yarn' ) return { @@ -196,6 +197,18 @@ describe('Proxy environment', () => { }) ) }) + + it('sets the PACKAGE_MANAGER env variable on the proxy container', async () => { + const {createContainer} = await buildProxyWithStopError( + alreadyStoppedError() + ) + + expect(createContainer).toHaveBeenCalledWith( + expect.objectContaining({ + Env: expect.arrayContaining(['PACKAGE_MANAGER=npm_and_yarn']) + }) + ) + }) }) describe('Proxy readiness', () => { diff --git a/__tests__/updater-builder-integration.test.ts b/__tests__/updater-builder-integration.test.ts index 0510dcef8..270d99300 100644 --- a/__tests__/updater-builder-integration.test.ts +++ b/__tests__/updater-builder-integration.test.ts @@ -43,7 +43,8 @@ integration('UpdaterBuilder', () => { 1, jobToken, dependabotApiUrl, - credentials + credentials, + details['package-manager'] ) await proxy.container.start() const input = {job: details} @@ -83,7 +84,8 @@ integration('UpdaterBuilder', () => { 1, jobToken, dependabotApiUrl, - credentials + credentials, + details['package-manager'] ) await proxy.container.start() const input = {job: details} @@ -120,7 +122,8 @@ integration('UpdaterBuilder', () => { 1, jobToken, dependabotApiUrl, - credentials + credentials, + details['package-manager'] ) await proxy.container.start() const input = {job: details} diff --git a/__tests__/updater.test.ts b/__tests__/updater.test.ts index 936fc564c..2b580a2a0 100644 --- a/__tests__/updater.test.ts +++ b/__tests__/updater.test.ts @@ -173,7 +173,8 @@ describe('Updater', () => { mockApiClient.params.jobId, 'job-token', mockApiClient.params.dependabotApiUrl, - credentials + credentials, + mockJobDetails['package-manager'] ) }) }) diff --git a/dist/main.js b/dist/main.js index c68e613fc..8539edd7b 100644 --- a/dist/main.js +++ b/dist/main.js @@ -100146,7 +100146,7 @@ var ProxyBuilder = class { docker; proxyImage; experiments; - async run(jobId2, jobToken, dependabotApiUrl, credentials) { + async run(jobId2, jobToken, dependabotApiUrl, credentials, packageManager) { const name = `dependabot-job-${jobId2}-proxy`; const config = this.buildProxyConfig(credentials); const cert = config.ca.cert; @@ -100161,7 +100161,8 @@ var ProxyBuilder = class { name, externalNetwork, internalNetwork, - internalNetworkName + internalNetworkName, + packageManager ); await ContainerService.storeInput( CONFIG_FILE_NAME, @@ -100325,7 +100326,7 @@ var ProxyBuilder = class { const key = import_node_forge.pki.privateKeyToPem(keys.privateKey); return { cert: pem, key }; } - async createContainer(jobId2, jobToken, dependabotApiUrl, containerName, externalNetwork, internalNetwork, internalNetworkName) { + async createContainer(jobId2, jobToken, dependabotApiUrl, containerName, externalNetwork, internalNetwork, internalNetworkName, packageManager) { const container = await this.docker.createContainer({ Image: this.proxyImage, name: containerName, @@ -100337,6 +100338,7 @@ var ProxyBuilder = class { `no_proxy=${process.env.no_proxy || process.env.NO_PROXY || ""}`, `JOB_ID=${jobId2}`, `JOB_TOKEN=${jobToken}`, + `PACKAGE_MANAGER=${packageManager}`, "PROXY_CACHE=true", `DEPENDABOT_API_URL=${dependabotApiUrl}`, `ACTIONS_ID_TOKEN_REQUEST_TOKEN=${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN || ""}`, @@ -100488,7 +100490,8 @@ var Updater = class { this.apiClient.params.jobId, this.apiClient.getJobToken(), this.apiClient.params.dependabotApiUrl, - this.credentials + this.credentials, + this.details["package-manager"] ); await proxy.container.start(); try { diff --git a/src/proxy.ts b/src/proxy.ts index 2c797d96e..57b1e6db8 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -62,7 +62,8 @@ export class ProxyBuilder { jobId: number, jobToken: string, dependabotApiUrl: string, - credentials: Credential[] + credentials: Credential[], + packageManager: string ): Promise { const name = `dependabot-job-${jobId}-proxy` const config = this.buildProxyConfig(credentials) @@ -81,7 +82,8 @@ export class ProxyBuilder { name, externalNetwork, internalNetwork, - internalNetworkName + internalNetworkName, + packageManager ) await ContainerService.storeInput( @@ -281,7 +283,8 @@ export class ProxyBuilder { containerName: string, externalNetwork: Network, internalNetwork: Network, - internalNetworkName: string + internalNetworkName: string, + packageManager: string ): Promise { const container = await this.docker.createContainer({ Image: this.proxyImage, @@ -296,6 +299,7 @@ export class ProxyBuilder { `no_proxy=${process.env.no_proxy || process.env.NO_PROXY || ''}`, `JOB_ID=${jobId}`, `JOB_TOKEN=${jobToken}`, + `PACKAGE_MANAGER=${packageManager}`, 'PROXY_CACHE=true', `DEPENDABOT_API_URL=${dependabotApiUrl}`, `ACTIONS_ID_TOKEN_REQUEST_TOKEN=${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN || ''}`, diff --git a/src/updater.ts b/src/updater.ts index e7750f163..c6aa5b2ef 100644 --- a/src/updater.ts +++ b/src/updater.ts @@ -36,7 +36,8 @@ export class Updater { this.apiClient.params.jobId, this.apiClient.getJobToken(), this.apiClient.params.dependabotApiUrl, - this.credentials + this.credentials, + this.details['package-manager'] ) await proxy.container.start()