Decision taks: add artifacts of the repository’s contents

This commit is contained in:
Simon Sapin 2019-11-21 22:08:57 +01:00
parent a11dc7006f
commit 55a8158d17
4 changed files with 30 additions and 1 deletions

View file

@ -27,6 +27,11 @@ tasks:
sha256:7471a998e4462638c8d3e2cf0b4a99c9a5c8ca9f2ec0ae01cc069473b35cde10"
features:
taskclusterProxy: true
artifacts:
public/repo.bundle:
type: file
path: /repo.bundle
expires: {$fromNow: '1 day'}
env:
GIT_URL: ${event.repository.clone_url}
TASK_FOR: ${tasks_for}

View file

@ -10,6 +10,11 @@ from decisionlib import CONFIG, SHARED
def main(task_for):
with decisionlib.make_repo_bundle():
tasks(task_for)
def tasks(task_for):
if CONFIG.git_ref.startswith("refs/heads/"):
branch = CONFIG.git_ref[len("refs/heads/"):]
CONFIG.treeherder_repository_name = "servo-" + (

View file

@ -14,6 +14,7 @@ Project-independent library for Taskcluster decision tasks
"""
import base64
import contextlib
import datetime
import hashlib
import json
@ -28,6 +29,7 @@ import taskcluster
__all__ = [
"CONFIG", "SHARED", "Task", "DockerWorkerTask",
"GenericWorkerTask", "WindowsGenericWorkerTask", "MacOsGenericWorkerTask",
"make_repo_bundle",
]
@ -842,3 +844,19 @@ def deindent(string):
def url_basename(url):
return url.rpartition("/")[-1]
@contextlib.contextmanager
def make_repo_bundle():
subprocess.check_call(["git", "config", "user.name", "Decision task"])
subprocess.check_call(["git", "config", "user.email", "nobody@mozilla.com"])
tree = subprocess.check_output(["git", "show", CONFIG.git_sha, "--pretty=%T", "--no-patch"])
message = "Shallow version of commit " + CONFIG.git_sha
commit = subprocess.check_output(["git", "commit-tree", tree.strip(), "-m", message])
subprocess.check_call(["git", "update-ref", "refs/heads/shallow", commit.strip()])
subprocess.check_call(["git", "show-ref"])
with subprocess.Popen(["git", "bundle", "create", "../repo.bundle", "refs/heads/shallow"]) as p:
yield
exit_code = p.wait()
if exit_code:
sys.exit(exit_code)

View file

@ -39,7 +39,7 @@ class Index:
stringDate = str
slugId = b"<new id>".lower
Queue = fromNow = MagicMock()
sys.exit = Queue = fromNow = MagicMock()
sys.modules["taskcluster"] = sys.modules[__name__]
sys.dont_write_bytecode = True
os.environ.update(**{k: k for k in "TASK_ID TASK_OWNER TASK_SOURCE GIT_URL GIT_SHA".split()})
@ -48,6 +48,7 @@ os.environ["TASKCLUSTER_ROOT_URL"] = "https://community-tc.services.mozilla.com"
os.environ["TASKCLUSTER_PROXY_URL"] = "http://taskcluster"
os.environ["NEW_AMI_WORKER_TYPE"] = "-"
import decision_task
decision_task.decisionlib.subprocess = MagicMock()
print("\n# Push:")
decision_task.main("github-push")