62 lines
1.9 KiB
JavaScript
62 lines
1.9 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
import * as queue from "./queue";
|
|
import context_hash from "./context_hash";
|
|
import taskcluster from "taskcluster-client";
|
|
|
|
async function taskHasImageArtifact(taskId) {
|
|
let queue = new taskcluster.Queue(taskcluster.fromEnvVars());
|
|
let {artifacts} = await queue.listLatestArtifacts(taskId);
|
|
return artifacts.some(artifact => artifact.name == "public/image.tar");
|
|
}
|
|
|
|
async function findTaskWithImageArtifact(ns) {
|
|
let index = new taskcluster.Index(taskcluster.fromEnvVars());
|
|
let {taskId} = await index.findTask(ns);
|
|
let has_image = await taskHasImageArtifact(taskId);
|
|
return has_image ? taskId : null;
|
|
}
|
|
|
|
export async function findTask({name, path}) {
|
|
let hash = await context_hash(path);
|
|
let ns = `docker.images.v1.${process.env.TC_PROJECT}.${name}.hash.${hash}`;
|
|
return findTaskWithImageArtifact(ns).catch(() => null);
|
|
}
|
|
|
|
export async function buildTask({name, path}) {
|
|
let hash = await context_hash(path);
|
|
let ns = `docker.images.v1.${process.env.TC_PROJECT}.${name}.hash.${hash}`;
|
|
|
|
return {
|
|
name: `Image Builder (${name})`,
|
|
image: "nssdev/image_builder:0.1.5",
|
|
routes: ["index." + ns],
|
|
env: {
|
|
NSS_HEAD_REPOSITORY: process.env.NSS_HEAD_REPOSITORY,
|
|
NSS_HEAD_REVISION: process.env.NSS_HEAD_REVISION,
|
|
PROJECT: process.env.TC_PROJECT,
|
|
CONTEXT_PATH: path,
|
|
HASH: hash
|
|
},
|
|
artifacts: {
|
|
"public/image.tar": {
|
|
type: "file",
|
|
expires: 24 * 90,
|
|
path: "/artifacts/image.tar"
|
|
}
|
|
},
|
|
command: [
|
|
"/bin/bash",
|
|
"-c",
|
|
"bin/checkout.sh && nss/automation/taskcluster/scripts/build_image.sh"
|
|
],
|
|
platform: "nss-decision",
|
|
features: ["dind"],
|
|
maxRunTime: 7200,
|
|
kind: "build",
|
|
symbol: "I"
|
|
};
|
|
}
|