From dc94a03f39c712a0bb9b4ab0de7bac0e29c2b12e Mon Sep 17 00:00:00 2001 From: Brandon Keiji Date: Thu, 29 May 2025 21:01:44 +0000 Subject: feat: publish root Dockerfile to our image registry (#599) --- scripts/prepare-cli-packagejson.js | 66 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 scripts/prepare-cli-packagejson.js (limited to 'scripts/prepare-cli-packagejson.js') diff --git a/scripts/prepare-cli-packagejson.js b/scripts/prepare-cli-packagejson.js new file mode 100644 index 00000000..8e0efff1 --- /dev/null +++ b/scripts/prepare-cli-packagejson.js @@ -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}`); -- cgit v1.2.3