From 956270f3ab7309f5ec02e1eab8093c367a428cc2 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Thu, 21 Apr 2022 10:14:00 -0400 Subject: [PATCH] ci: Trigger cerbero on user project if a branch with the same name exists there Part-of: --- ci/gitlab/trigger_cerbero_pipeline.py | 29 ++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/ci/gitlab/trigger_cerbero_pipeline.py b/ci/gitlab/trigger_cerbero_pipeline.py index b349146148..1e58604bdc 100755 --- a/ci/gitlab/trigger_cerbero_pipeline.py +++ b/ci/gitlab/trigger_cerbero_pipeline.py @@ -8,7 +8,6 @@ import gitlab CERBERO_PROJECT = 'gstreamer/cerbero' - class Status: FAILED = 'failed' MANUAL = 'manual' @@ -36,13 +35,33 @@ def fprint(msg): if __name__ == "__main__": server = os.environ['CI_SERVER_URL'] gl = gitlab.Gitlab(server, - private_token=os.environ.get('GITLAB_API_TOKEN'), - job_token=os.environ.get('CI_JOB_TOKEN')) + private_token=os.environ.get('GITLAB_API_TOKEN'), + job_token=os.environ.get('CI_JOB_TOKEN')) + + cerbero = None + # We do not want to run on (often out of date) user upstream branch + if os.environ["CI_COMMIT_REF_NAME"] != os.environ['GST_UPSTREAM_BRANCH']: + try: + user_cerbero_name = f'{os.environ["CI_PROJECT_NAMESPACE"]}/cerbero' + cerbero = gl.projects.get(user_cerbero_name) + if os.environ["CI_COMMIT_REF_NAME"] in [b.name for b in cerbero.branches.list()]: + cerbero_branch = os.environ["CI_COMMIT_REF_NAME"] + fprint( + f"-> Triggering on branch {cerbero_branch} in {user_cerbero_name}\n") + else: + # No branch with a same name on the user cerbero repo... trigger + # on upstream project + cerbero = None + except gitlab.exceptions.GitlabGetError: + pass + + if cerbero is None: + cerbero = gl.projects.get(CERBERO_PROJECT) + cerbero_branch = os.environ["GST_UPSTREAM_BRANCH"] - cerbero = gl.projects.get(CERBERO_PROJECT) pipe = cerbero.trigger_pipeline( token=os.environ['CI_JOB_TOKEN'], - ref=os.environ["GST_UPSTREAM_BRANCH"], + ref=cerbero_branch, variables={ "CI_GSTREAMER_URL": os.environ["CI_PROJECT_URL"], "CI_GSTREAMER_REF_NAME": os.environ["CI_COMMIT_REF_NAME"],