|
1 | | -import { FaableApp } from "../../../api/FaableApi"; |
2 | | -import { bundle_docker } from "./bundle_docker"; |
| 1 | +import { FaableApp, Secret } from "../../../api/FaableApi"; |
| 2 | +import { build_docker } from "./build_docker"; |
3 | 3 | import { analyze_package } from "./analyze_package"; |
4 | 4 | import { build_project } from "./build_project"; |
5 | 5 | import { Runtime } from "../runtime-detect/RuntimeStrategy"; |
| 6 | +import * as R from "ramda"; |
| 7 | +import { log } from "../../../log"; |
6 | 8 |
|
7 | 9 | interface BuildNodeOptions { |
8 | 10 | workdir: string; |
9 | 11 | runtime: Runtime; |
| 12 | + env_vars?: Secret[]; |
10 | 13 | } |
11 | 14 |
|
12 | 15 | export const build_node = async (app: FaableApp, options: BuildNodeOptions) => { |
13 | 16 | // log.info(`🚀 Build Toolchain ${app.name} [${app.id}]`); |
14 | | - const { workdir, runtime } = options; |
| 17 | + const { workdir, runtime, env_vars } = options; |
15 | 18 |
|
16 | 19 | if (!runtime.version) { |
17 | 20 | throw new Error("Runtime version not specified for node"); |
18 | 21 | } |
19 | 22 | // Analyze package.json to check if build is needed |
20 | 23 | const { build_script, type } = await analyze_package({ workdir }); |
21 | | - await build_project({ app, build_script }); |
| 24 | + |
| 25 | + // Environment variables |
| 26 | + |
| 27 | + const env = R.fromPairs(env_vars.map((e) => [e.name, e.value])); |
| 28 | + log.info(`Building with env variables ${Object.keys(env).join(",")}`); |
| 29 | + |
| 30 | + // Do build |
| 31 | + await build_project({ app, build_script, env }); |
22 | 32 |
|
23 | 33 | // Bundle project inside a docker image |
24 | | - await bundle_docker({ |
| 34 | + await build_docker({ |
25 | 35 | app, |
26 | 36 | workdir, |
27 | 37 | template_context: { |
|
0 commit comments