mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Merge create_task_with_in_tree_dockerfile into create_task
This commit is contained in:
parent
8cfeda8806
commit
c9d698fad7
2 changed files with 27 additions and 21 deletions
|
@ -15,7 +15,6 @@ def main():
|
||||||
route_prefix="project.servo.servo",
|
route_prefix="project.servo.servo",
|
||||||
worker_type="servo-docker-worker",
|
worker_type="servo-docker-worker",
|
||||||
)
|
)
|
||||||
create_task = decision.create_task_with_in_tree_dockerfile
|
|
||||||
|
|
||||||
# FIXME: remove this before merging in servo/servo
|
# FIXME: remove this before merging in servo/servo
|
||||||
os.environ["GIT_URL"] = "https://github.com/SimonSapin/servo"
|
os.environ["GIT_URL"] = "https://github.com/SimonSapin/servo"
|
||||||
|
@ -53,7 +52,7 @@ def main():
|
||||||
"cache": build_caches,
|
"cache": build_caches,
|
||||||
}
|
}
|
||||||
|
|
||||||
create_task(
|
decision.create_task(
|
||||||
task_name="Linux x86_64: tidy + dev build + unit tests",
|
task_name="Linux x86_64: tidy + dev build + unit tests",
|
||||||
script="""
|
script="""
|
||||||
./mach test-tidy --no-progress --all
|
./mach test-tidy --no-progress --all
|
||||||
|
@ -68,7 +67,7 @@ def main():
|
||||||
**build_kwargs
|
**build_kwargs
|
||||||
)
|
)
|
||||||
|
|
||||||
release_build_task = create_task(
|
release_build_task = decision.create_task(
|
||||||
task_name="Linux x86_64: release build",
|
task_name="Linux x86_64: release build",
|
||||||
script="""
|
script="""
|
||||||
./mach build --release --with-debug-assertions -p servo
|
./mach build --release --with-debug-assertions -p servo
|
||||||
|
@ -94,7 +93,7 @@ def main():
|
||||||
--location \
|
--location \
|
||||||
| tar -xz
|
| tar -xz
|
||||||
"""
|
"""
|
||||||
create_task(
|
decision.create_task(
|
||||||
script=fetch_build + script,
|
script=fetch_build + script,
|
||||||
env=dict(**env or {}, BUILD_TASK_ID=release_build_task),
|
env=dict(**env or {}, BUILD_TASK_ID=release_build_task),
|
||||||
dependencies=[release_build_task],
|
dependencies=[release_build_task],
|
||||||
|
|
|
@ -46,16 +46,6 @@ class DecisionTask:
|
||||||
def from_now_json(self, offset):
|
def from_now_json(self, offset):
|
||||||
return taskcluster.stringDate(taskcluster.fromNow(offset, dateObj=self.now))
|
return taskcluster.stringDate(taskcluster.fromNow(offset, dateObj=self.now))
|
||||||
|
|
||||||
def create_task_with_in_tree_dockerfile(self, *, dockerfile, **kwargs):
|
|
||||||
image_build_task = self.find_or_build_image(dockerfile)
|
|
||||||
kwargs.setdefault("dependencies", []).append(image_build_task)
|
|
||||||
image = {
|
|
||||||
"type": "task-image",
|
|
||||||
"taskId": image_build_task,
|
|
||||||
"path": "public/" + self.DOCKER_IMAGE_ARTIFACT_FILENAME,
|
|
||||||
}
|
|
||||||
return self.create_task(image=image, **kwargs)
|
|
||||||
|
|
||||||
def find_or_build_image(self, dockerfile):
|
def find_or_build_image(self, dockerfile):
|
||||||
image_build_task = self.built_images.get(dockerfile)
|
image_build_task = self.built_images.get(dockerfile)
|
||||||
if image_build_task is None:
|
if image_build_task is None:
|
||||||
|
@ -89,7 +79,7 @@ class DecisionTask:
|
||||||
("/" + self.DOCKER_IMAGE_ARTIFACT_FILENAME, self.docker_image_cache_expiry),
|
("/" + self.DOCKER_IMAGE_ARTIFACT_FILENAME, self.docker_image_cache_expiry),
|
||||||
],
|
],
|
||||||
max_run_time_minutes=20,
|
max_run_time_minutes=20,
|
||||||
image=self.DOCKER_IMAGE_BUILDER_IMAGE,
|
docker_image=self.DOCKER_IMAGE_BUILDER_IMAGE,
|
||||||
features={
|
features={
|
||||||
"dind": True, # docker-in-docker
|
"dind": True, # docker-in-docker
|
||||||
},
|
},
|
||||||
|
@ -114,10 +104,30 @@ class DecisionTask:
|
||||||
else:
|
else:
|
||||||
return basename
|
return basename
|
||||||
|
|
||||||
def create_task(self, *, task_name, script, image, max_run_time_minutes,
|
def create_task(self, *, task_name, script, max_run_time_minutes,
|
||||||
|
docker_image=None, dockerfile=None, # One of these is required
|
||||||
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):
|
||||||
|
if docker_image and dockerfile:
|
||||||
|
raise TypeError("cannot use both `docker_image` or `dockerfile`")
|
||||||
|
if not docker_image and not dockerfile:
|
||||||
|
raise TypeError("need one of `docker_image` or `dockerfile`")
|
||||||
|
|
||||||
|
# https://docs.taskcluster.net/docs/reference/workers/docker-worker/docs/environment
|
||||||
|
decision_task_id = os.environ["TASK_ID"]
|
||||||
|
|
||||||
|
dependencies = [decision_task_id] + (dependencies or [])
|
||||||
|
|
||||||
|
if dockerfile:
|
||||||
|
image_build_task = self.find_or_build_image(dockerfile)
|
||||||
|
dependencies.append(image_build_task)
|
||||||
|
docker_image = {
|
||||||
|
"type": "task-image",
|
||||||
|
"taskId": image_build_task,
|
||||||
|
"path": "public/" + self.DOCKER_IMAGE_ARTIFACT_FILENAME,
|
||||||
|
}
|
||||||
|
|
||||||
# Set in .taskcluster.yml
|
# Set in .taskcluster.yml
|
||||||
task_owner = os.environ["TASK_OWNER"]
|
task_owner = os.environ["TASK_OWNER"]
|
||||||
task_source = os.environ["TASK_SOURCE"]
|
task_source = os.environ["TASK_SOURCE"]
|
||||||
|
@ -136,12 +146,9 @@ class DecisionTask:
|
||||||
git reset --hard "$GIT_SHA"
|
git reset --hard "$GIT_SHA"
|
||||||
""" + script
|
""" + script
|
||||||
|
|
||||||
# https://docs.taskcluster.net/docs/reference/workers/docker-worker/docs/environment
|
|
||||||
decision_task_id = os.environ["TASK_ID"]
|
|
||||||
|
|
||||||
payload = {
|
payload = {
|
||||||
"taskGroupId": decision_task_id,
|
"taskGroupId": decision_task_id,
|
||||||
"dependencies": [decision_task_id] + (dependencies or []),
|
"dependencies": dependencies or [],
|
||||||
"schedulerId": "taskcluster-github",
|
"schedulerId": "taskcluster-github",
|
||||||
"provisionerId": "aws-provisioner-v1",
|
"provisionerId": "aws-provisioner-v1",
|
||||||
"workerType": self.worker_type,
|
"workerType": self.worker_type,
|
||||||
|
@ -160,7 +167,7 @@ class DecisionTask:
|
||||||
"payload": {
|
"payload": {
|
||||||
"cache": cache or {},
|
"cache": cache or {},
|
||||||
"maxRunTime": max_run_time_minutes * 60,
|
"maxRunTime": max_run_time_minutes * 60,
|
||||||
"image": image,
|
"image": docker_image,
|
||||||
"command": [
|
"command": [
|
||||||
"/bin/bash",
|
"/bin/bash",
|
||||||
"--login",
|
"--login",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue