coolify/apps/api/src/lib/buildPacks/docker.ts

34 lines
1.1 KiB
TypeScript
Raw Normal View History

2022-02-10 14:47:44 +00:00
import { promises as fs } from 'fs';
2022-07-06 09:02:36 +00:00
import { buildImage } from './common';
2022-02-10 14:47:44 +00:00
2022-07-21 12:43:53 +00:00
export default async function (data) {
2022-12-19 10:51:44 +00:00
let { workdir, buildId, baseDirectory, secrets, pullmergeRequestId, dockerFileLocation } = data;
2022-09-26 20:37:58 +00:00
const file = `${workdir}${baseDirectory}${dockerFileLocation}`;
data.workdir = `${workdir}${baseDirectory}`;
2022-12-19 10:51:44 +00:00
const DockerfileRaw = await fs.readFile(`${file}`, 'utf8');
const Dockerfile: Array<string> = DockerfileRaw.toString().trim().split('\n');
2022-12-07 12:45:56 +00:00
Dockerfile.forEach((line, index) => {
if (line.startsWith('FROM')) {
Dockerfile.splice(index + 1, 0, `LABEL coolify.buildId=${buildId}`);
}
});
2022-09-26 20:37:58 +00:00
if (secrets.length > 0) {
secrets.forEach((secret) => {
if (secret.isBuildSecret) {
if (
(pullmergeRequestId && secret.isPRMRSecret) ||
(!pullmergeRequestId && !secret.isPRMRSecret)
) {
Dockerfile.forEach((line, index) => {
if (line.startsWith('FROM')) {
2022-12-19 10:01:29 +00:00
Dockerfile.splice(index + 1, 0, `ARG ${secret.name}='${secret.value}'`);
2022-09-26 20:37:58 +00:00
}
});
2022-02-10 14:47:44 +00:00
}
2022-09-26 20:37:58 +00:00
}
});
2022-02-10 14:47:44 +00:00
}
2022-12-19 10:51:44 +00:00
await fs.writeFile(`${data.workdir}${dockerFileLocation}`, Dockerfile.join('\n'));
2022-09-26 20:37:58 +00:00
await buildImage(data);
2022-02-10 14:47:44 +00:00
}