51 lines
1.2 KiB
TypeScript
Raw Normal View History

2022-02-10 15:47:44 +01:00
import { buildImage } from '$lib/docker';
import { promises as fs } from 'fs';
export default async function ({
applicationId,
debug,
tag,
workdir,
docker,
buildId,
baseDirectory,
secrets,
pullmergeRequestId,
dockerFileLocation
2022-02-10 15:47:44 +01:00
}) {
try {
const file = `${workdir}${dockerFileLocation}`;
let dockerFileOut = `${workdir}`;
2022-02-10 15:47:44 +01:00
if (baseDirectory) {
dockerFileOut = `${workdir}${baseDirectory}`;
workdir = `${workdir}${baseDirectory}`;
2022-02-10 15:47:44 +01:00
}
const Dockerfile: Array<string> = (await fs.readFile(`${file}`, 'utf8'))
.toString()
.trim()
.split('\n');
if (secrets.length > 0) {
secrets.forEach((secret) => {
if (secret.isBuildSecret) {
if (
(pullmergeRequestId && secret.isPRMRSecret) ||
(!pullmergeRequestId && !secret.isPRMRSecret)
) {
Dockerfile.unshift(`ARG ${secret.name}=${secret.value}`);
Dockerfile.forEach((line, index) => {
if (line.startsWith('FROM')) {
Dockerfile.splice(index + 1, 0, `ARG ${secret.name}`);
}
});
}
2022-02-10 15:47:44 +01:00
}
});
}
await fs.writeFile(`${dockerFileOut}${dockerFileLocation}`, Dockerfile.join('\n'));
await buildImage({ applicationId, tag, workdir, docker, buildId, debug, dockerFileLocation });
2022-02-10 15:47:44 +01:00
} catch (error) {
throw error;
}
}