From 9ff3592e01b8f7cd2c30d35b65ee132c37631bc6 Mon Sep 17 00:00:00 2001 From: matt korwel Date: Fri, 4 Jul 2025 11:30:29 -0500 Subject: [PATCH] Mk nightly relase tag formatting (#3206) --- .gcp/release-docker.yaml | 39 +++++++++++++++++++++++------------ .github/workflows/release.yml | 37 ++++++++++++++------------------- package.json | 2 +- 3 files changed, 42 insertions(+), 36 deletions(-) diff --git a/.gcp/release-docker.yaml b/.gcp/release-docker.yaml index 6a8924a4..b85072cb 100644 --- a/.gcp/release-docker.yaml +++ b/.gcp/release-docker.yaml @@ -17,34 +17,48 @@ steps: entrypoint: 'npm' args: ['run', 'build:packages'] - # Step 6: Build sandbox container image + # Step 6: Determine Docker Image Tag + - name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder' + id: 'Determine Docker Image Tag' + entrypoint: 'bash' + args: + - -c + - | + FINAL_TAG="$SHORT_SHA" # Default to SHA + if [[ "$TAG_NAME" == *"-nightly"* ]]; then + echo "Nightly release detected." + FINAL_TAG="${TAG_NAME#v}" + elif [[ "$TAG_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Official release detected." + FINAL_TAG="${TAG_NAME#v}" + else + echo "Development/RC release detected. Using commit SHA as tag." + fi + echo "Determined image tag: $FINAL_TAG" + echo "$FINAL_TAG" > /workspace/image_tag.txt + + # 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: 'bash' args: - -c - | - if [ "$_OFFICIAL_RELEASE" = "true" ]; then - export GEMINI_SANDBOX_IMAGE_TAG="${TAG_NAME#v}" - else - export GEMINI_SANDBOX_IMAGE_TAG="$SHORT_SHA" - fi + export GEMINI_SANDBOX_IMAGE_TAG=$(cat /workspace/image_tag.txt) + echo "Using Docker image tag for build: $GEMINI_SANDBOX_IMAGE_TAG" npm run build:sandbox:fast env: - 'GEMINI_SANDBOX=$_CONTAINER_TOOL' - # Step 7: Publish sandbox container image + # 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: 'bash' args: - -c - | - if [ "$_OFFICIAL_RELEASE" = "true" ]; then - export GEMINI_SANDBOX_IMAGE_TAG="${TAG_NAME#v}" - else - export GEMINI_SANDBOX_IMAGE_TAG="$SHORT_SHA" - fi + export GEMINI_SANDBOX_IMAGE_TAG=$(cat /workspace/image_tag.txt) + echo "Using Docker image tag for publish: $GEMINI_SANDBOX_IMAGE_TAG" npm run publish:sandbox env: - 'GEMINI_SANDBOX=$_CONTAINER_TOOL' @@ -54,5 +68,4 @@ options: dynamicSubstitutions: true substitutions: - _OFFICIAL_RELEASE: 'false' _CONTAINER_TOOL: 'docker' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 24294a8a..524dfaff 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -72,8 +72,6 @@ jobs: RELEASE_VERSION="${RELEASE_TAG#v}" if [[ $RELEASE_VERSION == *-* ]]; then NPM_TAG=$(echo $RELEASE_VERSION | cut -d'-' -f2 | cut -d'.' -f1) - elif [[ $RELEASE_VERSION == *+* ]]; then - NPM_TAG=$(echo $RELEASE_VERSION | cut -d'+' -f2 | cut -d'.' -f1) else NPM_TAG="latest" fi @@ -102,25 +100,8 @@ jobs: git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git add package.json package-lock.json packages/*/package.json - if ! git diff-index --quiet HEAD --; then - echo "Changes detected, creating commit." - git commit -m "chore(release): ${{ steps.version.outputs.RELEASE_TAG }}" - git push --set-upstream origin ${{ steps.release_branch.outputs.BRANCH_NAME }} --follow-tags - else - echo "No version changes to commit." - fi - - - name: Create GitHub Release and Tag - if: '!inputs.dry_run' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - RELEASE_BRANCH: ${{ steps.release_branch.outputs.BRANCH_NAME }} - run: | - gh release create ${{ steps.version.outputs.RELEASE_TAG }} \ - bundle/gemini.js \ - --target "$RELEASE_BRANCH" \ - --title "Release ${{ steps.version.outputs.RELEASE_TAG }}" \ - --generate-notes + git commit -m "chore(release): ${{ steps.version.outputs.RELEASE_TAG }}" + git push --set-upstream origin ${{ steps.release_branch.outputs.BRANCH_NAME }} --follow-tags - name: Build and Prepare Packages run: | @@ -140,9 +121,21 @@ jobs: NODE_AUTH_TOKEN: ${{ secrets.WOMBAT_TOKEN_CORE }} - name: Install latest core package - run: npm install @google/gemini-cli-core@${{ steps.version.outputs.RELEASE_VERSION }} --workspace=@google/gemini-cli --save-exact + run: npm install @google/gemini-cli-core@${{ steps.version.outputs.NPM_TAG }} --workspace=@google/gemini-cli --save-exact - name: Publish @google/gemini-cli run: npm publish --workspace=@google/gemini-cli --tag=${{ steps.version.outputs.NPM_TAG }} ${{ inputs.dry_run && '--dry-run' || '' }} env: NODE_AUTH_TOKEN: ${{ secrets.WOMBAT_TOKEN_CLI }} + + - name: Create GitHub Release and Tag + if: '!inputs.dry_run' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + RELEASE_BRANCH: ${{ steps.release_branch.outputs.BRANCH_NAME }} + run: | + gh release create ${{ steps.version.outputs.RELEASE_TAG }} \ + bundle/gemini.js \ + --target "$RELEASE_BRANCH" \ + --title "Release ${{ steps.version.outputs.RELEASE_TAG }}" \ + --generate-notes diff --git a/package.json b/package.json index 5433f17a..128c74a6 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "publish:release": "npm run prepare:package && npm run build:packages && npm run build:sandbox:fast && npm run publish:sandbox && npm run publish:npm", "prepublishOnly": "node scripts/check-versions.js && node scripts/prepublish.js", "release:version": "node scripts/version.js", - "tag:release:nightly": "TAG_NAME=\"v$(node -p \"require('./package.json').version\")+nightly.$(date -u +%d%m%y).$(git rev-parse --short HEAD)\"; git tag -a $TAG_NAME -m '' && git push origin $TAG_NAME", + "tag:release:nightly": "TAG_NAME=\"v$(node -p \"require('./package.json').version\")-nightly.$(date -u +%y%m%d).$(git rev-parse --short HEAD)\"; git tag -a $TAG_NAME -m '' && git push origin $TAG_NAME", "check:versions": "node scripts/check-versions.js", "publish:actions-release": "npm run prepare:package && npm run build:packages && npm run publish:npm" },