From: David Heidelberg Date: Wed, 7 Sep 2022 21:32:19 +0000 (+0200) Subject: ci: split ci_run_n_monitor into script and shared parts X-Git-Tag: upstream/22.3.5~3155 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=de08baade77ab6d28987d6b87b7f30c342176717;p=platform%2Fupstream%2Fmesa.git ci: split ci_run_n_monitor into script and shared parts These parts will be shared with the update checksum script. Signed-off-by: David Heidelberg Part-of: --- diff --git a/.gitlab-ci/bin/ci_run_n_monitor.py b/.gitlab-ci/bin/ci_run_n_monitor.py index 606aec8..6bdcf6a 100755 --- a/.gitlab-ci/bin/ci_run_n_monitor.py +++ b/.gitlab-ci/bin/ci_run_n_monitor.py @@ -12,7 +12,6 @@ and show the job(s) logs. """ import argparse -import os import re import sys import time @@ -23,6 +22,7 @@ from typing import Optional import gitlab from colorama import Fore, Style +from gitlab_common import get_gitlab_project, read_token, wait_for_pipeline from gitlab_gql import GitlabGQL, create_job_needs_dag, filter_dag, print_dag REFRESH_WAIT_LOG = 10 @@ -45,25 +45,6 @@ STATUS_COLORS = { COMPLETED_STATUSES = ["success", "failed"] -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 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) - - def print_job_status(job) -> None: """It prints a nice, colored job status with a link to the job.""" if job.status == "canceled": @@ -268,17 +249,6 @@ def parse_args() -> None: return parser.parse_args() -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 find_dependencies(target_job: str, project_path: str, sha: str) -> set[str]: gql_instance = GitlabGQL() dag, _ = create_job_needs_dag( diff --git a/.gitlab-ci/bin/gitlab_common.py b/.gitlab-ci/bin/gitlab_common.py new file mode 100644 index 0000000..85313cc --- /dev/null +++ b/.gitlab-ci/bin/gitlab_common.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 +# Copyright © 2020 - 2022 Collabora Ltd. +# Authors: +# Tomeu Vizoso +# David Heidelberg +# +# 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)