Skip to content

Commit 19e8b04

Browse files
committed
More progress
1 parent 580479a commit 19e8b04

File tree

5 files changed

+180
-47
lines changed

5 files changed

+180
-47
lines changed

.dockerignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
# Build artifacts
1+
# git
2+
.git
3+
4+
# build artifacts
25
bin/
36
dist/
47
**/dist/

apps/web-evals/src/lib/server/runs.ts

Lines changed: 53 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
/* eslint-disable @typescript-eslint/no-unused-vars */
2+
13
"use server"
24

35
import { spawn } from "child_process"
@@ -49,24 +51,60 @@ export async function createRun({ suite, exercises = [], systemPrompt, ...values
4951

5052
revalidatePath("/runs")
5153

52-
try {
53-
const logFile = fs.openSync(`/tmp/roo-code-evals-${run.id}.log`, "a")
54+
// try {
55+
// const logFile = fs.openSync(`/tmp/roo-code-evals-${run.id}.log`, "a")
5456

55-
const env: NodeJS.ProcessEnv = systemPrompt
56-
? { ...process.env, FOOTGUN_SYSTEM_PROMPT: systemPrompt }
57-
: process.env
57+
// const env: NodeJS.ProcessEnv = systemPrompt
58+
// ? { ...process.env, FOOTGUN_SYSTEM_PROMPT: systemPrompt }
59+
// : process.env
5860

59-
const childProcess = spawn("pnpm", ["--filter", "@roo-code/evals", "cli", run.id.toString()], {
60-
detached: true,
61-
stdio: ["ignore", logFile, logFile],
62-
env,
63-
})
61+
// const childProcess = spawn("pnpm", ["--filter", "@roo-code/evals", "cli", run.id.toString()], {
62+
// detached: true,
63+
// stdio: ["ignore", logFile, logFile],
64+
// env,
65+
// })
6466

65-
childProcess.unref()
66-
await _updateRun(run.id, { pid: childProcess.pid })
67-
} catch (error) {
68-
console.error(error)
69-
}
67+
// childProcess.unref()
68+
// await _updateRun(run.id, { pid: childProcess.pid })
69+
// } catch (error) {
70+
// console.error(error)
71+
// }
72+
73+
// try {
74+
// const logFile = `/tmp/roo-code-evals-${run.id}.log`
75+
76+
// const envVars = systemPrompt ? { ...process.env, FOOTGUN_SYSTEM_PROMPT: systemPrompt } : process.env
77+
78+
// // Requires a docker socket mounted and host container running.
79+
// const runOnHost = async () => {
80+
// // Create and start a new runner container connected to the compose network
81+
// const command = `docker run --rm --network evals_default evals-runner sh -c "pnpm --filter @roo-code/evals cli ${run.id}"`
82+
83+
// const childProcess = spawn("sh", ["-c", command], {
84+
// detached: true,
85+
// stdio: ["ignore", "pipe", "pipe"],
86+
// })
87+
88+
// // Redirect output to log file
89+
// const logStream = fs.createWriteStream(logFile, { flags: "a" })
90+
91+
// if (childProcess.stdout) {
92+
// childProcess.stdout.pipe(logStream)
93+
// }
94+
95+
// if (childProcess.stderr) {
96+
// childProcess.stderr.pipe(logStream)
97+
// }
98+
99+
// return childProcess
100+
// }
101+
102+
// const childProcess = await runOnHost()
103+
// childProcess.unref()
104+
// await _updateRun(run.id, { pid: childProcess.pid })
105+
// } catch (error) {
106+
// console.error(error)
107+
// }
70108

71109
return run
72110
}

packages/evals/Dockerfile renamed to packages/evals/Dockerfile.runner

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
# docker build -f packages/evals/Dockerfile -t roo-code-evals .
2-
# docker run -it roo-code-evals
1+
# docker build -f packages/evals/Dockerfile.runner -t evals-runner .
2+
# docker run -it evals-runner
33

44
FROM node:20-slim AS base
55

@@ -62,7 +62,6 @@ WORKDIR /home/vscode/repo
6262
# Install npm packages
6363
RUN mkdir -p \
6464
scripts \
65-
apps/web-evals \
6665
packages/build \
6766
packages/cloud \
6867
packages/config-eslint \
@@ -78,7 +77,6 @@ COPY --chown=vscode:vscode ./package.json ./
7877
COPY --chown=vscode:vscode ./pnpm-lock.yaml ./
7978
COPY --chown=vscode:vscode ./pnpm-workspace.yaml ./
8079
COPY --chown=vscode:vscode ./scripts/bootstrap.mjs ./scripts/
81-
COPY --chown=vscode:vscode ./apps/web-evals/package.json ./apps/web-evals/
8280
COPY --chown=vscode:vscode ./packages/build/package.json ./packages/build/
8381
COPY --chown=vscode:vscode ./packages/cloud/package.json ./packages/cloud/
8482
COPY --chown=vscode:vscode ./packages/config-eslint/package.json ./packages/config-eslint/
@@ -93,17 +91,11 @@ RUN pnpm install
9391

9492
# Build the extension
9593
COPY --chown=vscode:vscode . ./
96-
RUN pnpm vsix -- --out ../bin/roo-code.vsix
94+
RUN pnpm build -- --out ../bin/roo-code.vsix
9795

9896
# Copy & install extension
99-
RUN code --debug --install-extension ./roo-code.vsix
97+
RUN code --debug --install-extension bin/roo-code.vsix
10098

101-
# Copy env variables
102-
# COPY --chown=vscode:vscode packages/evals/.env ./
99+
ENV DATABASE_URL=postgresql://postgres:password@db:5432/evals_development
103100

104-
# Push database schema
105-
# RUN pnpm --filter @roo-code/evals db:push --force
106-
107-
# EXPOSE 3000
108-
# CMD ["pnpm", "web"]
109101
CMD ["bash"]

packages/evals/Dockerfile.web

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# docker build -f packages/evals/Dockerfile.web -t evals-web .
2+
# docker run -it evals-web
3+
4+
FROM node:20-slim AS base
5+
6+
# Install pnpm
7+
ENV PNPM_HOME="/pnpm"
8+
ENV PATH="$PNPM_HOME:$PATH"
9+
RUN corepack enable
10+
RUN npm install -g npm@latest
11+
RUN npm install -g npm-run-all
12+
13+
# Install system packages
14+
RUN apt update && apt install -y sudo curl git vim jq
15+
16+
# Install Docker CLI
17+
RUN apt install -y apt-transport-https ca-certificates gnupg lsb-release
18+
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
19+
RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
20+
RUN apt update && apt install -y docker-ce-cli
21+
22+
# Create a `vscode` user and add to docker group
23+
RUN useradd -m vscode -s /bin/bash && \
24+
echo "vscode ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/vscode && \
25+
chmod 0440 /etc/sudoers.d/vscode
26+
27+
WORKDIR /home/vscode
28+
USER vscode
29+
30+
# Copy evals
31+
RUN git clone https://github.com/RooCodeInc/Roo-Code-Evals.git evals
32+
33+
WORKDIR /home/vscode/repo
34+
35+
# Install npm packages
36+
RUN mkdir -p \
37+
scripts \
38+
apps/web-evals \
39+
packages/build \
40+
packages/cloud \
41+
packages/config-eslint \
42+
packages/config-typescript \
43+
packages/evals \
44+
packages/ipc \
45+
packages/telemetry \
46+
packages/types \
47+
src \
48+
webview-ui
49+
50+
COPY --chown=vscode:vscode ./package.json ./
51+
COPY --chown=vscode:vscode ./pnpm-lock.yaml ./
52+
COPY --chown=vscode:vscode ./pnpm-workspace.yaml ./
53+
COPY --chown=vscode:vscode ./scripts/bootstrap.mjs ./scripts/
54+
COPY --chown=vscode:vscode ./apps/web-evals/package.json ./apps/web-evals/
55+
COPY --chown=vscode:vscode ./packages/build/package.json ./packages/build/
56+
COPY --chown=vscode:vscode ./packages/cloud/package.json ./packages/cloud/
57+
COPY --chown=vscode:vscode ./packages/config-eslint/package.json ./packages/config-eslint/
58+
COPY --chown=vscode:vscode ./packages/config-typescript/package.json ./packages/config-typescript/
59+
COPY --chown=vscode:vscode ./packages/evals/package.json ./packages/evals/
60+
COPY --chown=vscode:vscode ./packages/ipc/package.json ./packages/ipc/
61+
COPY --chown=vscode:vscode ./packages/telemetry/package.json ./packages/telemetry/
62+
COPY --chown=vscode:vscode ./packages/types/package.json ./packages/types/
63+
COPY --chown=vscode:vscode ./src/package.json ./src/
64+
COPY --chown=vscode:vscode ./webview-ui/package.json ./webview-ui/
65+
RUN pnpm install
66+
67+
COPY --chown=vscode:vscode . ./
68+
69+
ENV DATABASE_URL=postgresql://postgres:password@db:5432/evals_development
70+
71+
EXPOSE 3000
72+
CMD ["pnpm", "--filter", "@roo-code/web-evals", "dev"]

packages/evals/docker-compose.yml

Lines changed: 46 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,48 @@
1-
# docker compose up --build --no-start
1+
# docker compose build web runner
2+
3+
# docker compose up db web
4+
# docker compose up runner
5+
# docker compose up runner --no-start
6+
# docker run -it --rm --network evals_default evals-runner bash
7+
# docker run --rm --network evals_default evals-runner sh -c "pnpm --filter @roo-code/evals cli 3"
28

39
services:
4-
postgres:
5-
container_name: postgres-evals
6-
image: postgres:15.4
7-
ports:
8-
- 5432:5432
9-
volumes:
10-
- ./.docker/postgres:/var/lib/postgresql/data
11-
- ./.docker/scripts/postgres:/docker-entrypoint-initdb.d
12-
environment:
13-
- POSTGRES_USER=postgres
14-
- POSTGRES_PASSWORD=password
15-
- POSTGRES_DATABASES=evals_development,evals_test
16-
runner:
17-
container_name: runner-evals
18-
build:
19-
context: ../../
20-
dockerfile: packages/evals/Dockerfile
10+
db:
11+
container_name: evals-db
12+
image: postgres:15.4
13+
ports:
14+
- 5432:5432
15+
volumes:
16+
- ./.docker/postgres:/var/lib/postgresql/data
17+
- ./.docker/scripts/postgres:/docker-entrypoint-initdb.d
18+
environment:
19+
- POSTGRES_USER=postgres
20+
- POSTGRES_PASSWORD=password
21+
- POSTGRES_DATABASES=evals_development,evals_test
22+
profiles:
23+
- db
24+
25+
web:
26+
container_name: evals-web
27+
build:
28+
context: ../../
29+
dockerfile: packages/evals/Dockerfile.web
30+
ports:
31+
- "3000:3000"
32+
environment:
33+
- HOST_EXECUTION_METHOD=docker
34+
volumes:
35+
- /var/run/docker.sock:/var/run/docker.sock
36+
user: "0:0" # Run as root to access docker socket.
37+
profiles:
38+
- web
39+
40+
runner:
41+
container_name: evals-runner
42+
build:
43+
context: ../../
44+
dockerfile: packages/evals/Dockerfile.runner
45+
stdin_open: true
46+
tty: true
47+
profiles:
48+
- runner

0 commit comments

Comments
 (0)