summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml14
-rw-r--r--.indentignore1
-rwxr-xr-xci/gitlab/trigger_cerbero_pipeline.py59
3 files changed, 68 insertions, 6 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d47f619a44..a4a090c75a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -891,15 +891,17 @@ cerbero trigger:
stage: build
image: $FEDORA_IMAGE
script:
- - curl --request POST
- --form token=${CI_JOB_TOKEN}
- --form ref=main
- --form "variables[CI_GSTREAMER_URL]=$CI_PROJECT_URL"
- --form "variables[CI_GSTREAMER_REF_NAME]=$CI_COMMIT_REF_NAME"
- https://gitlab.freedesktop.org/api/v4/projects/1340/trigger/pipeline
+ - python3 -m pip install --user python-gitlab
+ - ci/gitlab/trigger_cerbero_pipeline.py
+
+ variables:
+ # Use GST_UPSTREAM_BRANCH
+ UPSTREAM_BRANCH: 'main'
+
rules:
- changes:
- .gitlab-ci.yml
+ - ci/gitlab/tigger_cerbero_pipeline.py
- subprojects/gst-devtools/**/*
- subprojects/gst-editing-services/**/*
- subprojects/gst-libav/**/*
diff --git a/.indentignore b/.indentignore
index 11ffdb987f..cbbefa0427 100644
--- a/.indentignore
+++ b/.indentignore
@@ -3,3 +3,4 @@ subprojects/gstreamer-rs/
subprojects/gstreamer-rs-sys/
subprojects/gst-plugins-rs/
subprojects/gstreamer-sharp/
+subprojects/gst-integration-testsuites/medias
diff --git a/ci/gitlab/trigger_cerbero_pipeline.py b/ci/gitlab/trigger_cerbero_pipeline.py
new file mode 100755
index 0000000000..5e89135da4
--- /dev/null
+++ b/ci/gitlab/trigger_cerbero_pipeline.py
@@ -0,0 +1,59 @@
+#!/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(".")
+