summaryrefslogtreecommitdiff
path: root/bin/ci/gitlab_common.py
diff options
context:
space:
mode:
Diffstat (limited to 'bin/ci/gitlab_common.py')
-rw-r--r--bin/ci/gitlab_common.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/bin/ci/gitlab_common.py b/bin/ci/gitlab_common.py
new file mode 100644
index 00000000000..85313cc1deb
--- /dev/null
+++ b/bin/ci/gitlab_common.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+# Copyright © 2020 - 2022 Collabora Ltd.
+# Authors:
+# Tomeu Vizoso <tomeu.vizoso@collabora.com>
+# David Heidelberg <david.heidelberg@collabora.com>
+#
+# SPDX-License-Identifier: MIT
+'''Shared functions between the scripts.'''
+
+import os
+import time
+from typing import Optional
+
+
+def get_gitlab_project(glab, name: str):
+ """Finds a specified gitlab project for given user"""
+ glab.auth()
+ username = glab.user.username
+ return glab.projects.get(f"{username}/mesa")
+
+
+def read_token(token_arg: Optional[str]) -> str:
+ """pick token from args or file"""
+ if token_arg:
+ return token_arg
+ return (
+ open(os.path.expanduser("~/.config/gitlab-token"), encoding="utf-8")
+ .readline()
+ .rstrip()
+ )
+
+
+def wait_for_pipeline(project, sha: str):
+ """await until pipeline appears in Gitlab"""
+ print("⏲ for the pipeline to appear..", end="")
+ while True:
+ pipelines = project.pipelines.list(sha=sha)
+ if pipelines:
+ print("", flush=True)
+ return pipelines[0]
+ print("", end=".", flush=True)
+ time.sleep(1)