From 0d55843c4a27a47eae9c16a870b0a5fa209fbb1e Mon Sep 17 00:00:00 2001 From: mkorwel Date: Thu, 23 Oct 2025 08:40:10 -0700 Subject: [PATCH] incorporating docker into new orchestrator --- .github/actions/push-sandbox/action.yml | 96 -------------------- .github/workflows/build-sandbox.yml | 115 ++++++++++++++++++++++++ .github/workflows/e2e.yml | 26 +++++- .github/workflows/orchestrator.yml | 17 +++- Dockerfile | 45 +++++++--- build.png | Bin 600629 -> 0 bytes scripts/build_sandbox.js | 2 +- 7 files changed, 185 insertions(+), 116 deletions(-) delete mode 100644 .github/actions/push-sandbox/action.yml create mode 100644 .github/workflows/build-sandbox.yml delete mode 100644 build.png diff --git a/.github/actions/push-sandbox/action.yml b/.github/actions/push-sandbox/action.yml deleted file mode 100644 index 24669f421d..0000000000 --- a/.github/actions/push-sandbox/action.yml +++ /dev/null @@ -1,96 +0,0 @@ -name: 'Build and push sandbox docker' -description: 'Pushes sandbox docker image to container registry' - -inputs: - github-actor: - description: 'Github actor' - required: true - github-secret: - description: 'Github secret' - required: true - dockerhub-username: - description: 'Dockerhub username' - required: true - dockerhub-token: - description: 'Dockerhub PAT w/ R+W' - required: true - github-sha: - description: 'Github Commit SHA Hash' - required: true - github-ref-name: - description: 'Github ref name' - required: true - dry-run: - description: 'Whether this is a dry run.' - required: true - type: 'boolean' - -runs: - using: 'composite' - steps: - - name: '📝 Print Inputs' - shell: 'bash' - env: - JSON_INPUTS: '${{ toJSON(inputs) }}' - run: 'echo "$JSON_INPUTS"' - - name: 'Checkout' - uses: 'actions/checkout@v4' - with: - ref: '${{ inputs.github-sha }}' - fetch-depth: 0 - - name: 'Install Dependencies' - shell: 'bash' - run: 'npm install' - - name: 'npm build' - shell: 'bash' - run: 'npm run build' - - name: 'Set up Docker Buildx' - uses: 'docker/setup-buildx-action@v3' - - name: 'Log in to GitHub Container Registry' - uses: 'docker/login-action@v3' - with: - registry: 'docker.io' - username: '${{ inputs.dockerhub-username }}' - password: '${{ inputs.dockerhub-token }}' - - name: 'determine image tag' - id: 'image_tag' - shell: 'bash' - run: |- - SHELL_TAG_NAME="${{ inputs.github-ref-name }}" - FINAL_TAG="${{ inputs.github-sha }}" - if [[ "$SHELL_TAG_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.-]+)?$ ]]; then - echo "Release detected." - FINAL_TAG="${SHELL_TAG_NAME#v}" - else - echo "Development release detected. Using commit SHA as tag." - fi - echo "Determined image tag: $FINAL_TAG" - echo "FINAL_TAG=$FINAL_TAG" >> $GITHUB_OUTPUT - - name: 'build' - id: 'docker_build' - shell: 'bash' - env: - GEMINI_SANDBOX_IMAGE_TAG: '${{ steps.image_tag.outputs.FINAL_TAG }}' - GEMINI_SANDBOX: 'docker' - run: |- - npm run build:sandbox -- \ - --image google/gemini-cli-sandbox:${{ steps.image_tag.outputs.FINAL_TAG }} \ - --output-file final_image_uri.txt - echo "uri=$(cat final_image_uri.txt)" >> $GITHUB_OUTPUT - - name: 'publish' - shell: 'bash' - if: "${{ inputs.dry-run != 'true' }}" - run: |- - docker push "${{ steps.docker_build.outputs.uri }}" - - name: 'Create issue on failure' - if: |- - ${{ failure() }} - shell: 'bash' - env: - GITHUB_TOKEN: '${{ inputs.github-secret }}' - DETAILS_URL: '${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}' - run: |- - gh issue create \ - --title "Docker build failed" \ - --body "The docker build failed. See the full run for details: ${DETAILS_URL}" \ - --label "kind/bug,release-failure" diff --git a/.github/workflows/build-sandbox.yml b/.github/workflows/build-sandbox.yml new file mode 100644 index 0000000000..1fbc5197a4 --- /dev/null +++ b/.github/workflows/build-sandbox.yml @@ -0,0 +1,115 @@ +name: 'Build Sandbox Image' + +on: + workflow_call: + inputs: + github-actor: + description: 'Github actor' + required: true + type: 'string' + github-secret: + description: 'Github secret' + required: true + type: 'string' + github-sha: + description: 'Github Commit SHA Hash' + required: true + type: 'string' + github-ref-name: + description: 'Github ref name' + required: true + type: 'string' + dry-run: + description: 'Whether this is a dry run.' + required: true + type: 'boolean' + npm-registry-scope: + description: 'NPM registry scope' + required: true + type: 'string' + npm-registry-url: + description: 'NPM registry URL' + required: true + type: 'string' + cli-package-name: + description: 'The name of the cli package.' + required: true + type: 'string' + outputs: + image-uri: + description: 'The URI of the built sandbox image.' + value: '${{ jobs.build-and-push.outputs.image-uri }}' + +jobs: + build-and-push: + runs-on: 'ubuntu-latest' + outputs: + image-uri: '${{ steps.docker_build.outputs.uri }}' + steps: + - name: '📝 Print Inputs' + shell: 'bash' + env: + JSON_INPUTS: '${{ toJSON(inputs) }}' + run: 'echo "$JSON_INPUTS"' + - name: 'Checkout' + uses: 'actions/checkout@v4' + with: + ref: '${{ inputs.github-sha }}' + fetch-depth: 0 + - name: 'Install Dependencies' + shell: 'bash' + run: 'npm install' + - name: 'Set up Docker Buildx' + uses: 'docker/setup-buildx-action@v3' + - name: 'Log in to GitHub Container Registry' + uses: 'docker/login-action@v3' + with: + registry: 'ghcr.io' + username: '${{ inputs.github-actor }}' + password: '${{ inputs.github-secret }}' + - name: 'determine image tag' + id: 'image_tag' + shell: 'bash' + run: |- + SHELL_TAG_NAME="${{ inputs.github-ref-name }}" + FINAL_TAG="${{ inputs.github-sha }}" + if [[ "$SHELL_TAG_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.-]+)?$ ]]; then + echo "Release detected." + FINAL_TAG="${SHELL_TAG_NAME#v}" + else + echo "Development release detected. Using commit SHA as tag." + fi + echo "Determined image tag: $FINAL_TAG" + echo "FINAL_TAG=$FINAL_TAG" >> "$GITHUB_OUTPUT" + - name: 'build' + id: 'docker_build' + shell: 'bash' + env: + GEMINI_SANDBOX_IMAGE_TAG: '${{ steps.image_tag.outputs.FINAL_TAG }}' + GEMINI_SANDBOX: 'docker' + NPM_REGISTRY_SCOPE: '${{ inputs.npm-registry-scope }}' + NPM_REGISTRY_URL: '${{ inputs.npm-registry-url }}' + CLI_PACKAGE_NAME: '${{ inputs.cli-package-name }}' + GITHUB_TOKEN: '${{ inputs.github-secret }}' + run: |- + node scripts/build_sandbox.js \ + --image ghcr.io/${{ github.repository }}/cli-sandbox:${{ steps.image_tag.outputs.FINAL_TAG }} \ + --output-file final_image_uri.txt + echo "uri=$(cat final_image_uri.txt)" >> "$GITHUB_OUTPUT" + - name: 'publish' + shell: 'bash' + if: "${{ inputs.dry-run != 'true' }}" + run: |- + docker push "${{ steps.docker_build.outputs.uri }}" + - name: 'Create issue on failure' + if: |- + ${{ failure() }} + shell: 'bash' + env: + GITHUB_TOKEN: '${{ inputs.github-secret }}' + DETAILS_URL: '${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}' + run: |- + gh issue create \ + --title "Docker build failed" \ + --body "The docker build failed. See the full run for details: ${DETAILS_URL}" \ + --label "kind/bug,release-failure" diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 11a39605e5..39ae017ada 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -13,13 +13,33 @@ on: description: 'The name of the CLI package to install' required: true type: 'string' + image-uri: + description: 'The URI of the built sandbox image.' + required: true + type: 'string' secrets: GEMINI_API_KEY: required: true jobs: + build-sandbox-image: + name: 'Build Sandbox Image' + runs-on: 'ubuntu-latest' + outputs: + image-uri: '${{ steps.build-and-push.outputs.image-uri }}' + steps: + - id: 'build-and-push' + uses: './.github/workflows/build-sandbox.yml' + with: + github-actor: '${{ github.actor }}' + github-secret: '${{ secrets.GITHUB_TOKEN }}' + github-sha: '${{ github.sha }}' + github-ref-name: '${{ github.ref_name }}' + dry-run: false + e2e_linux: name: 'E2E Test (Linux) - ${{ matrix.sandbox }}' + needs: 'build-sandbox-image' if: | (github.event_name == 'push' || github.event_name == 'merge_group' || @@ -57,16 +77,13 @@ jobs: - name: 'Install dependencies' run: 'npm install ${{ inputs.cli-package-name }}@${{ inputs.version }}' - - name: 'Set up Docker' - if: "matrix.sandbox == 'sandbox:docker'" - uses: 'docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435' # ratchet:docker/setup-buildx-action@v3 - - name: 'Run E2E tests' env: GEMINI_API_KEY: '${{ secrets.GEMINI_API_KEY }}' KEEP_OUTPUT: 'true' VERBOSE: 'true' INTEGRATION_TEST_USE_INSTALLED_GEMINI: 'true' + GEMINI_SANDBOX_IMAGE: '${{ inputs.image-uri }}' shell: 'bash' run: | if [[ "${{ matrix.sandbox }}" == "sandbox:docker" ]]; then @@ -209,6 +226,7 @@ jobs: needs: - 'e2e_linux' - 'e2e_mac' + - 'build-sandbox-image' runs-on: 'ubuntu-latest' steps: - name: 'Check E2E test results' diff --git a/.github/workflows/orchestrator.yml b/.github/workflows/orchestrator.yml index 934d7da085..1c5741eeae 100644 --- a/.github/workflows/orchestrator.yml +++ b/.github/workflows/orchestrator.yml @@ -53,13 +53,28 @@ jobs: - id: 'get-vars' run: 'echo ''cli-package-name=''''${{ vars.CLI_PACKAGE_NAME }}'''''' >> "$GITHUB_OUTPUT"' + build-sandbox: + name: 'Build Sandbox Image' + needs: 'lint' + uses: './.github/workflows/build-sandbox.yml' + with: + github-actor: '${{ github.actor }}' + github-secret: '${{ github.token }}' + github-sha: '${{ github.sha }}' + github-ref-name: '${{ github.ref_name }}' + dry-run: false + npm-registry-scope: '${{ vars.NPM_REGISTRY_SCOPE }}' + npm-registry-url: '${{ vars.NPM_REGISTRY_URL }}' + cli-package-name: '${{ vars.CLI_PACKAGE_NAME }}' + e2e: name: 'E2E Checks' - needs: ['build-and-publish', 'get-vars'] + needs: ['build-and-publish', 'get-vars', 'build-sandbox'] uses: './.github/workflows/e2e.yml' with: version: '${{ needs.build-and-publish.outputs.version }}' cli-package-name: '${{ needs.get-vars.outputs.cli-package-name }}' + image-uri: '${{ needs.build-sandbox.outputs.image-uri }}' secrets: GEMINI_API_KEY: '${{ secrets.GEMINI_API_KEY }}' diff --git a/Dockerfile b/Dockerfile index b41ea00368..37cccadd61 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,35 @@ +# --- Builder Stage --- +FROM docker.io/library/node:20-slim AS builder + +ARG CLI_VERSION +ARG NPM_REGISTRY_SCOPE +ARG NPM_REGISTRY_URL +ARG CLI_PACKAGE_NAME + +# Set up npm global package folder +ENV NPM_CONFIG_PREFIX=/usr/local/share/npm-global +ENV PATH=$PATH:/usr/local/share/npm-global/bin + +# Configure npm to use GitHub Packages +RUN --mount=type=secret,id=GITHUB_TOKEN \ + echo "${NPM_REGISTRY_SCOPE}:registry=${NPM_REGISTRY_URL}" > /home/node/.npmrc && \ + echo "//npm.pkg.github.com/:_authToken=$(cat /run/secrets/GITHUB_TOKEN)" >> /home/node/.npmrc && \ + chown -R node:node /home/node/.npmrc + +# Switch to non-root user +USER node + +# Install the Gemini CLI package +RUN npm install -g ${CLI_PACKAGE_NAME}@${CLI_VERSION} && \ + npm cache clean --force + +# --- Final Stage --- FROM docker.io/library/node:20-slim ARG SANDBOX_NAME="gemini-cli-sandbox" -ARG CLI_VERSION_ARG ENV SANDBOX="$SANDBOX_NAME" -ENV CLI_VERSION=$CLI_VERSION_ARG -# install minimal set of packages, then clean up +# Install runtime dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ python3 \ make \ @@ -29,22 +53,15 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* -# set up npm global package folder under /usr/local/share -# give it to non-root user node, already set up in base image +# Set up npm global package folder and user RUN mkdir -p /usr/local/share/npm-global \ && chown -R node:node /usr/local/share/npm-global ENV NPM_CONFIG_PREFIX=/usr/local/share/npm-global ENV PATH=$PATH:/usr/local/share/npm-global/bin - -# switch to non-root user node USER node -# install gemini-cli and clean up -COPY packages/cli/dist/google-gemini-cli-*.tgz /tmp/gemini-cli.tgz -COPY packages/core/dist/google-gemini-cli-core-*.tgz /tmp/gemini-core.tgz -RUN npm install -g /tmp/gemini-cli.tgz /tmp/gemini-core.tgz \ - && npm cache clean --force \ - && rm -f /tmp/gemini-{cli,core}.tgz +# Copy installed package from the builder stage +COPY --from=builder /usr/local/share/npm-global /usr/local/share/npm-global -# default entrypoint when none specified +# Default entrypoint CMD ["gemini"] diff --git a/build.png b/build.png deleted file mode 100644 index 7b9bf77b7b67d61d798baba629b602c542a28c26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600629 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