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
+GITLAB_URL = "https://gitlab.freedesktop.org"
+
REFRESH_WAIT_LOG = 10
REFRESH_WAIT_JOBS = 6
"--rev", metavar="revision", help="repository git revision (default: HEAD)"
)
parser.add_argument(
+ "--pipeline-url",
+ help="URL of the pipeline to use, instead of auto-detecting it.",
+ )
+ parser.add_argument(
"--token",
metavar="token",
help="force GitLab token, otherwise it's read from ~/.config/gitlab-token",
token = read_token(args.token)
- gl = gitlab.Gitlab(url="https://gitlab.freedesktop.org",
+ gl = gitlab.Gitlab(url=GITLAB_URL,
private_token=token,
retry_transient_errors=True)
- cur_project = get_gitlab_project(gl, "mesa")
-
REV: str = args.rev
if not REV:
REV = check_output(['git', 'rev-parse', 'HEAD']).decode('ascii').strip()
print(f"Revision: {REV}")
- pipe = wait_for_pipeline(cur_project, REV)
+
+ if args.pipeline_url:
+ assert args.pipeline_url.startswith(GITLAB_URL)
+ url_path = args.pipeline_url[len(GITLAB_URL):]
+ url_path_components = url_path.split("/")
+ project_name = "/".join(url_path_components[1:3])
+ assert url_path_components[3] == "-"
+ assert url_path_components[4] == "pipelines"
+ pipeline_id = int(url_path_components[5])
+ cur_project = gl.projects.get(project_name)
+ pipe = cur_project.pipelines.get(pipeline_id)
+ else:
+ cur_project = get_gitlab_project(gl, "mesa")
+ pipe = wait_for_pipeline(cur_project, REV)
print(f"Pipeline: {pipe.web_url}")
+
deps = set()
if args.target:
print("🞋 job: " + Fore.BLUE + args.target + Style.RESET_ALL)