Move last bits of project-specific stuff out of decisionlib

This commit is contained in:
Simon Sapin 2018-09-13 17:21:21 +02:00
parent 5da5cdebea
commit 538107928d
2 changed files with 18 additions and 8 deletions

View file

@ -7,7 +7,9 @@ from decisionlib import DecisionTask
def main(): def main():
decision = DecisionTask( decision = DecisionTask(
project_name="Taskcluster experimenfts for Servo", # Used in task names project_name="Taskcluster experimenfts for Servo", # Used in task names
route_prefix="project.servo.servo-taskcluster-experiments",
docker_image_cache_expiry="1 week", docker_image_cache_expiry="1 week",
worker_type="servo-docker-worker",
) )
build_task = decision.create_task_with_in_tree_dockerfile( build_task = decision.create_task_with_in_tree_dockerfile(

View file

@ -20,8 +20,11 @@ class DecisionTask:
DOCKER_IMAGE_BUILDER_IMAGE = "servobrowser/taskcluster-bootstrap:image-builder@sha256:" \ DOCKER_IMAGE_BUILDER_IMAGE = "servobrowser/taskcluster-bootstrap:image-builder@sha256:" \
"0a7d012ce444d62ffb9e7f06f0c52fedc24b68c2060711b313263367f7272d9d" "0a7d012ce444d62ffb9e7f06f0c52fedc24b68c2060711b313263367f7272d9d"
def __init__(self, project_name, docker_image_cache_expiry="1 year"): def __init__(self, project_name, *, route_prefix,
worker_type="github-worker", docker_image_cache_expiry="1 year"):
self.project_name = project_name self.project_name = project_name
self.route_prefix = route_prefix
self.worker_type = worker_type
self.docker_image_cache_expiry = docker_image_cache_expiry self.docker_image_cache_expiry = docker_image_cache_expiry
# 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
@ -46,7 +49,7 @@ class DecisionTask:
with open(dockerfile, "rb") as f: with open(dockerfile, "rb") as f:
dockerfile = f.read() dockerfile = f.read()
digest = hashlib.sha256(dockerfile).hexdigest() digest = hashlib.sha256(dockerfile).hexdigest()
route = "project.servo.servo-taskcluster-experiments.docker-image." + digest route = "%s.docker-image.%s" % (self.route_prefix, digest)
try: try:
result = self.index_service.findTask(route) result = self.index_service.findTask(route)
@ -98,12 +101,17 @@ class DecisionTask:
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):
# Set in .taskcluster.yml
commit_sha = os.environ["GITHUB_EVENT_COMMIT_SHA"]
clone_url = os.environ["GITHUB_EVENT_CLONE_URL"]
source = os.environ["GITHUB_EVENT_SOURCE"]
owner = os.environ["GITHUB_EVENT_OWNER"]
env = env or {} env = env or {}
if with_repo: if with_repo:
for k in ["GITHUB_EVENT_CLONE_URL", "GITHUB_EVENT_COMMIT_SHA"]: env["GITHUB_EVENT_COMMIT_SHA"] = commit_sha
# Set in .taskcluster.yml env["GITHUB_EVENT_CLONE_URL"] = clone_url
env.setdefault(k, os.environ[k])
command = """ command = """
git clone $GITHUB_EVENT_CLONE_URL repo git clone $GITHUB_EVENT_CLONE_URL repo
@ -119,15 +127,15 @@ class DecisionTask:
"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": self.worker_type,
"created": self.from_now_json(""), "created": self.from_now_json(""),
"deadline": self.from_now_json("1 day"), "deadline": self.from_now_json("1 day"),
"metadata": { "metadata": {
"name": "%s: %s" % (self.project_name, task_name), "name": "%s: %s" % (self.project_name, task_name),
"description": "", "description": "",
"owner": os.environ["GITHUB_EVENT_OWNER"], "owner": owner,
"source": os.environ["GITHUB_EVENT_SOURCE"], "source": source,
}, },
"scopes": scopes or [], "scopes": scopes or [],
"routes": routes or [], "routes": routes or [],