From 02dbbf314b8db4ae45c957c201dfad84d44c4375 Mon Sep 17 00:00:00 2001 From: Julien Cristau <jcristau@mozilla.com> Date: Tue, 15 Nov 2022 11:33:52 +0100 Subject: [PATCH] Fix trigger-nightly task after repository move --- taskcluster/ac_taskgraph/target_tasks.py | 36 +++++++++++++++++++++++- taskcluster/ci/trigger-nightly/kind.yml | 10 +++---- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/taskcluster/ac_taskgraph/target_tasks.py b/taskcluster/ac_taskgraph/target_tasks.py index c20113385f6..94357766aae 100644 --- a/taskcluster/ac_taskgraph/target_tasks.py +++ b/taskcluster/ac_taskgraph/target_tasks.py @@ -3,10 +3,13 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. import os +import re from redo import retry -from taskgraph.target_tasks import _target_task +from mozilla_version.maven import MavenVersion +from taskgraph.target_tasks import _target_task, target_tasks_default from taskgraph.util.taskcluster import find_task_id +from taskgraph.util.vcs import get_repository def index_exists(index_path, reason=""): @@ -56,3 +59,34 @@ def target_tasks_release(full_task_graph, parameters, graph_config): return task.attributes.get("build-type", "") == "release" return [l for l, t in full_task_graph.tasks.items() if filter(t, parameters)] + + +@_target_task("default") +def target_tasks_ac_default(full_task_graph, parameters, graph_config): + def filter(task): + # Trigger the nightly cron hook when the GV major version changes + if task.kind != "trigger-nightly": + return True + repo = get_repository(os.getcwd()) + if get_gv_version(repo, parameters["base_rev"]) != get_gv_version( + repo, parameters["head_rev"] + ): + return True + return False + + return [ + l + for l, t in full_task_graph.tasks.items() + if l in target_tasks_default(full_task_graph, parameters, graph_config) + and filter(t) + ] + + +def get_gv_version(repo, revision): + gecko_kt = repo.run( + "show", f"{revision}:android-components/buildSrc/src/main/java/Gecko.kt" + ) + match = re.search(r'version = "([^"]*)"', gecko_kt, re.MULTILINE) + if not match: + raise Exception(f"Couldn't parse geckoview version on commit {revision}") + return MavenVersion.parse(match.group(1)).major_number diff --git a/taskcluster/ci/trigger-nightly/kind.yml b/taskcluster/ci/trigger-nightly/kind.yml index 6a15b873a4f..9f64930fed8 100644 --- a/taskcluster/ci/trigger-nightly/kind.yml +++ b/taskcluster/ci/trigger-nightly/kind.yml @@ -32,16 +32,16 @@ tasks: command: 'curl --fail --verbose -X POST -d "{}" -H "Content-Type: application/json" ${TASKCLUSTER_PROXY_URL}/api/hooks/v1/hooks/project-releng/cron-task-${HOOK_PROJECT}%2fnightly/trigger' when: files-changed: - - 'buildSrc/src/main/java/Gecko.kt' + - 'android-components/buildSrc/src/main/java/Gecko.kt' scopes: by-level: '3': - - 'hooks:trigger-hook:project-releng/cron-task-mozilla-mobile-android-components/nightly' + - 'hooks:trigger-hook:project-releng/cron-task-mozilla-mobile-firefox-android/nightly' default: - - 'hooks:trigger-hook:project-releng/cron-task-mozilla-releng-staging-android-components/nightly' + - 'hooks:trigger-hook:project-releng/cron-task-mozilla-releng-staging-firefox-android/nightly' worker: env: HOOK_PROJECT: by-level: - '3': 'mozilla-mobile-android-components' - default: 'mozilla-releng-staging-android-components' + '3': 'mozilla-mobile-firefox-android' + default: 'mozilla-releng-staging-firefox-android' -- GitLab