export default function buildRequests({projectId, repoName, requiredImages}) {
const requests = [];
requiredImages.forEach(({branch, commitSha, image, build}) => {
let request = findRequest(requests, {branch, commitSha});
Eif (!request) {
request = newBuildRequest({projectId, repoName, branch, commitSha});
requests.push(request);
}
build.steps.forEach(step => request.steps.push(step));
request.images.push(formatImage(image));
});
return requests;
}
function findRequest(requests, {branch, commitSha}) {
return requests.filter(({source: {repoSource}}) => repoSource.branch === branch || repoSource.commitSha === commitSha)[0] || null;
}
function newBuildRequest({projectId, repoName, branch, commitSha}) {
return {
source: {
repoSource: {
projectId,
repoName,
branch,
commitSha,
}
},
steps: [],
images: [],
};
}
function formatImage({registry, namespace, repository, tag}) {
return `${registry}/${namespace}/${repository}:${tag}`;
}
|