This commit is contained in:
Simon Sapin 2018-09-13 16:07:45 +02:00
parent 6a011f0e30
commit e566906bef
2 changed files with 119 additions and 116 deletions

View file

@ -1,10 +1,12 @@
# coding: utf8 # coding: utf8
from decisionlib import * from decisionlib import DecisionTask
def main(): def main():
build_task = create_task_with_in_tree_dockerfile( decision = DecisionTask()
build_task = decision.create_task_with_in_tree_dockerfile(
task_name="build task", task_name="build task",
command="./build-task.sh", command="./build-task.sh",
image="servo-x86_64-linux", image="servo-x86_64-linux",
@ -25,7 +27,7 @@ def main():
}, },
) )
create_task( decision.create_task(
task_name="run task", task_name="run task",
command="./run-task.sh", command="./run-task.sh",
image="buildpack-deps:bionic-scm", image="buildpack-deps:bionic-scm",

View file

@ -33,18 +33,19 @@ DOCKER_IMAGE_ARTIFACT_FILENAME = "image.tar.lz4"
REPO = os.path.dirname(__file__) REPO = os.path.dirname(__file__)
def create_task_with_in_tree_dockerfile(*, image, **kwargs): class DecisionTask:
image_build_task = build_image(image) def create_task_with_in_tree_dockerfile(self, *, image, **kwargs):
image_build_task = self.build_image(image)
kwargs.setdefault("dependencies", []).append(image_build_task) kwargs.setdefault("dependencies", []).append(image_build_task)
image = { image = {
"type": "task-image", "type": "task-image",
"taskId": image_build_task, "taskId": image_build_task,
"path": "public/" + DOCKER_IMAGE_ARTIFACT_FILENAME, "path": "public/" + DOCKER_IMAGE_ARTIFACT_FILENAME,
} }
return create_task(image=image, **kwargs) return self.create_task(image=image, **kwargs)
def build_image(image_name): def build_image(self, image_name):
with open(os.path.join(REPO, image_name + ".dockerfile"), "rb") as f: with open(os.path.join(REPO, image_name + ".dockerfile"), "rb") as f:
dockerfile = f.read() dockerfile = f.read()
digest = hashlib.sha256(dockerfile).hexdigest() digest = hashlib.sha256(dockerfile).hexdigest()
@ -57,7 +58,7 @@ def build_image(image_name):
if e.status_code != 404: if e.status_code != 404:
raise raise
image_build_task = create_task( image_build_task = self.create_task(
task_name="docker image build task for image: " + image_name, task_name="docker image build task for image: " + image_name,
command=""" command="""
echo "$DOCKERFILE" | docker build -t taskcluster-built - echo "$DOCKERFILE" | docker build -t taskcluster-built -
@ -91,7 +92,7 @@ def build_image(image_name):
return image_build_task return image_build_task
def create_task(*, task_name, command, image, max_run_time_minutes, def create_task(self, *, task_name, command, image, max_run_time_minutes,
artifacts=None, dependencies=None, env=None, cache=None, scopes=None, artifacts=None, dependencies=None, env=None, cache=None, scopes=None,
routes=None, extra=None, features=None, routes=None, extra=None, features=None,
with_repo=True): with_repo=True):