gstreamer/ci/gitlab/trigger_cerbero_pipeline.py
Thibault Saunier 37d7e9a22d ci: Wait for cerbero pipeline to finish
So we are sure the pipeline is marked as failed if the cerbero sub pipeline fails

See https://gitlab.com/gitlab-org/gitlab/-/issues/341737 for details

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/946>
2021-09-28 10:58:25 -03:00

59 lines
1.3 KiB
Python
Executable file

#!/usr/bin/python3
import time
import os
import sys
import gitlab
CERBERO_ID = 1340
class Status:
FAILED = 'failed'
MANUAL = 'manual'
CANCELED = 'canceled'
SUCCESS = 'success'
SKIPPED = 'skipped'
CREATED = 'created'
@classmethod
def is_finished(cls, state):
return state in [
cls.FAILED,
cls.MANUAL,
cls.CANCELED,
cls.SUCCESS,
cls.SKIPPED,
]
def fprint(msg):
print(msg, end="")
sys.stdout.flush()
if __name__ == "__main__":
gl = gitlab.Gitlab(
"https://gitlab.freedesktop.org/",
private_token=os.environ.get('GITLAB_API_TOKEN'),
job_token=os.environ.get('CI_JOB_TOKEN')
)
cerbero = gl.projects.get(CERBERO_ID)
pipe = cerbero.trigger_pipeline(
token=os.environ['CI_JOB_TOKEN'],
ref=os.environ["UPSTREAM_BRANCH"],
variables={
"CI_GSTREAMER_URL": os.environ["CI_PROJECT_URL"],
"CI_GSTREAMER_REF_NAME": os.environ["CI_COMMIT_REF_NAME"],
}
)
fprint(f'Cerbero pipeline running at {pipe.web_url} ')
while True:
time.sleep(15)
pipe.refresh()
if Status.is_finished(pipe.status):
fprint(f": {pipe.status}\n")
sys.exit(0 if pipe.status == Status.SUCCESS else 1)
else:
fprint(".")