No need to clone the repo in image builder tasks

This commit is contained in:
Simon Sapin 2018-09-12 20:02:08 +02:00
parent 84fc70eecf
commit d7ab25608f

View file

@ -39,7 +39,7 @@ def main():
# https://github.com/servo/taskcluster-bootstrap-docker-images#image-builder # https://github.com/servo/taskcluster-bootstrap-docker-images#image-builder
IMAGE_BUILDER_IMAGE = "servobrowser/taskcluster-bootstrap:image-builder@sha256:" \ IMAGE_BUILDER_IMAGE = "servobrowser/taskcluster-bootstrap:image-builder@sha256:" \
"5ccb6e43c35de15924ebd3472433e8b3b352973f8dfe7c4c43c757ea60461bce" "0a7d012ce444d62ffb9e7f06f0c52fedc24b68c2060711b313263367f7272d9d"
# https://docs.taskcluster.net/docs/reference/workers/docker-worker/docs/environment # https://docs.taskcluster.net/docs/reference/workers/docker-worker/docs/environment
DECISION_TASK_ID = os.environ["TASK_ID"] DECISION_TASK_ID = os.environ["TASK_ID"]
@ -84,17 +84,25 @@ def build_image(name):
features={ features={
"dind": True, # docker-in-docker "dind": True, # docker-in-docker
}, },
with_repo=False,
) )
return image_build_task return image_build_task
def create_task(name, command, image, artifacts=None, dependencies=None, env=None, cache=None, def create_task(name, command, image, artifacts=None, dependencies=None, env=None, cache=None,
scopes=None, features=None): scopes=None, features=None, with_repo=True):
env = env or {} env = env or {}
for k in ["GITHUB_EVENT_CLONE_URL", "GITHUB_EVENT_COMMIT_SHA"]:
env.setdefault(k, os.environ[k])
task_id = taskcluster.slugId().decode("utf8") if with_repo:
for k in ["GITHUB_EVENT_CLONE_URL", "GITHUB_EVENT_COMMIT_SHA"]:
env.setdefault(k, os.environ[k])
command = """
git clone $GITHUB_EVENT_CLONE_URL repo
cd repo
git checkout $GITHUB_EVENT_COMMIT_SHA
""" + command
payload = { payload = {
"taskGroupId": DECISION_TASK_ID, "taskGroupId": DECISION_TASK_ID,
"dependencies": [DECISION_TASK_ID] + (dependencies or []), "dependencies": [DECISION_TASK_ID] + (dependencies or []),
@ -121,14 +129,7 @@ def create_task(name, command, image, artifacts=None, dependencies=None, env=Non
"-x", "-x",
"-e", "-e",
"-c", "-c",
deindent( deindent(command)
"""
git clone $GITHUB_EVENT_CLONE_URL repo
cd repo
git checkout $GITHUB_EVENT_COMMIT_SHA
"""
+ command
)
], ],
"env": env, "env": env,
"artifacts": { "artifacts": {
@ -142,6 +143,8 @@ def create_task(name, command, image, artifacts=None, dependencies=None, env=Non
"features": features or {}, "features": features or {},
}, },
} }
task_id = taskcluster.slugId().decode("utf8")
QUEUE.createTask(task_id, payload) QUEUE.createTask(task_id, payload)
print("Scheduled %s: %s" % (name, task_id)) print("Scheduled %s: %s" % (name, task_id))
return task_id return task_id