blob: abb13b39d4f62096e5d1ceb69ace102b66fc46a1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#!/usr/bin/env -S deno run --allow-env --allow-net --allow-run --allow-read --allow-write
import { PipelineImpl } from "@liz-ci/model";
import {
getRequiredEnv,
getStdout,
invalidExecutionEntriesOf,
loggerWithPrefix,
} from "@liz-ci/utils";
const pipelinePath = getRequiredEnv("pipeline");
const logger = loggerWithPrefix(() =>
`[${new Date().toISOString()}] [run_pipeline.${pipelinePath}]`
);
const run = async () => {
logger.log("starting pipeline execution~ time to work hard!");
const stages = await (Deno.readTextFile(pipelinePath))
.then(PipelineImpl.from)
.then((pipeline) => pipeline.getStages());
for (const stage of stages) {
logger.log("executing stage. do your best little stage :>", stage);
await Promise.all(
stage.parallelJobs.map(async (job, jobIdx) => {
logger.log(`let's do this little job ok!! ${jobIdx}`, job);
const invalidArgs = invalidExecutionEntriesOf(job.arguments);
if (invalidArgs.length) {
logger.error(`oh nooes`, invalidArgs);
throw new Error("invalid job arguments");
}
const result = await getStdout(job.type, { env: job.arguments });
logger.log(jobIdx, "brought something to you! look :D", { result });
}),
);
}
logger.log("all done! everything worked! yay~ (⑅˘꒳˘)");
};
if (import.meta.main) {
try {
await run();
} catch (e) {
logger.error("womp womp D:", e);
throw e;
}
}
|