mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Refactor decision task code
This commit is contained in:
parent
85d3ee10b1
commit
3c947b0ba3
1 changed files with 79 additions and 58 deletions
137
decision-task.py
137
decision-task.py
|
@ -5,9 +5,81 @@ import sys
|
||||||
import json
|
import json
|
||||||
import taskcluster
|
import taskcluster
|
||||||
|
|
||||||
decision_task_id = os.environ["TASK_ID"]
|
|
||||||
|
def main():
|
||||||
|
build_task = create_task_with_built_image(
|
||||||
|
"build task",
|
||||||
|
"./build-task.sh",
|
||||||
|
image="servo-x86_64-linux",
|
||||||
|
|
||||||
|
artifacts=[
|
||||||
|
("executable.gz", "/repo/something-rust/something-rust.gz"),
|
||||||
|
],
|
||||||
|
|
||||||
|
# https://docs.taskcluster.net/docs/reference/workers/docker-worker/docs/caches
|
||||||
|
scopes=[
|
||||||
|
"docker-worker:cache:cargo-registry-cache",
|
||||||
|
"docker-worker:cache:cargo-git-cache",
|
||||||
|
],
|
||||||
|
cache={
|
||||||
|
"cargo-registry-cache": "/root/.cargo/registry",
|
||||||
|
"cargo-git-cache": "/root/.cargo/git",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
create_task(
|
||||||
|
"run task",
|
||||||
|
"./run-task.sh",
|
||||||
|
image="buildpack-deps:bionic-scm",
|
||||||
|
dependencies=[build_task],
|
||||||
|
env={"BUILD_TASK_ID": build_task},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# https://hub.docker.com/r/servobrowser/image-builder/
|
||||||
|
# https://github.com/SimonSapin/servo-docker-image-builder-image
|
||||||
|
IMAGE_BUILDER_IMAGE = "servobrowser/image-builder@sha256:" \
|
||||||
|
"f2370c4b28aa537e47c0cacb82cc53272233fa256b6634c0eebc46e2dd019333"
|
||||||
|
|
||||||
|
# https://docs.taskcluster.net/docs/reference/workers/docker-worker/docs/environment
|
||||||
|
DECISION_TASK_ID = os.environ["TASK_ID"]
|
||||||
|
|
||||||
# https://docs.taskcluster.net/docs/reference/workers/docker-worker/docs/features#feature-taskclusterproxy
|
# https://docs.taskcluster.net/docs/reference/workers/docker-worker/docs/features#feature-taskclusterproxy
|
||||||
queue = taskcluster.Queue(options={"baseUrl": "http://taskcluster/queue/v1/"})
|
QUEUE = taskcluster.Queue(options={"baseUrl": "http://taskcluster/queue/v1/"})
|
||||||
|
|
||||||
|
IMAGE_ARTIFACT_FILENAME = "image.tar.lz4"
|
||||||
|
|
||||||
|
|
||||||
|
def create_task_with_built_image(name, command, image, **kwargs):
|
||||||
|
image_build_task = build_image(image)
|
||||||
|
kwargs.setdefault("dependencies", []).append(image_build_task)
|
||||||
|
image = {
|
||||||
|
"type": "task-image",
|
||||||
|
"taskId": image_build_task,
|
||||||
|
"path": "public/" + IMAGE_ARTIFACT_FILENAME,
|
||||||
|
}
|
||||||
|
return create_task(name, command, image, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
def build_image(name):
|
||||||
|
image_build_task = create_task(
|
||||||
|
"docker image build task for image: " + name,
|
||||||
|
"""
|
||||||
|
docker build -t "$IMAGE" "docker/$IMAGE"
|
||||||
|
docker save "$IMAGE" | lz4 > /%s
|
||||||
|
""" % IMAGE_ARTIFACT_FILENAME,
|
||||||
|
env={
|
||||||
|
"IMAGE": name,
|
||||||
|
},
|
||||||
|
artifacts=[
|
||||||
|
(IMAGE_ARTIFACT_FILENAME, "/" + IMAGE_ARTIFACT_FILENAME),
|
||||||
|
],
|
||||||
|
image=IMAGE_BUILDER_IMAGE,
|
||||||
|
features={
|
||||||
|
"dind": True, # docker-in-docker
|
||||||
|
},
|
||||||
|
)
|
||||||
|
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,
|
||||||
|
@ -18,8 +90,8 @@ def create_task(name, command, image, artifacts=None, dependencies=None, env=Non
|
||||||
|
|
||||||
task_id = taskcluster.slugId().decode("utf8")
|
task_id = taskcluster.slugId().decode("utf8")
|
||||||
payload = {
|
payload = {
|
||||||
"taskGroupId": decision_task_id,
|
"taskGroupId": DECISION_TASK_ID,
|
||||||
"dependencies": [decision_task_id] + (dependencies or []),
|
"dependencies": [DECISION_TASK_ID] + (dependencies or []),
|
||||||
"schedulerId": "taskcluster-github",
|
"schedulerId": "taskcluster-github",
|
||||||
"provisionerId": "aws-provisioner-v1",
|
"provisionerId": "aws-provisioner-v1",
|
||||||
"workerType": "servo-docker-worker",
|
"workerType": "servo-docker-worker",
|
||||||
|
@ -61,61 +133,10 @@ def create_task(name, command, image, artifacts=None, dependencies=None, env=Non
|
||||||
"features": features or {},
|
"features": features or {},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
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
|
||||||
|
|
||||||
image_build_task = create_task(
|
|
||||||
"docker image build task",
|
|
||||||
"""
|
|
||||||
docker build -t "$IMAGE" "docker/$IMAGE"
|
|
||||||
docker save "$IMAGE" | lz4 > /image.tar.lz4
|
|
||||||
""",
|
|
||||||
env={
|
|
||||||
"IMAGE": "servo-x86_64-linux",
|
|
||||||
},
|
|
||||||
artifacts=[
|
|
||||||
("image.tar.lz4", "/image.tar.lz4"),
|
|
||||||
],
|
|
||||||
|
|
||||||
# https://hub.docker.com/r/servobrowser/image-builder/
|
if __name__ == "__main__":
|
||||||
# https://github.com/SimonSapin/servo-docker-image-builder-image
|
main()
|
||||||
image="servobrowser/image-builder@sha256:f2370c4b28aa537e47c0cacb82cc53272233fa256b6634c0eebc46e2dd019333",
|
|
||||||
|
|
||||||
features={
|
|
||||||
"dind": True, # docker-in-docker
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
build_task = create_task(
|
|
||||||
"build task",
|
|
||||||
"./build-task.sh",
|
|
||||||
dependencies=[image_build_task],
|
|
||||||
image={
|
|
||||||
"type": "task-image",
|
|
||||||
"taskId": image_build_task,
|
|
||||||
"path": "public/image.tar.lz4",
|
|
||||||
},
|
|
||||||
|
|
||||||
artifacts=[
|
|
||||||
("executable.gz", "/repo/something-rust/something-rust.gz"),
|
|
||||||
],
|
|
||||||
|
|
||||||
# https://docs.taskcluster.net/docs/reference/workers/docker-worker/docs/caches
|
|
||||||
scopes=[
|
|
||||||
"docker-worker:cache:cargo-registry-cache",
|
|
||||||
"docker-worker:cache:cargo-git-cache",
|
|
||||||
],
|
|
||||||
cache={
|
|
||||||
"cargo-registry-cache": "/root/.cargo/registry",
|
|
||||||
"cargo-git-cache": "/root/.cargo/git",
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
create_task(
|
|
||||||
"run task",
|
|
||||||
"./run-task.sh",
|
|
||||||
image="ubuntu:bionic-20180821@sha256:b5309340de7a9a540cf6c0cba3eabdfb9c9bc5153026d37991fd0028180fc725",
|
|
||||||
dependencies=[build_task],
|
|
||||||
env={"BUILD_TASK_ID": build_task},
|
|
||||||
)
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue