mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-20 08:47:44 +00:00
feat: publish root Dockerfile to our image registry (#599)
This commit is contained in:
66
scripts/prepare-cli-packagejson.js
Normal file
66
scripts/prepare-cli-packagejson.js
Normal file
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright 2025 Google LLC
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
// ES module equivalent of __dirname
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
const cliPackageJsonPath = path.resolve(
|
||||
__dirname,
|
||||
'../packages/cli/package.json',
|
||||
);
|
||||
const cliPackageJson = JSON.parse(fs.readFileSync(cliPackageJsonPath, 'utf8'));
|
||||
|
||||
// Get version from root package.json (accessible via env var in npm scripts)
|
||||
const version = process.env.npm_package_version;
|
||||
|
||||
// Get Docker registry and image name directly from PUBLISH_ environment variables.
|
||||
// These are expected to be set by the CI/build environment.
|
||||
const dockerRegistry = process.env.SANDBOX_IMAGE_REGISTRY;
|
||||
const dockerImageName = process.env.SANDBOX_IMAGE_NAME;
|
||||
|
||||
if (!version || !dockerRegistry || !dockerImageName) {
|
||||
console.error(
|
||||
'Error: Missing required environment variables. Need: ' +
|
||||
'npm_package_version, SANDBOX_IMAGE_REGISTRY, and SANDBOX_IMAGE_NAME.',
|
||||
);
|
||||
console.error(
|
||||
'These should be passed from the CI environment (e.g., Cloud Build substitutions) ' +
|
||||
'to the npm publish:release script.',
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const dockerImageUri = `${dockerRegistry}/${dockerImageName}:${version}`;
|
||||
|
||||
// Add or update fields in cliPackageJson.config to store this information
|
||||
if (!cliPackageJson.config) {
|
||||
cliPackageJson.config = {};
|
||||
}
|
||||
cliPackageJson.config.dockerImageUri = dockerImageUri;
|
||||
cliPackageJson.config.dockerRegistry = dockerRegistry;
|
||||
cliPackageJson.config.dockerImageName = dockerImageName;
|
||||
|
||||
// Remove 'prepublishOnly' from scripts if it exists
|
||||
if (cliPackageJson.scripts && cliPackageJson.scripts.prepublishOnly) {
|
||||
delete cliPackageJson.scripts.prepublishOnly;
|
||||
console.log('Removed prepublishOnly script from packages/cli/package.json');
|
||||
}
|
||||
|
||||
fs.writeFileSync(
|
||||
cliPackageJsonPath,
|
||||
JSON.stringify(cliPackageJson, null, 2) + '\n',
|
||||
);
|
||||
console.log(
|
||||
`Updated ${path.relative(process.cwd(), cliPackageJsonPath)} with Docker image details:`,
|
||||
);
|
||||
console.log(` URI: ${dockerImageUri}`);
|
||||
console.log(` Registry: ${dockerRegistry}`);
|
||||
console.log(` Image Name: ${dockerImageName}`);
|
||||
Reference in New Issue
Block a user