diff --git a/benchmark/Dockerfile b/benchmark/Dockerfile index d42d7db3da..72ffc4fb40 100644 --- a/benchmark/Dockerfile +++ b/benchmark/Dockerfile @@ -3,7 +3,12 @@ # docker run -d -it -p 3000:3000 -v /tmp/benchmarks.db:/tmp/benchmarks.db roo-code-benchmark # docker exec -it $(docker ps --filter "ancestor=roo-code-benchmark" -q) /bin/bash -FROM ubuntu:latest +FROM node:20-slim AS base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable +RUN npm install -g npm@latest +RUN npm install -g npm-run-all # Install dependencies RUN apt update && apt install -y sudo curl git vim jq @@ -34,11 +39,6 @@ RUN apt install -y golang-go # [java] Install Java 21 RUN apt install -y default-jre -# [javascript] Install Node.js v18.20.6 -RUN curl -sL https://deb.nodesource.com/setup_18.x | bash - -RUN apt update && apt install -y nodejs -RUN npm install -g corepack@latest - # [python] Install Python 3.12.3 and uv 0.6.6 RUN apt install -y python3 python3-venv python3-dev python3-pip @@ -49,25 +49,8 @@ RUN echo 'source $HOME/.cargo/env' >> $HOME/.bashrc WORKDIR /home/vscode USER vscode -# Enable corepack and install pnpm for the vscode user -RUN corepack enable -RUN yes y | pnpm --version - COPY benchmark/entrypoint.sh /usr/local/bin/entrypoint.sh -# Copy and build dependencies -COPY --chown=vscode:vscode package*.json /home/vscode/repo/ -COPY --chown=vscode:vscode webview-ui/package*.json /home/vscode/repo/webview-ui/ -COPY --chown=vscode:vscode e2e/package*.json /home/vscode/repo/e2e/ -COPY --chown=vscode:vscode benchmark/package*.json /home/vscode/repo/benchmark/ -WORKDIR /home/vscode/repo -RUN npm run install:all - -# Copy and build benchmark runner -COPY --chown=vscode:vscode . /home/vscode/repo -WORKDIR /home/vscode/repo/benchmark -RUN npm run build - # Copy exercises WORKDIR /home/vscode RUN git clone https://github.com/cte/Roo-Code-Benchmark.git exercises @@ -77,13 +60,23 @@ WORKDIR /home/vscode/exercises/python RUN curl -LsSf https://astral.sh/uv/install.sh | sh RUN /home/vscode/.local/bin/uv sync -# Build web-ui -WORKDIR /home/vscode/exercises/web-ui -RUN echo "BENCHMARKS_DB_PATH=file:/tmp/benchmarks.db" > .env -RUN pnpm install -RUN npx drizzle-kit push +# Copy and build extension dependencies +WORKDIR /home/vscode/repo +COPY --chown=vscode:vscode package*.json /home/vscode/repo/ +COPY --chown=vscode:vscode webview-ui/package*.json /home/vscode/repo/webview-ui/ +RUN npm-run-all -l -p install-extension install-webview + +# Copy extension and benchmark code +COPY --chown=vscode:vscode . /home/vscode/repo + +# Build extension dependencies +WORKDIR /home/vscode/repo/benchmark +RUN pnpm install + +# Initialize database +RUN echo "BENCHMARKS_DB_PATH=file:/tmp/benchmarks.db" > .env +RUN pnpm --filter @benchmark/db db:push -# Run web-ui EXPOSE 3000 ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] CMD ["/usr/bin/pnpm", "dev"] diff --git a/benchmark/README.md b/benchmark/README.md index 7f6c8810eb..b33c15be94 100644 --- a/benchmark/README.md +++ b/benchmark/README.md @@ -2,7 +2,13 @@ ## Get Started -[Install](https://docs.docker.com/desktop/) Docker Desktop. +[Install](https://docs.docker.com/desktop/) and run Docker Desktop. + +Build a container to run the Roo Code benchmarks: + +```sh +docker build -f Dockerfile -t roo-code-benchmark .. +``` ## Local Debugging