mirror of
https://github.com/n8n-io/n8n.git
synced 2026-05-12 16:10:30 +02:00
Some checks are pending
Build: Benchmark Image / build (push) Waiting to run
CI: Master (Build, Test, Lint) / Build for Github Cache (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (22.x) (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (24.14.1) (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (25.x) (push) Waiting to run
CI: Master (Build, Test, Lint) / Lint (push) Waiting to run
CI: Master (Build, Test, Lint) / Performance (push) Waiting to run
CI: Master (Build, Test, Lint) / Notify Slack on failure (push) Blocked by required conditions
Util: Sync API Docs / sync-public-api (push) Waiting to run
Signed-off-by: Oleg Ivaniv <me@olegivaniv.com> Co-authored-by: Albert Alises <albert.alises@gmail.com> Co-authored-by: Jaakko Husso <jaakko@n8n.io> Co-authored-by: Dimitri Lavrenük <20122620+dlavrenuek@users.noreply.github.com> Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> Co-authored-by: Tuukka Kantola <Tuukkaa@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com> Co-authored-by: Raúl Gómez Morales <raul00gm@gmail.com> Co-authored-by: Elias Meire <elias@meire.dev> Co-authored-by: Dimitri Lavrenük <dimitri.lavrenuek@n8n.io> Co-authored-by: Tomi Turtiainen <10324676+tomi@users.noreply.github.com> Co-authored-by: Mutasem Aldmour <mutasem@n8n.io>
31 lines
953 B
TypeScript
31 lines
953 B
TypeScript
import { DockerfileStepsBuilder } from './n8n-sandbox-client';
|
|
import {
|
|
BUILD_MJS,
|
|
N8N_SANDBOX_WORKSPACE_ROOT,
|
|
PACKAGE_JSON,
|
|
TSCONFIG_JSON,
|
|
} from './sandbox-setup';
|
|
|
|
function b64(content: string): string {
|
|
return Buffer.from(content, 'utf-8').toString('base64');
|
|
}
|
|
|
|
const ROOT = N8N_SANDBOX_WORKSPACE_ROOT;
|
|
|
|
export class N8nSandboxImageManager {
|
|
private cachedDockerfile: DockerfileStepsBuilder | null = null;
|
|
|
|
getDockerfile(): DockerfileStepsBuilder {
|
|
if (this.cachedDockerfile) return this.cachedDockerfile;
|
|
|
|
this.cachedDockerfile = new DockerfileStepsBuilder()
|
|
.run(`mkdir -p ${ROOT}/src ${ROOT}/chunks ${ROOT}/node-types`)
|
|
.run(`echo '${b64(PACKAGE_JSON)}' | base64 -d > ${ROOT}/package.json`)
|
|
.run(`echo '${b64(TSCONFIG_JSON)}' | base64 -d > ${ROOT}/tsconfig.json`)
|
|
.run(`echo '${b64(BUILD_MJS)}' | base64 -d > ${ROOT}/build.mjs`)
|
|
.run(`cd ${ROOT} && npm install --ignore-scripts`);
|
|
|
|
return this.cachedDockerfile;
|
|
}
|
|
}
|