From 7ad65566236dd0eb81e49f0611ecafde2ebcd63d Mon Sep 17 00:00:00 2001 From: Brandon Keiji Date: Mon, 28 Apr 2025 20:25:19 +0000 Subject: feat: publish docker image alongside npm package (#197) --- packages/cli/.npmrc | 2 ++ packages/cli/Dockerfile | 27 --------------------------- packages/cli/Dockerfile.sandbox | 26 ++++++++++++++++++++++++++ packages/cli/package.json | 14 +++++++++----- packages/server/package.json | 2 +- 5 files changed, 38 insertions(+), 33 deletions(-) create mode 100644 packages/cli/.npmrc delete mode 100644 packages/cli/Dockerfile create mode 100644 packages/cli/Dockerfile.sandbox (limited to 'packages') diff --git a/packages/cli/.npmrc b/packages/cli/.npmrc new file mode 100644 index 00000000..e17bb8be --- /dev/null +++ b/packages/cli/.npmrc @@ -0,0 +1,2 @@ +@gemini-code:registry=https://us-west1-npm.pkg.dev/gemini-code-dev/gemini-code/ +//us-west1-npm.pkg.dev/gemini-code-dev/gemini-code/:always-auth=true \ No newline at end of file diff --git a/packages/cli/Dockerfile b/packages/cli/Dockerfile deleted file mode 100644 index 9cf4b1b9..00000000 --- a/packages/cli/Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -FROM docker.io/library/node:20-slim - -ENV GEMINI_CODE_SANDBOX=docker -ENV SANDBOX=sandbox - -# install minimal set of packages, then clean up -RUN apt-get update && apt-get install -y --no-install-recommends \ - man-db \ - curl \ - dnsutils \ - less \ - jq \ - bc \ - gh \ - git \ - unzip \ - rsync \ - ripgrep \ - procps \ - psmisc \ - lsof \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -RUN --mount=type=secret,id=npmrc,dst=/root/.npmrc npm install -g @gemini-code/cli@head --verbose - -ENTRYPOINT 'gemini-code' \ No newline at end of file diff --git a/packages/cli/Dockerfile.sandbox b/packages/cli/Dockerfile.sandbox new file mode 100644 index 00000000..1d4c4048 --- /dev/null +++ b/packages/cli/Dockerfile.sandbox @@ -0,0 +1,26 @@ +FROM docker.io/library/node:20-slim + +ARG CLI_VERSION +ENV SANDBOX=${CLI_VERSION} + +# install minimal set of packages, then clean up +RUN apt-get update && apt-get install -y --no-install-recommends \ + man-db \ + curl \ + dnsutils \ + less \ + jq \ + bc \ + gh \ + git \ + unzip \ + rsync \ + ripgrep \ + procps \ + psmisc \ + lsof \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +RUN --mount=type=secret,id=npmrc,dst=/root/.npmrc npm install -g @gemini-code/cli@${CLI_VERSION} --verbose +ENTRYPOINT 'gemini-code' diff --git a/packages/cli/package.json b/packages/cli/package.json index 13403ccf..d178e5ef 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@gemini-code/cli", - "version": "0.1.0-dev-62cc889.0", + "version": "0.1.0", "description": "Gemini Code CLI", "type": "module", "main": "dist/index.js", @@ -8,8 +8,12 @@ "gemini-code": "dist/index.js", "gemini-code-sandbox": "bin/sandbox.sh" }, + "image": "us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-cli", "scripts": { + "build:package": "tsc --build", + "build:sandbox": "DOCKER_BUILDKIT=1 docker build --build-arg CLI_VERSION=$npm_package_version --no-cache --secret id=npmrc,src=$HOME/.npmrc -t us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-cli:$npm_package_version -f Dockerfile.sandbox .", "build": "../../scripts/build_package.sh", + "publish:sandbox": "docker push us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-cli:$npm_package_version", "clean": "rm -rf dist", "start": "node dist/index.js", "debug": "node --inspect-brk dist/index.js", @@ -18,15 +22,15 @@ "test": "vitest run", "prerelease:version": "node ../../scripts/bind_package_version.js", "prerelease:deps": "node ../../scripts/bind_package_dependencies.js", - "prerelease:sandbox": "DOCKER_BUILDKIT=1 docker build --no-cache --secret id=npmrc,src=$HOME/.npmrc -t 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code:0.1.0-fakeversion' .", - "prepack": "npm run build", - "xpostpublish": "docker push 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code:0.1.0-fakeversion'" + "prepublishOnly": "npm publish --dry-run --workspace=@gemini-code/server", + "prepack": "npm run build:package", + "postpublish": "npm run build:sandbox && npm run publish:sandbox" }, "files": [ "dist" ], "dependencies": { - "@gemini-code/server": "0.1.0-dev-62cc889.0", + "@gemini-code/server": "0.1.0", "diff": "^7.0.0", "dotenv": "^16.4.7", "highlight.js": "^11.11.1", diff --git a/packages/server/package.json b/packages/server/package.json index df48d612..a4ec126d 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "@gemini-code/server", - "version": "0.1.0-dev-62cc889.0", + "version": "0.1.0", "description": "Gemini Code Server", "type": "module", "main": "dist/index.js", -- cgit v1.2.3