summaryrefslogtreecommitdiff
path: root/.gcp
diff options
context:
space:
mode:
authorBrandon Keiji <[email protected]>2025-06-26 01:54:58 +0000
committerGitHub <[email protected]>2025-06-26 01:54:58 +0000
commita8763abfb7eeb91bc48445a5e0a24ab0532a714d (patch)
tree72ad13f024404b487122b2561ad6a929ad460e13 /.gcp
parentbb797ded7d15003dfec7a68ff82764d7a2c44458 (diff)
feat: add release trigger configuration (#1697)
Diffstat (limited to '.gcp')
-rw-r--r--.gcp/dogfood.yaml47
-rw-r--r--.gcp/release.yaml144
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: ''