diff options
| author | Brandon Keiji <[email protected]> | 2025-06-26 01:54:58 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-06-26 01:54:58 +0000 |
| commit | a8763abfb7eeb91bc48445a5e0a24ab0532a714d (patch) | |
| tree | 72ad13f024404b487122b2561ad6a929ad460e13 /.gcp | |
| parent | bb797ded7d15003dfec7a68ff82764d7a2c44458 (diff) | |
feat: add release trigger configuration (#1697)
Diffstat (limited to '.gcp')
| -rw-r--r-- | .gcp/dogfood.yaml | 47 | ||||
| -rw-r--r-- | .gcp/release.yaml | 144 |
2 files changed, 144 insertions, 47 deletions
diff --git a/.gcp/dogfood.yaml b/.gcp/dogfood.yaml deleted file mode 100644 index dd444db5..00000000 --- a/.gcp/dogfood.yaml +++ /dev/null @@ -1,47 +0,0 @@ -steps: - # Step 1: Install root dependencies (includes workspaces) - - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' - entrypoint: 'npm' - args: ['install'] - - # Step 2: Update version in root package.json - - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' - entrypoint: 'bash' - args: - - -c # Use bash -c to allow for command substitution and string manipulation - - | - current_version=$(npm pkg get version | sed 's/"//g') - new_version="$${current_version}-$SHORT_SHA.$_REVISION" - npm pkg set "version=$${new_version}" - echo "Set root package.json version to: $${new_version}" - - # Step 3: Run prerelease:dev to update workspace versions and dependencies - - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' - entrypoint: 'npm' - args: ['run', 'prerelease:dev'] # This will run prerelease:version and prerelease:deps - - # Step 4: Authenticate for Docker and NPM - - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' - entrypoint: 'npm' - args: ['run', 'auth'] - - # Step 5: Run the master release script - - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' - entrypoint: 'npm' - args: ['run', 'publish:release'] - env: - - 'GEMINI_SANDBOX=$_CONTAINER_TOOL' - - 'SANDBOX_IMAGE_REGISTRY=$_SANDBOX_IMAGE_REGISTRY' - - 'SANDBOX_IMAGE_NAME=$_SANDBOX_IMAGE_NAME' - - 'NPM_PUBLISH_TAG=$_NPM_PUBLISH_TAG' - -options: - defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET - dynamicSubstitutions: true - -substitutions: - _REVISION: '0' - _SANDBOX_IMAGE_REGISTRY: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-cli' - _SANDBOX_IMAGE_NAME: 'sandbox-ci' - _NPM_PUBLISH_TAG: 'head' - _CONTAINER_TOOL: 'docker' diff --git a/.gcp/release.yaml b/.gcp/release.yaml new file mode 100644 index 00000000..03330151 --- /dev/null +++ b/.gcp/release.yaml @@ -0,0 +1,144 @@ +steps: + # Step 1: Install root dependencies (includes workspaces) + - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' + id: 'Install Dependencies' + entrypoint: 'npm' + args: ['install'] + + # Step 2: Update version in root package.json + - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' + id: 'Set version in workspace root' + entrypoint: 'bash' + args: + - -c # Use bash -c to allow for command substitution and string manipulation + - | + current_version=$(npm pkg get version | sed 's/"//g') + if [ "$_OFFICIAL_RELEASE" = "true" ]; then + new_version="$current_version" + else + new_version="${current_version}-rc.$_REVISION" + fi + npm pkg set "version=${new_version}" + echo "Set root package.json version to: ${new_version}" + + # Step 3: Binds the package versions to the version in the repo root's package.json + - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' + id: 'Bind package versions to workspace root' + entrypoint: 'npm' + args: ['run', 'prerelease:dev'] # This will run prerelease:version and prerelease:deps + + # Step 4: Authenticate for Docker (so we can push images to the artifact registry) + - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' + id: 'Authenticate docker' + entrypoint: 'npm' + args: ['run', 'auth'] + + # Step 5: Build workspace packages + - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' + id: 'Build packages' + entrypoint: 'npm' + args: ['run', 'build:packages'] + + # Step 6: Prepare CLI package.json for publishing + - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' + id: 'Prepare @google/gemini-cli package.json and readme' + entrypoint: 'npm' + args: ['run', 'prepare:cli-packagejson'] + env: + - 'GEMINI_SANDBOX=$_CONTAINER_TOOL' + - 'SANDBOX_IMAGE_REGISTRY=$_SANDBOX_IMAGE_REGISTRY' + - 'SANDBOX_IMAGE_NAME=$_SANDBOX_IMAGE_NAME' + + # Step 7: Build sandbox container image + - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' + id: 'Build sandbox Docker image' + entrypoint: 'npm' + args: ['run', 'build:sandbox:fast'] + env: + - 'GEMINI_SANDBOX=$_CONTAINER_TOOL' + - 'SANDBOX_IMAGE_REGISTRY=$_SANDBOX_IMAGE_REGISTRY' + - 'SANDBOX_IMAGE_NAME=$_SANDBOX_IMAGE_NAME' + + # Step 8: Publish sandbox container image + - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' + id: 'Publish sandbox Docker image' + entrypoint: 'npm' + args: ['run', 'publish:sandbox'] + env: + - 'GEMINI_SANDBOX=$_CONTAINER_TOOL' + - 'SANDBOX_IMAGE_REGISTRY=$_SANDBOX_IMAGE_REGISTRY' + - 'SANDBOX_IMAGE_NAME=$_SANDBOX_IMAGE_NAME' + + # Pre-Step 9: authenticate to our intermediate npm registry + - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' + id: 'Setup @google/gemini-cli-core auth token for publishing' + entrypoint: 'bash' + args: + - -c + - | + echo "//wombat-dressing-room.appspot.com/:_authToken=$$CORE_PACKAGE_PUBLISH_TOKEN" > $$HOME/.npmrc + secretEnv: ['CORE_PACKAGE_PUBLISH_TOKEN'] + + # Step 9: Publish @google/gemini-cli-core to NPM + - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' + id: 'Publish @google/gemini-cli-core package' + entrypoint: 'bash' + args: + - -c + - | + if [ "$_OFFICIAL_RELEASE" = "true" ]; then + npm publish --workspace=@google/gemini-cli-core --tag=latest + else + npm publish --workspace=@google/gemini-cli-core --tag=rc + fi + env: + - 'GEMINI_SANDBOX=$_CONTAINER_TOOL' + - 'SANDBOX_IMAGE_REGISTRY=$_SANDBOX_IMAGE_REGISTRY' + - 'SANDBOX_IMAGE_NAME=$_SANDBOX_IMAGE_NAME' + + # Pre-Step 10: authenticate to our intermediate npm registry + - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' + id: 'Setup @google/gemini-cli auth token for publishing' + entrypoint: 'bash' + args: + - -c + - | + echo "//wombat-dressing-room.appspot.com/:_authToken=$$CLI_PACKAGE_PUBLISH_TOKEN" > $$HOME/.npmrc + secretEnv: ['CLI_PACKAGE_PUBLISH_TOKEN'] + + # Step 10: Publish @google/gemini-cli to NPM + - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' + id: 'Publish @google/gemini-cli package' + entrypoint: 'bash' + args: + - -c + - | + if [ "$_OFFICIAL_RELEASE" = "true" ]; then + npm publish --workspace=@google/gemini-cli --tag=latest + else + npm publish --workspace=@google/gemini-cli --tag=rc + fi + env: + - 'GEMINI_SANDBOX=$_CONTAINER_TOOL' + - 'SANDBOX_IMAGE_REGISTRY=$_SANDBOX_IMAGE_REGISTRY' + - 'SANDBOX_IMAGE_NAME=$_SANDBOX_IMAGE_NAME' + +options: + defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET + dynamicSubstitutions: true + +availableSecrets: + secretManager: + - versionName: ${_CLI_PACKAGE_WOMBAT_TOKEN_RESOURCE_NAME} + env: 'CLI_PACKAGE_PUBLISH_TOKEN' + - versionName: ${_CORE_PACKAGE_WOMBAT_TOKEN_RESOURCE_NAME} + env: 'CORE_PACKAGE_PUBLISH_TOKEN' + +substitutions: + _REVISION: '0' + _OFFICIAL_RELEASE: 'false' + _CONTAINER_TOOL: 'docker' + _SANDBOX_IMAGE_REGISTRY: '' + _SANDBOX_IMAGE_NAME: '' + _CLI_PACKAGE_WOMBAT_TOKEN_RESOURCE_NAME: '' + _CORE_PACKAGE_WOMBAT_TOKEN_RESOURCE_NAME: '' |
