2020-10-24 17:56:22 +00:00
include :
2022-09-22 12:31:10 +00:00
- project : 'freedesktop/ci-templates'
2024-01-04 12:35:45 +00:00
ref : "801093be0b88f23c8dbabe9cfce7134548f7ccdc"
2022-09-22 12:31:10 +00:00
file : '/templates/fedora.yml'
- project : 'freedesktop/ci-templates'
2024-01-04 12:35:45 +00:00
ref : "801093be0b88f23c8dbabe9cfce7134548f7ccdc"
2022-09-22 12:31:10 +00:00
file : '/templates/debian.yml'
2022-09-22 12:22:42 +00:00
###
# IMPORTANT
# These are the version tags for the docker images the CI runs against.
# If you are hacking on them or need a them to rebuild, you need to change
# the appropriate version string in this file which will cause a rebuild.
###
- local : '.gitlab-image-tags.yml'
2020-10-24 17:56:22 +00:00
stages :
- 'preparation'
- 'build'
- 'test'
# Use the resulting binaries
- 'integrate'
variables :
2021-11-30 14:29:18 +00:00
GIT_DEPTH : 1
2020-10-24 17:56:22 +00:00
# Branch to track for modules that have no ref specified in the manifest
2021-09-27 06:41:10 +00:00
GST_UPSTREAM_BRANCH : 'main'
2020-10-24 17:56:22 +00:00
2022-09-22 19:38:49 +00:00
FDO_UPSTREAM_REPO : 'gstreamer/gstreamer'
2022-12-25 10:08:22 +00:00
MESON_COMMIT :
description : "Overwrite the meson version installed on the CI images with the specified meson commit"
value : ""
2022-09-22 19:38:49 +00:00
FEDORA_AMD64_SUFFIX : 'amd64/fedora'
2024-04-10 15:36:16 +00:00
DEBIAN_AMD64_SUFFIX : 'amd64/debian'
2022-09-22 19:38:49 +00:00
INDENT_AMD64_SUFFIX : 'amd64/gst-indent'
2023-02-16 03:30:15 +00:00
COMMITLINT_AMD64_SUFFIX : 'amd64/commitlint'
2022-09-22 19:38:49 +00:00
WINDOWS_AMD64_SUFFIX : 'amd64/windows'
WINDOWS_IMAGE : "$CI_REGISTRY_IMAGE/$WINDOWS_AMD64_SUFFIX:$WINDOWS_TAG-$GST_UPSTREAM_BRANCH"
2022-10-24 18:06:14 +00:00
WINDOWS_UPSTREAM_IMAGE : "$CI_REGISTRY/$FDO_UPSTREAM_REPO/$WINDOWS_AMD64_SUFFIX:$WINDOWS_TAG-$GST_UPSTREAM_BRANCH"
2022-09-22 19:38:49 +00:00
2023-07-07 03:19:14 +00:00
DEFAULT_MESON_ARGS : >-
2020-10-24 17:56:22 +00:00
-Dlibnice:tests=disabled
-Dlibnice:examples=disabled
2023-05-18 12:48:03 +00:00
-Dlibnice:gupnp=disabled
2020-10-24 17:56:22 +00:00
-Dopenh264:tests=disabled
2024-03-12 22:48:11 +00:00
-Dgst-plugins-base:opus=enabled
2024-02-23 06:15:50 +00:00
-Dgst-plugins-good:soup-lookup-dep=true
2024-03-12 22:48:11 +00:00
-Dgst-plugins-good:vpx=enabled
2020-10-24 17:56:22 +00:00
-Dpygobject:tests=false
-Dpython=enabled
-Dlibav=enabled
-Dugly=enabled
-Dbad=enabled
-Ddevtools=enabled
-Dges=enabled
-Drtsp_server=enabled
-Dvaapi=enabled
-Dsharp=disabled
2023-04-03 15:36:37 +00:00
-Drs=disabled
2021-09-18 23:55:34 +00:00
-Dgpl=enabled
2022-04-12 16:17:11 +00:00
-Dintrospection=enabled
2024-02-29 11:31:47 +00:00
--force-fallback-for=soundtouch
2020-10-24 17:56:22 +00:00
2023-07-07 03:19:14 +00:00
SIMPLE_BUILD : >-
2023-03-27 13:34:35 +00:00
${DEFAULT_MESON_ARGS}
-Dsharp=enabled
2024-08-13 23:13:46 +00:00
-Dgstreamer-sharp:werror=false
2023-03-27 13:34:35 +00:00
-Ddoc=disabled
2020-10-24 17:56:22 +00:00
workflow :
2021-09-29 12:15:03 +00:00
# https://docs.gitlab.com/ee/ci/yaml/index.html#switch-between-branch-pipelines-and-merge-request-pipelines
2020-10-24 17:56:22 +00:00
rules :
2023-11-02 01:10:55 +00:00
- if : $CI_PIPELINE_SOURCE == "schedule"
variables :
GIT_FETCH_EXTRA_FLAGS : '--no-tags'
2021-09-29 12:15:03 +00:00
- if : '$CI_PIPELINE_SOURCE == "merge_request_event"'
2021-11-30 14:45:07 +00:00
variables :
GIT_FETCH_EXTRA_FLAGS : '--no-tags'
2021-09-29 12:15:03 +00:00
- if : $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"
when : never
2021-11-30 14:58:59 +00:00
- if : '$CI_COMMIT_TAG'
2021-09-29 12:15:03 +00:00
- if : '$CI_COMMIT_BRANCH'
2021-11-30 14:45:07 +00:00
variables :
GIT_FETCH_EXTRA_FLAGS : '--no-tags'
2020-10-24 17:56:22 +00:00
#
# Global CI policy
#
# This can be used to configure global behaviour our our jobs.
#
default :
retry :
max : 2
when :
- 'runner_system_failure'
- 'stuck_or_timeout_failure'
- 'scheduler_failure'
- 'api_failure'
interruptible : true
2021-10-05 13:27:50 +00:00
# This is an empty job that is used to trigger the pipeline.
trigger :
image : alpine:latest
2022-10-24 18:38:13 +00:00
stage : 'preparation'
2021-11-02 20:09:52 +00:00
variables :
GIT_STRATEGY : none
2023-05-24 10:02:55 +00:00
tags : [ 'placeholder-job' ]
2021-10-05 13:27:50 +00:00
script :
- echo "Trigger job done, now running the pipeline."
rules :
2023-11-02 01:10:55 +00:00
# If this pipeline is triggered by a schedule, run automatically
- if : $CI_PIPELINE_SOURCE == "schedule"
2021-10-05 13:27:50 +00:00
# If the MR is assigned to the Merge bot, trigger the pipeline automatically
- if : '$CI_MERGE_REQUEST_ASSIGNEES == "gstreamer-merge-bot"'
2022-10-07 09:52:36 +00:00
# Require explicit action to trigger tests post merge, but we want to
# automatically trigger the integratation stage
- if : '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == $GST_UPSTREAM_BRANCH && $CI_JOB_STAGE != "integrate"'
2022-03-29 17:57:21 +00:00
when : 'manual'
2021-10-05 13:27:50 +00:00
# When the assignee isn't the merge bot, require an explicit action to trigger the pipeline
# to avoid wasting CI resources
- if : '$CI_MERGE_REQUEST_ASSIGNEES != "gstreamer-merge-bot"'
when : 'manual'
allow_failure : false
2021-09-27 06:41:10 +00:00
.fedora image :
2020-10-24 17:56:22 +00:00
variables :
2024-04-10 15:36:16 +00:00
CCACHE_DIR : '/cache/gstreamer/gstreamer/ccache/'
2023-09-01 18:38:14 +00:00
FDO_BASE_IMAGE : 'registry.fedoraproject.org/fedora-toolbox:34'
2020-07-10 09:16:35 +00:00
FDO_DISTRIBUTION_VERSION : '34'
2021-09-27 06:41:10 +00:00
FDO_REPO_SUFFIX : "$FEDORA_AMD64_SUFFIX"
FDO_DISTRIBUTION_TAG : "$FEDORA_TAG-$GST_UPSTREAM_BRANCH"
2021-12-02 22:57:09 +00:00
FDO_DISTRIBUTION_EXEC : 'GIT_BRANCH=$CI_COMMIT_REF_NAME GIT_URL=$CI_REPOSITORY_URL bash ci/docker/fedora/prepare.sh'
2020-10-24 17:56:22 +00:00
fedora amd64 docker :
2021-09-27 06:41:10 +00:00
extends :
- '.fedora image'
- '.fdo.container-build@fedora'
2022-10-24 18:38:13 +00:00
stage : 'preparation'
2022-10-24 18:58:52 +00:00
needs : [ ]
2024-04-15 13:11:26 +00:00
# Note: assumption is that placeholder jobs run on a packet runner
# (which has faster network connectivity to the registry).
tags : [ 'placeholder-job' ]
2020-10-24 17:56:22 +00:00
2024-04-10 15:36:16 +00:00
.debian image :
variables :
CCACHE_DIR : '/cache/gstreamer/gstreamer/ccache_debian/'
FDO_BASE_IMAGE : "quay.io/toolbx-images/debian-toolbox:12"
FDO_DISTRIBUTION_VERSION : '12'
FDO_REPO_SUFFIX : "$DEBIAN_AMD64_SUFFIX"
FDO_DISTRIBUTION_TAG : "$DEBIAN_TAG-$GST_UPSTREAM_BRANCH"
FDO_DISTRIBUTION_EXEC : 'GIT_BRANCH=$CI_COMMIT_REF_NAME GIT_URL=$CI_REPOSITORY_URL bash ci/docker/debian/prepare.sh'
debian amd64 docker :
extends :
- '.debian image'
- '.fdo.container-build@debian'
stage : 'preparation'
needs : [ ]
# Note: assumption is that placeholder jobs run on a packet runner
# (which has faster network connectivity to the registry).
tags : [ 'placeholder-job' ]
2021-09-27 06:41:10 +00:00
.gst-indent image :
2023-05-24 10:02:55 +00:00
tags : [ 'placeholder-job' ]
2021-09-27 06:41:10 +00:00
variables :
2023-03-15 19:01:47 +00:00
FDO_DISTRIBUTION_VERSION : 'bookworm'
2021-09-27 06:41:10 +00:00
FDO_REPO_SUFFIX : "$INDENT_AMD64_SUFFIX"
FDO_DISTRIBUTION_TAG : "$INDENT_TAG-$GST_UPSTREAM_BRANCH"
2023-08-24 10:52:29 +00:00
FDO_DISTRIBUTION_PACKAGES : 'curl indent git findutils ca-certificates'
2021-09-30 11:01:26 +00:00
FDO_DISTRIBUTION_EXEC : 'ci/docker/indent/prepare.sh'
2020-10-24 17:56:22 +00:00
gst-indent amd64 docker :
2021-09-27 06:41:10 +00:00
extends :
- '.gst-indent image'
- '.fdo.container-build@debian'
2022-10-24 18:38:13 +00:00
stage : 'preparation'
2021-10-05 13:27:50 +00:00
# Do not depend on the trigger, as we want to run indent always
needs : [ ]
2020-10-24 17:56:22 +00:00
2023-02-16 03:30:15 +00:00
.commitlint image :
2023-05-24 10:02:55 +00:00
tags : [ 'placeholder-job' ]
2023-02-16 03:30:15 +00:00
variables :
FDO_DISTRIBUTION_VERSION : '37'
FDO_REPO_SUFFIX : "$COMMITLINT_AMD64_SUFFIX"
FDO_DISTRIBUTION_TAG : "$LINT_TAG-$GST_UPSTREAM_BRANCH"
FDO_DISTRIBUTION_PACKAGES : 'python3-pip git'
FDO_DISTRIBUTION_EXEC : 'ci/docker/lint/prepare.sh'
2024-01-04 12:35:45 +00:00
FDO_USER : "ciuser"
2023-02-16 03:30:15 +00:00
commitlint docker :
extends :
- '.commitlint image'
- '.fdo.container-build@fedora'
stage : 'preparation'
# Do not depend on the trigger, as we want to run indent always
needs : [ ]
2022-03-01 19:12:02 +00:00
windows amd64 docker :
2022-10-24 18:38:13 +00:00
stage : "preparation"
2022-03-11 10:27:15 +00:00
timeout : '3h'
2020-10-24 17:56:22 +00:00
variables :
# Unlike the buildah/linux jobs, this file
# needs to be relative to docker/windows/ subdir
# as it makes life easier in the powershell script
#
# We also don't need a CONTEXT_DIR var as its also
# hardcoded to be docker/windows/
DOCKERFILE : "ci/docker/windows/Dockerfile"
tags :
- windows
- shell
2022-03-22 10:17:33 +00:00
- "2022"
2020-10-24 17:56:22 +00:00
script :
# We need to pass an array and to resolve the env vars, so we can't use a variable:
2023-07-13 10:08:50 +00:00
- $DOCKER_BUILD_ARGS = @(`
"--build-arg" , "DEFAULT_BRANCH=$GST_UPSTREAM_BRANCH" , `
"--build-arg" , "CI_PROJECT_NAMESPACE=$CI_PROJECT_NAMESPACE" , `
"--build-arg" , "CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME" `
)
- ci/docker/windows/container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $WINDOWS_IMAGE $WINDOWS_UPSTREAM_IMAGE $DOCKERFILE
2020-10-24 17:56:22 +00:00
2023-08-29 06:10:49 +00:00
.macos image :
2023-10-25 11:28:05 +00:00
image : "registry.freedesktop.org/gstreamer/gstreamer/macos-arm64/14-sonoma:2023-10-25.0"
2023-08-29 06:10:49 +00:00
tags :
- gst-mac-arm
2020-10-24 17:56:22 +00:00
# ---- Preparation ----- #
#
# gst-indent!!
#
gst indent :
2021-09-27 06:41:10 +00:00
extends :
- '.gst-indent image'
- '.fdo.suffixed-image@debian'
2020-10-24 17:56:22 +00:00
stage : 'preparation'
2021-10-05 13:27:50 +00:00
needs :
- job : 'gst-indent amd64 docker'
artifacts : false
2020-10-24 17:56:22 +00:00
script :
2021-09-30 11:01:26 +00:00
- ./scripts/check-format-c
- ./scripts/format-csharp --check
2024-02-22 12:59:00 +00:00
# We want both wraps to use the same version, overkill to create a separate job for this
- cmp subprojects/gtk-sharp.wrap subprojects/gstreamer-sharp/subprojects/gtk-sharp.wrap
2022-03-29 18:26:34 +00:00
rules :
2023-08-29 06:10:49 +00:00
- !reference [.upstream-branch-rules, rules]
2022-03-29 18:26:34 +00:00
- if : '$CI_PROJECT_NAMESPACE != "gstreamer" || $CI_COMMIT_BRANCH != $GST_UPSTREAM_BRANCH'
when : 'always'
2020-10-24 17:56:22 +00:00
2023-08-24 08:34:48 +00:00
rustfmt :
extends :
- '.fedora image'
- '.fdo.suffixed-image@fedora'
stage : 'preparation'
needs :
- "fedora amd64 docker"
script :
- export RUSTUP_HOME="/usr/local/rustup"
- export PATH="/usr/local/cargo/bin:$PATH"
- ./scripts/format-rust --check
2023-02-16 03:30:15 +00:00
commitlint :
extends :
- '.commitlint image'
- '.fdo.suffixed-image@fedora'
stage : 'preparation'
variables :
GIT_STRATEGY : fetch
GIT_DEPTH : 100
needs :
- job : 'commitlint docker'
artifacts : false
2024-01-04 12:35:45 +00:00
before_script :
- git config --global --add safe.directory $CI_PROJECT_DIR
2023-02-16 03:30:15 +00:00
script :
- echo $CI_MERGE_REQUEST_DIFF_BASE_SHA
- gitlint --commits $CI_MERGE_REQUEST_DIFF_BASE_SHA..HEAD
rules :
# Only run on MR as we need CI_MERGE_REQUEST_DIFF_BASE_SHA to know
# what commits to check
- if : '$CI_PIPELINE_SOURCE == "merge_request_event"'
2020-10-24 17:56:22 +00:00
.build_ccache_vars :
variables :
CCACHE_COMPILERCHECK : 'content'
CCACHE_COMPRESS : 'true'
CCACHE_BASEDIR : '/cache/gstreamer/gstreamer'
# shared across everything really
CCACHE_MAXSIZE : '10G'
.base_modules_changes : &modules_changes
- .gitlab-ci.yml
2023-04-05 12:20:56 +00:00
- .gitlab-image-tags.yml
2022-05-11 06:15:46 +00:00
- gst-env.py
2022-02-05 03:46:49 +00:00
- ci/gitlab/*.py
2023-08-25 09:43:19 +00:00
- ci/scripts/**/*
2020-10-24 17:56:22 +00:00
- meson.build
- subprojects/*.wrap
- subprojects/gst-devtools/**/*
- subprojects/gst-editing-services/**/*
- subprojects/gst-integration-testsuites/**/*
- subprojects/gst-libav/**/*
- subprojects/gst-plugins-bad/**/*
- subprojects/gst-plugins-base/**/*
- subprojects/gst-plugins-good/**/*
- subprojects/gst-plugins-ugly/**/*
- subprojects/gst-python/**/*
- subprojects/gstreamer/**/*
- subprojects/gstreamer-sharp/**/*
- subprojects/gst-rtsp-server/**/*
2023-08-29 06:10:49 +00:00
.upstream-branch-rules :
rules :
# If this matches, it means the pipeline is running against either the main
# or a stable branch, so make it manual
- if : '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == $GST_UPSTREAM_BRANCH'
when : manual
2020-10-24 17:56:22 +00:00
.build :
stage : 'build'
2021-09-27 06:42:18 +00:00
needs :
- "trigger"
2020-10-24 17:56:22 +00:00
# Taking into account the slowest shared runner + time needed to upload the binaries to artifacts
# Also need to take into account I/O of pulling docker images and uploading artifacts
timeout : '45min'
variables :
2023-05-24 12:26:44 +00:00
BUILD_GST_DEBUG : "-Dgstreamer:gst_debug=true"
2020-09-07 15:33:13 +00:00
GST_WERROR : "true"
2023-03-27 13:34:35 +00:00
MESON_ARGS : "${DEFAULT_MESON_ARGS}"
2023-08-29 06:10:49 +00:00
SUBPROJECTS_CACHE_DIR : "/subprojects"
2024-01-09 20:58:50 +00:00
# Avoid weird issue about cross-device links
# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3197
GI_SCANNER_DISABLE_CACHE : "1"
2020-10-24 17:56:22 +00:00
script :
2024-06-29 14:26:20 +00:00
- $CI_PROJECT_DIR/ci/scripts/build.sh build/
2022-05-07 01:45:09 +00:00
- ./gst-env.py gst-inspect-1.0 --version
- ./gst-env.py gst-inspect-1.0
2020-10-24 17:56:22 +00:00
after_script :
- mv build/meson-logs/ meson-logs
artifacts :
expire_in : "7 days"
when : "always"
paths :
- 'meson-logs/'
2021-10-13 21:10:40 +00:00
rules :
2023-08-29 06:10:49 +00:00
- !reference [.upstream-branch-rules, rules]
2021-10-13 21:10:40 +00:00
- changes :
*modules_changes
2023-07-12 20:50:06 +00:00
- changes :
- subprojects/gstreamer-vaapi/**/*
2020-10-24 17:56:22 +00:00
2024-04-10 15:36:16 +00:00
.build simple :
2021-09-27 06:41:10 +00:00
extends :
- '.build'
2023-08-29 06:10:49 +00:00
- '.build_ccache_vars'
2020-10-24 17:56:22 +00:00
variables :
2020-09-07 15:33:13 +00:00
GST_WERROR : "true"
2023-03-27 13:34:35 +00:00
MESON_ARGS : "${SIMPLE_BUILD}"
2023-08-29 06:10:49 +00:00
SUBPROJECTS_CACHE_DIR : "/subprojects"
2022-05-19 13:18:52 +00:00
script :
2024-06-29 14:26:20 +00:00
- $CI_PROJECT_DIR/ci/scripts/build.sh build/
2022-05-19 13:18:52 +00:00
- ./gst-env.py gst-inspect-1.0 --version
- ./gst-env.py gst-inspect-1.0
2023-11-21 22:44:06 +00:00
- G_DEBUG=fatal_criticals ./gst-env.py gst-inspect-1.0 --print-all --gst-disable-registry-fork > /dev/null
2022-05-19 13:18:52 +00:00
- meson install --destdir $CI_PROJECT_DIR/destdir -C build
- rm -rf $CI_PROJECT_DIR/destdir
2024-04-10 15:36:16 +00:00
.build fedora x86_64 :
extends :
- '.fedora image'
- '.fdo.suffixed-image@fedora'
- '.build simple'
needs :
- "trigger"
- "fedora amd64 docker"
2020-09-30 08:51:10 +00:00
build fedora gcc :
extends : '.build fedora x86_64'
2020-10-24 17:56:22 +00:00
variables :
2020-09-30 08:51:10 +00:00
CC : 'ccache gcc'
CXX : 'ccache g++'
parallel :
matrix :
2023-05-24 12:26:44 +00:00
- BUILD_TYPE : [ "--default-library=shared" , "--default-library=both" ]
BUILD_GST_DEBUG : [ "-Dgstreamer:gst_debug=true" , "-Dgstreamer:gst_debug=false" ]
2020-09-30 08:51:10 +00:00
2023-05-24 12:26:44 +00:00
- BUILD_TYPE : [ "--default-library=static" ]
BUILD_GST_DEBUG : [ "-Dgstreamer:gst_debug=true" , "-Dgstreamer:gst_debug=false" ]
2020-09-30 08:51:10 +00:00
# Passing Dpython=enabled prohibits us from -Dgst-editing-services:python=disabled which we
# currently need to statically build ges.
#
# subprojects/gst-editing-services/meson.build:153:4: ERROR: Problem encountered: Want to build python based modules but it is not supported while static building
# https://github.com/mesonbuild/meson/issues/5214
# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4281?commit_id=d1a687b61d8fbc5ae35b4bb62aa7fd1d091818f2#note_1875699
#
# VAAPI can't be build statically yet
# subprojects/gstreamer-vaapi/meson.build:8:2: ERROR: Problem encountered: GStreamer-VAAPI plugin not supported with `static` builds yet.
2023-08-26 18:24:11 +00:00
#
# Disabling gstreamer-sharp tests because they download things as part of configure with
# nuget which frequently fails on the CI (possibly because we're hammering the site)
MESON_ARGS : "${DEFAULT_MESON_ARGS} -Dvaapi=disabled -Dpython=auto -Dgst-editing-services:python=disabled -Dintrospection=disabled -Ddoc=disabled -Dgstreamer-sharp:tests=disabled"
2020-09-30 08:51:10 +00:00
build fedora clang :
2020-10-24 17:56:22 +00:00
extends : '.build fedora x86_64'
variables :
CC : 'ccache clang'
CXX : 'ccache clang++'
2020-09-30 08:51:10 +00:00
parallel :
matrix :
2023-05-24 12:26:44 +00:00
- BUILD_TYPE : [ "--default-library=shared" , "--default-library=both" ]
2023-10-24 06:29:47 +00:00
BUILD_GST_DEBUG : [ "-Dgstreamer:gst_debug=true" , "-Dgstreamer:gst_debug=false" ]
2023-09-08 14:44:17 +00:00
MESON_ARGS : >-
${SIMPLE_BUILD}
--force-fallback-for=glib
2020-09-30 08:51:10 +00:00
2023-05-24 12:26:44 +00:00
- BUILD_TYPE : [ "--default-library=static" ]
BUILD_GST_DEBUG : [ "-Dgstreamer:gst_debug=true" , "-Dgstreamer:gst_debug=false" ]
2020-09-30 08:51:10 +00:00
# VAAPI can't be build statically yet
# subprojects/gstreamer-vaapi/meson.build:8:2: ERROR: Problem encountered: GStreamer-VAAPI plugin not supported with `static` builds yet.
2023-08-26 18:24:11 +00:00
#
# Disabling gstreamer-sharp tests because they download things as part of configure with
# nuget which frequently fails on the CI (possibly because we're hammering the site)
2023-09-08 14:44:17 +00:00
MESON_ARGS : >-
${DEFAULT_MESON_ARGS}
-Dvaapi=disabled
-Dintrospection=disabled
2023-05-16 14:47:49 +00:00
-Dpython=disabled
2023-09-08 14:44:17 +00:00
-Ddoc=disabled
-Dgstreamer-sharp:tests=disabled
--force-fallback-for=glib
2020-10-24 17:56:22 +00:00
2024-04-10 15:36:16 +00:00
build debian x86_64 :
extends :
- '.debian image'
- '.fdo.suffixed-image@debian'
- '.build simple'
needs :
- "trigger"
- "debian amd64 docker"
variables :
BUILD_TYPE : "--default-library=shared"
BUILD_GST_DEBUG : "-Dgstreamer:gst_debug=true"
2020-10-24 17:56:22 +00:00
.build windows :
image : $WINDOWS_IMAGE
stage : 'build'
tags :
- 'docker'
- 'windows'
2022-03-22 10:17:33 +00:00
- '2022'
2020-10-24 17:56:22 +00:00
needs :
2022-10-24 18:51:53 +00:00
- "trigger"
2021-10-05 13:27:50 +00:00
- "windows amd64 docker"
2023-07-19 08:29:03 +00:00
timeout : '90m'
2020-10-24 17:56:22 +00:00
variables :
2023-07-07 03:19:14 +00:00
MESON_ARGS : >-
2020-10-24 17:56:22 +00:00
${DEFAULT_MESON_ARGS}
-Dlibav=disabled
-Dvaapi=disabled
-Dgst-plugins-base:pango=enabled
-Dgst-plugins-good:cairo=enabled
2023-07-14 02:58:10 +00:00
-Dgst-plugins-good:soup=enabled
2023-06-27 18:44:40 +00:00
-Dgst-plugins-bad:d3d11-wgc=enabled
2024-08-17 08:58:35 +00:00
-Dgtk=enabled
2020-10-24 17:56:22 +00:00
rules :
2023-08-29 06:10:49 +00:00
- !reference [.upstream-branch-rules, rules]
2021-10-13 21:00:13 +00:00
- changes :
*modules_changes
2022-10-17 20:54:48 +00:00
- changes :
- subprojects/win-*/*
2020-10-24 17:56:22 +00:00
script :
2022-05-11 06:40:15 +00:00
# Make sure powershell exits on errors
# https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_preference_variables?view=powershell-6
- $ErrorActionPreference = "Stop"
# Set the code page to UTF-8
- chcp 65001
2023-01-27 15:30:15 +00:00
# Renormalize line endings
2023-07-12 07:37:21 +00:00
- git add --renormalize subprojects/packagefiles
2023-07-12 21:01:06 +00:00
- $env:PYTHONUNBUFFERED = '1'
2023-08-29 06:10:49 +00:00
- ci/scripts/handle-subprojects-cache.py --cache-dir /subprojects subprojects/
2023-07-12 21:01:06 +00:00
- $env:PYTHONUNBUFFERED = ''
ci: Update to VS 2022 Build Tools
We need the Windows 11 SDK for Windows Graphics Capture API support,
which will be enabled at runtime based on feature availability on
Windows, so should work correctly on Windows 8, 8.1, 10, and 11.
However, if we enable it in the VS 2019 installer, it will install
both Windows 10 SDK (required) and Windows 11 SDK (optional), which
will bloat the image by 3GB or more.
So just move to VS 2022 for the Windows images, which requires only
the Windows 11 SDK.
Had to remove the UWP build tools because they were causing the
installation to fail, likely due to an installer bug. We don't need
UWP anymore anyway. We just need the ARM64 build tools for the
cross-arm64 monorepo build.
Also stop installing into C:\BuildTools and let Meson pick the install
up with --vsenv.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4939>
2023-06-27 18:28:51 +00:00
- echo $env:MESON_ARGS
2023-07-12 09:03:10 +00:00
# We do not pick up any deps with cmake, so speed up dependency checks
- $env:CMAKE = 'false'
2022-05-09 05:29:16 +00:00
artifacts :
expire_in : "7 days"
when : "always"
paths :
- 'build/meson-logs/'
2020-10-24 17:56:22 +00:00
2023-07-12 02:21:36 +00:00
build vs2022 amd64 :
2020-10-24 17:56:22 +00:00
extends : '.build windows'
ci: Update to VS 2022 Build Tools
We need the Windows 11 SDK for Windows Graphics Capture API support,
which will be enabled at runtime based on feature availability on
Windows, so should work correctly on Windows 8, 8.1, 10, and 11.
However, if we enable it in the VS 2019 installer, it will install
both Windows 10 SDK (required) and Windows 11 SDK (optional), which
will bloat the image by 3GB or more.
So just move to VS 2022 for the Windows images, which requires only
the Windows 11 SDK.
Had to remove the UWP build tools because they were causing the
installation to fail, likely due to an installer bug. We don't need
UWP anymore anyway. We just need the ARM64 build tools for the
cross-arm64 monorepo build.
Also stop installing into C:\BuildTools and let Meson pick the install
up with --vsenv.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4939>
2023-06-27 18:28:51 +00:00
script :
- !reference [".build windows", "script"]
- meson setup --vsenv build $env:MESON_ARGS
2023-12-05 10:12:35 +00:00
- meson compile -C build --jobs $env:FDO_CI_CONCURRENT
ci: Update to VS 2022 Build Tools
We need the Windows 11 SDK for Windows Graphics Capture API support,
which will be enabled at runtime based on feature availability on
Windows, so should work correctly on Windows 8, 8.1, 10, and 11.
However, if we enable it in the VS 2019 installer, it will install
both Windows 10 SDK (required) and Windows 11 SDK (optional), which
will bloat the image by 3GB or more.
So just move to VS 2022 for the Windows images, which requires only
the Windows 11 SDK.
Had to remove the UWP build tools because they were causing the
installation to fail, likely due to an installer bug. We don't need
UWP anymore anyway. We just need the ARM64 build tools for the
cross-arm64 monorepo build.
Also stop installing into C:\BuildTools and let Meson pick the install
up with --vsenv.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4939>
2023-06-27 18:28:51 +00:00
- .\gst-env.py gst-inspect-1.0.exe --version
- .\gst-env.py gst-inspect-1.0.exe
- mkdir destdir
- meson install -C build --destdir installdir
- Remove-Item -Recurse -Force build\installdir
2022-04-12 16:17:11 +00:00
variables :
# FIXME: https://github.com/mesonbuild/meson/pull/11007
PKG_CONFIG : ${CI_PROJECT_DIR}/subprojects/win-pkgconfig/pkg-config.exe
ci: Update to VS 2022 Build Tools
We need the Windows 11 SDK for Windows Graphics Capture API support,
which will be enabled at runtime based on feature availability on
Windows, so should work correctly on Windows 8, 8.1, 10, and 11.
However, if we enable it in the VS 2019 installer, it will install
both Windows 10 SDK (required) and Windows 11 SDK (optional), which
will bloat the image by 3GB or more.
So just move to VS 2022 for the Windows images, which requires only
the Windows 11 SDK.
Had to remove the UWP build tools because they were causing the
installation to fail, likely due to an installer bug. We don't need
UWP anymore anyway. We just need the ARM64 build tools for the
cross-arm64 monorepo build.
Also stop installing into C:\BuildTools and let Meson pick the install
up with --vsenv.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4939>
2023-06-27 18:28:51 +00:00
2023-07-25 15:32:31 +00:00
build vs2022 amd64 full-static :
extends : ".build windows"
script :
- !reference [".build windows", "script"]
- echo $env:MESON_ARGS
- cmd.exe /C "meson setup --vsenv build --default-library=static $env:MESON_ARGS"
2023-12-05 10:12:35 +00:00
- meson compile -C build --jobs $env:FDO_CI_CONCURRENT
2023-07-25 15:32:31 +00:00
- .\gst-env.py gst-inspect-1.0.exe --version
- .\gst-env.py gst-inspect-1.0.exe
variables :
MESON_ARGS : >-
-Dintrospection=disabled
-Dpython=disabled
-Dlibav=disabled
-Ddoc=disabled
-Dgst-full-target-type=static_library
2023-07-12 02:21:36 +00:00
.build windows cross :
extends : '.build windows'
script :
- !reference [".build windows", "script"]
# Setting up a cross build with MSVC is still non-trivial because
# the --vsenv argument cannot be used to set it up
- echo $env:MESON_CROSS_ARGS
2024-02-21 11:32:18 +00:00
- cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH && meson setup build $env:MESON_ARGS $env:MESON_CROSS_ARGS"
- cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH && meson compile -C build --jobs $env:FDO_CI_CONCURRENT"
2020-10-24 17:56:22 +00:00
ci: Update to VS 2022 Build Tools
We need the Windows 11 SDK for Windows Graphics Capture API support,
which will be enabled at runtime based on feature availability on
Windows, so should work correctly on Windows 8, 8.1, 10, and 11.
However, if we enable it in the VS 2019 installer, it will install
both Windows 10 SDK (required) and Windows 11 SDK (optional), which
will bloat the image by 3GB or more.
So just move to VS 2022 for the Windows images, which requires only
the Windows 11 SDK.
Had to remove the UWP build tools because they were causing the
installation to fail, likely due to an installer bug. We don't need
UWP anymore anyway. We just need the ARM64 build tools for the
cross-arm64 monorepo build.
Also stop installing into C:\BuildTools and let Meson pick the install
up with --vsenv.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4939>
2023-06-27 18:28:51 +00:00
build vs2022 x86 :
2023-07-12 02:21:36 +00:00
extends : '.build windows cross'
2020-10-24 17:56:22 +00:00
variables :
ARCH : 'x86'
2022-04-12 16:17:11 +00:00
# Installed python is 64 bits instead of 32 bits
MESON_CROSS_ARGS : >
-Dpython=disabled
-Dintrospection=disabled
2020-10-24 17:56:22 +00:00
ci: Update to VS 2022 Build Tools
We need the Windows 11 SDK for Windows Graphics Capture API support,
which will be enabled at runtime based on feature availability on
Windows, so should work correctly on Windows 8, 8.1, 10, and 11.
However, if we enable it in the VS 2019 installer, it will install
both Windows 10 SDK (required) and Windows 11 SDK (optional), which
will bloat the image by 3GB or more.
So just move to VS 2022 for the Windows images, which requires only
the Windows 11 SDK.
Had to remove the UWP build tools because they were causing the
installation to fail, likely due to an installer bug. We don't need
UWP anymore anyway. We just need the ARM64 build tools for the
cross-arm64 monorepo build.
Also stop installing into C:\BuildTools and let Meson pick the install
up with --vsenv.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4939>
2023-06-27 18:28:51 +00:00
build vs2022 arm64 :
2023-07-12 02:21:36 +00:00
extends : '.build windows cross'
2023-08-10 09:24:15 +00:00
rules :
- when : 'manual'
allow_failure : true
2022-01-27 05:55:53 +00:00
variables :
ARCH : 'arm64'
# pango pulls in cairo which pulls in pixman which doesn't build because of
# https://github.com/mesonbuild/meson/issues/9889
2023-07-14 02:58:10 +00:00
# libsoup requires glib-compile-resources, which isn't available in a cross
# build
2023-07-07 03:19:14 +00:00
MESON_CROSS_ARGS : >-
2022-01-27 05:55:53 +00:00
-Dgst-plugins-base:pango=disabled
-Dgst-plugins-good:cairo=disabled
-Dgst-devtools:cairo=disabled
2022-04-12 16:17:11 +00:00
-Dpython=disabled
-Dintrospection=disabled
ci: Update to VS 2022 Build Tools
We need the Windows 11 SDK for Windows Graphics Capture API support,
which will be enabled at runtime based on feature availability on
Windows, so should work correctly on Windows 8, 8.1, 10, and 11.
However, if we enable it in the VS 2019 installer, it will install
both Windows 10 SDK (required) and Windows 11 SDK (optional), which
will bloat the image by 3GB or more.
So just move to VS 2022 for the Windows images, which requires only
the Windows 11 SDK.
Had to remove the UWP build tools because they were causing the
installation to fail, likely due to an installer bug. We don't need
UWP anymore anyway. We just need the ARM64 build tools for the
cross-arm64 monorepo build.
Also stop installing into C:\BuildTools and let Meson pick the install
up with --vsenv.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4939>
2023-06-27 18:28:51 +00:00
--cross-file ci/meson/vs2022-paths.ini
--cross-file ci/meson/vs2022-arm64-cross.ini
--native-file ci/meson/vs2022-paths.ini
--native-file ci/meson/vs2022-x64-native.ini
2022-01-27 05:55:53 +00:00
2023-07-13 10:08:50 +00:00
build msys2 :
2020-10-24 17:56:22 +00:00
extends : '.build windows'
script :
ci: Update to VS 2022 Build Tools
We need the Windows 11 SDK for Windows Graphics Capture API support,
which will be enabled at runtime based on feature availability on
Windows, so should work correctly on Windows 8, 8.1, 10, and 11.
However, if we enable it in the VS 2019 installer, it will install
both Windows 10 SDK (required) and Windows 11 SDK (optional), which
will bloat the image by 3GB or more.
So just move to VS 2022 for the Windows images, which requires only
the Windows 11 SDK.
Had to remove the UWP build tools because they were causing the
installation to fail, likely due to an installer bug. We don't need
UWP anymore anyway. We just need the ARM64 build tools for the
cross-arm64 monorepo build.
Also stop installing into C:\BuildTools and let Meson pick the install
up with --vsenv.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4939>
2023-06-27 18:28:51 +00:00
- !reference [".build windows", "script"]
# Replace backslashes with forward so bash doesn't complain
- $env:CI_PROJECT_DIR = $env:CI_PROJECT_DIR.replace('\','/')
2023-07-12 02:22:16 +00:00
# Windows Graphics Capture currently requires Visual Studio
2023-07-20 08:29:26 +00:00
- $env:MESON_ARGS = $env:MESON_ARGS.replace('-Dgst-plugins-bad:d3d11-wgc=enabled','') + ' -Dpython=disabled -Dintrospection=disabled'
2021-10-12 21:13:44 +00:00
# Configure MSYS2 to use the UCRT64 environment, start in the same directory
# and inherit PATH
2023-12-05 10:12:35 +00:00
- C:\msys64\msys2_shell.cmd -ucrt64 -defterm -no-start -here -use-full-path -lc "meson setup build $env:MESON_ARGS && meson compile -C build --jobs $env:FDO_CI_CONCURRENT"
2020-10-24 17:56:22 +00:00
2023-08-29 06:10:49 +00:00
build macos :
extends :
- '.build'
- '.macos image'
variables :
# gst-libav/ffmpeg throws Wundef errors
GST_WERROR : "false"
MESON_ARGS : "${DEFAULT_MESON_ARGS}"
SUBPROJECTS_CACHE_DIR : "/Users/gst-ci/subprojects"
rules :
- !reference [.upstream-branch-rules, rules]
- changes :
*modules_changes
- changes :
- subprojects/macos-*/*
parallel :
matrix :
2023-05-24 12:26:44 +00:00
- BUILD_TYPE : [ "--default-library=both" ]
BUILD_GST_DEBUG : [ "-Dgstreamer:gst_debug=true" ]
2023-08-29 06:10:49 +00:00
# FIXME: We currently don't have pkg-config required by gobject-introspection/pygobject/sharp
# macos doesn't support vaapi
MESON_ARGS : >-
${SIMPLE_BUILD}
-Dintrospection=disabled
-Dvaapi=disabled
-Dsharp=disabled
-Dpython=disabled
-Ddoc=disabled
-Dgst-plugins-base:pango=enabled
-Dgst-plugins-good:cairo=enabled
-Dgst-plugins-good:soup=enabled
2024-08-17 08:58:35 +00:00
-Dgtk=enabled
2023-08-29 06:10:49 +00:00
2020-10-24 17:56:22 +00:00
# ---- Tests ----- #
.test :
stage : 'test'
extends :
- '.build_ccache_vars'
needs :
2021-10-05 13:27:50 +00:00
- "trigger"
2020-10-24 17:56:22 +00:00
variables :
2020-09-07 15:33:13 +00:00
GST_WERROR : "true"
2023-03-27 13:34:35 +00:00
MESON_ARGS : "${SIMPLE_BUILD}"
2023-08-29 06:10:49 +00:00
SUBPROJECTS_CACHE_DIR : "/subprojects"
2020-10-24 17:56:22 +00:00
2024-01-09 20:58:50 +00:00
# Avoid weird issue about cross-device links
# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3197
GI_SCANNER_DISABLE_CACHE : "1"
2020-10-24 17:56:22 +00:00
# Disable colored output to avoid weird rendering issues
GST_DEBUG_NO_COLOR : "true"
CI_ARTIFACTS_URL : "${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/validate-logs/"
GST_VALIDATE_LAUNCHER_FORCE_COLORS : "true"
TIMEOUT_FACTOR : "2"
# Enable the fault handler so we get backtraces on segfaults.
# any non-empty string will do
PYTHONFAULTHANDLER : "enabled"
rules :
- changes :
*modules_changes
script :
2023-12-06 09:13:13 +00:00
# Disable gdb debugdir safeload
# The CI will execute any code submitted to it anyway
- mkdir -p ~/.config/gdb
- echo "set auto-load safe-path /" >> ~/.config/gdb/gdbinit
2024-06-29 14:26:20 +00:00
- $CI_PROJECT_DIR/ci/scripts/build.sh build/
- $CI_PROJECT_DIR/ci/scripts/test.sh build/ $TEST_SUITE
2020-10-24 17:56:22 +00:00
after_script :
- mv build/meson-logs/ meson-logs
artifacts :
expire_in : '14 days'
when : always
paths :
- 'meson-logs/'
2023-10-24 04:46:30 +00:00
- "$CI_PROJECT_DIR/validate-logs"
2020-10-24 17:56:22 +00:00
reports :
junit :
2023-10-24 04:46:30 +00:00
- "$CI_PROJECT_DIR/validate-logs/*.xml"
2020-10-24 17:56:22 +00:00
.test fedora x86_64 :
2021-09-27 06:41:10 +00:00
extends :
- '.fedora image'
- '.fdo.suffixed-image@fedora'
- '.test'
2021-10-05 13:27:50 +00:00
needs :
2022-10-24 18:51:53 +00:00
- "trigger"
2021-10-05 13:27:50 +00:00
- "fedora amd64 docker"
2020-10-24 17:56:22 +00:00
tags : [ 'gstreamer' ]
check fedora :
extends : '.test fedora x86_64'
variables :
TEST_SUITE : "check.gst*"
2023-07-12 20:50:06 +00:00
rules :
- changes :
*modules_changes
- changes :
- subprojects/gstreamer-vaapi/**/*
2020-10-24 17:56:22 +00:00
integration testsuites fedora :
extends : '.test fedora x86_64'
2022-11-07 18:29:52 +00:00
parallel : 8
2020-10-24 17:56:22 +00:00
variables :
2023-07-07 03:19:14 +00:00
MESON_ARGS : >-
2023-03-27 13:34:35 +00:00
${SIMPLE_BUILD}
2022-11-26 10:02:17 +00:00
-Dsharp=disabled
-Dvaapi=disabled
-Dexamples=disabled
-Dgst-examples=disabled
-Dtests=disabled
-Dnls=disabled
-Dqt5=disabled
-Dgstreamer:benchmarks=disabled
-Dgst-plugins-good:gtk3=disabled
-Dgst-plugins-bad:microdns=disabled
-Dgst-plugins-bad:avtp=disabled
-Dgst-plugins-bad:opencv=disabled
-Dgst-plugins-bad:webrtc=disabled
2021-10-12 20:19:46 +00:00
EXTRA_VALIDATE_ARGS : "--timeout-factor=2 --retry-on-failures --parts=${CI_NODE_TOTAL} --part-index=${CI_NODE_INDEX} --sync"
2020-10-24 17:56:22 +00:00
TEST_SUITE : "validate ges"
2023-09-08 19:25:02 +00:00
check video formats :
stage : 'test'
extends :
- '.fedora image'
- '.fdo.suffixed-image@fedora'
- '.build_ccache_vars'
needs :
- "trigger"
- "fedora amd64 docker"
tags : [ 'gstreamer' ]
variables :
MESON_ARGS : "${SIMPLE_BUILD}"
2023-11-21 10:40:11 +00:00
BUILD_GST_DEBUG : "-Dgstreamer:gst_debug=true"
GST_WERROR : "true"
2023-09-08 19:25:02 +00:00
VIDEO_TOKEN : "GST_VIDEO_FORMATS_ALL_STR"
VIDEO_HEADER : "subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h"
WL_TOKEN : "GST_WL_VIDEO_FORMATS"
WL_HEADER : "subprojects/gst-plugins-bad/gst-libs/gst/wayland/gstwlvideoformat.h"
script :
2024-06-29 14:26:20 +00:00
- $CI_PROJECT_DIR/ci/scripts/build.sh build/
2023-10-24 04:46:30 +00:00
- $CI_PROJECT_DIR/ci/scripts/check-video-formats.sh
2023-09-08 19:25:02 +00:00
rules :
- changes :
- ${VIDEO_HEADER}
- ${WL_HEADER}
2023-02-20 10:38:28 +00:00
playbin3 integration :
extends : 'integration testsuites fedora'
variables :
USE_PLAYBIN3 : 1
# Let's allow failures for now until we're 100% sure everything works
allow_failure : true
2023-03-19 18:35:29 +00:00
2020-10-24 17:56:22 +00:00
# gstreamer-full:
2021-10-20 15:56:49 +00:00
gstreamer-full static build :
extends : '.build fedora x86_64'
stage : 'build'
2020-10-24 17:56:22 +00:00
variables :
2023-05-24 12:26:44 +00:00
BUILD_TYPE : "--default-library=static"
2023-07-07 03:19:14 +00:00
MESON_ARGS : >-
2021-10-13 02:28:57 +00:00
-Ddoc=disabled
2023-08-29 06:10:49 +00:00
SUBPROJECTS_CACHE_DIR : "/subprojects"
2020-10-24 17:56:22 +00:00
script :
2024-06-29 14:26:20 +00:00
- $CI_PROJECT_DIR/ci/scripts/build.sh build/
2020-10-24 17:56:22 +00:00
- meson test -C build -v test-gst-full
2021-10-20 15:56:49 +00:00
gstreamer-full-minimal static build :
extends : 'gstreamer-full static build'
stage : 'build'
2020-10-24 17:56:22 +00:00
variables :
2023-05-24 12:26:44 +00:00
BUILD_GST_DEBUG : "-Dgstreamer:gst_debug=false"
2020-09-07 15:33:13 +00:00
GST_WERROR : "true"
2023-05-24 12:26:44 +00:00
BUILD_TYPE : "--default-library=static"
2023-07-07 03:19:14 +00:00
MESON_ARGS : >-
2021-10-20 15:56:49 +00:00
-Ddoc=disabled
2020-10-24 17:56:22 +00:00
-Dauto_features=disabled
2024-08-06 21:19:04 +00:00
-Dgst-full=enabled
2020-10-24 17:56:22 +00:00
-Dgstreamer:check=enabled
-Dtests=enabled
-Dgst-plugins-base:alsa=enabled
-Dgst-plugins-base:typefind=enabled
-Dgst-plugins-base:pbtypes=enabled
-Dgst-full-elements=coreelements:filesrc,fakesink,identity,input-selector
-Dgst-full-typefind-functions=typefindfunctions:wav,flv
-Dgst-full-device-providers=alsa:alsadeviceprovider
-Dgst-full-dynamic-types=pbtypes:video_multiview_flagset
2023-08-29 06:10:49 +00:00
SUBPROJECTS_CACHE_DIR : "/subprojects"
2020-10-24 17:56:22 +00:00
script :
2024-06-29 14:26:20 +00:00
- $CI_PROJECT_DIR/ci/scripts/build.sh build/
2020-10-24 17:56:22 +00:00
- meson test -C build -v test-gst-full
- meson test -C build test-gst-full-features --test-args "-e filesrc,identity,fakesink -E filesink,capsfilter -t audio/x-wav -T video/vivo -d alsadeviceprovider -D v4l2deviceprovider -l GstVideoMultiviewFlagsSet"
- strip build/libgstreamer-full-1.0.so
- ls -l build/libgstreamer-full-1.0.so
2023-09-29 13:26:46 +00:00
# v4l2-stateless-decoders tests
fluster v4l2-stateless on visl :
extends : 'gstreamer-full static build'
stage : 'test'
variables :
BUILD_GST_DEBUG : '-Dgstreamer:gst_debug=false'
GST_WERROR : "true"
BUILD_TYPE : "--default-library=static"
MESON_ARGS : >-
-Dvirtme_kernel_image=/opt/linux/bzImage
-Dauto_features=disabled
2024-08-06 21:19:04 +00:00
-Dgst-full=enabled
2023-09-29 13:26:46 +00:00
-Dgstreamer:check=enabled
-Ddoc=disabled
-Dtests=enabled
-Dtools=enabled
-Dbase=enabled
-Dbad=enabled
-Dugly=disabled
-Dlibav=disabled
-Drtsp_server=disabled
-Dges=disabled
-Dgst-plugins-bad:debugutils=enabled
-Dgst-plugins-bad:ivfparse=enabled
-Dgst-plugins-bad:v4l2codecs=enabled
-Dgst-plugins-bad:videoparsers=enabled
-Dgst-plugins-base:app=enabled
-Dgst-plugins-base:videoconvertscale=enabled
-Dgst-plugins-base:typefind=enabled
-Dgst-plugins-base:playback=enabled
-Dgst-plugins-good:matroska=enabled
SUBPROJECTS_CACHE_DIR : "/subprojects"
script :
2024-06-29 14:26:20 +00:00
- $CI_PROJECT_DIR/ci/scripts/build.sh build/
2023-09-29 13:26:46 +00:00
- meson test -C build -v --suite v4l2-stateless-decoders
artifacts :
reports :
junit : build/fluster-results-*.xml
rules :
- changes :
- .gitlab-ci.yml
- .gitlab-image-tags.yml
- subprojects/gst-plugins-bad/sys/v4l2codecs/*
- subprojects/gst-plugins-bad/gst-libs/gst/codecparsers/*
- subprojects/gst-plugins-bad/gst-libs/gst/codecs/*
- subprojects/gst-plugins-bad/gst/videoparsers/*
- tests/virtme/*
- ci/scripts/build-linux.sh
- ci/docker/fedora/*
2020-10-24 17:56:22 +00:00
# Valgrind
.valgrind fedora x86_64 :
extends : '.test fedora x86_64'
stage : 'test'
variables :
EXTRA_VALIDATE_ARGS : "--valgrind"
2023-07-12 20:50:06 +00:00
rules :
- changes :
*modules_changes
- changes :
- subprojects/gstreamer-vaapi/**/*
2020-10-24 17:56:22 +00:00
valgrind core :
extends : '.valgrind fedora x86_64'
variables :
TEST_SUITE : "check.gstreamer\\..*"
rules :
- changes :
- "*"
- scripts/*
2021-10-06 10:23:50 +00:00
- ci/**/*
2020-10-24 17:56:22 +00:00
- subprojects/gst-devtools/**/*
- subprojects/gstreamer/**/*
valgrind base :
extends : '.valgrind fedora x86_64'
variables :
TEST_SUITE : "check.gst-plugins-base\\..*"
rules :
- changes :
- "*"
- scripts/*
2021-10-06 10:23:50 +00:00
- ci//**/*
2020-10-24 17:56:22 +00:00
- subprojects/gst-devtools/**/*
- subprojects/gstreamer/**/*
- subprojects/gst-plugins-base/**/*
valgrind good :
extends : '.valgrind fedora x86_64'
variables :
TEST_SUITE : "check.gst-plugins-good\\..*"
# take longer time due to splitmux unit test
TIMEOUT_FACTOR : "4"
rules :
- changes :
- "*"
- scripts/*
2021-10-06 10:23:50 +00:00
- ci/**/*
2020-10-24 17:56:22 +00:00
- subprojects/gst-devtools/**/*
- subprojects/gstreamer/**/*
- subprojects/gst-plugins-base/**/*
- subprojects/gst-plugins-good/**/*
valgrind ugly :
extends : '.valgrind fedora x86_64'
variables :
TEST_SUITE : "check.gst-plugins-ugly\\..*"
rules :
- changes :
- "*"
- scripts/*
2021-10-06 10:23:50 +00:00
- ci/**/*
2020-10-24 17:56:22 +00:00
- subprojects/gst-devtools/**/*
- subprojects/gstreamer/**/*
- subprojects/gst-plugins-base/**/*
- subprojects/gst-plugins-good/**/*
- subprojects/gst-plugins-ugly/**/*
valgrind bad :
extends : '.valgrind fedora x86_64'
variables :
TEST_SUITE : "check.gst-plugins-bad\\..*"
rules :
- changes :
- "*"
- scripts/*
2021-10-06 10:23:50 +00:00
- ci/**/*
2020-10-24 17:56:22 +00:00
- subprojects/gst-devtools/**/*
- subprojects/gstreamer/**/*
- subprojects/gst-plugins-base/**/*
- subprojects/gst-plugins-good/**/*
- subprojects/gst-plugins-bad/**/*
valgrind ges :
extends : '.valgrind fedora x86_64'
variables :
TEST_SUITE : "check.gst-editing-services\\..*"
rules :
- changes :
- "*"
- scripts/*
2021-10-06 10:23:50 +00:00
- ci/**/*
2020-10-24 17:56:22 +00:00
- subprojects/gst-devtools/**/*
- subprojects/gstreamer/**/*
- subprojects/gst-plugins-base/**/*
- subprojects/gst-plugins-good/**/*
- subprojects/gst-plugins-bad/**/*
- subprojects/gst-editing-services/**/*
2022-03-29 16:43:56 +00:00
- subprojects/gst-python/**/*
2022-12-22 15:51:46 +00:00
# valgrind ges jobs are racy across the board and simply fail too often.
# Someone needs to go through job logs and figure out which jobs to mark
# as flaky. Until then, just ignore failures.
allow_failure : true
2020-10-24 17:56:22 +00:00
# ---- Integration ----- #
2021-09-28 19:29:12 +00:00
.documentation :
2022-08-26 12:43:34 +00:00
extends : '.build fedora x86_64'
2020-10-24 17:56:22 +00:00
variables :
2023-10-09 18:11:01 +00:00
# Disable svthevcenc until the following MR is merged
# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5447
2023-07-07 03:19:14 +00:00
MESON_ARGS : >-
2023-03-27 13:34:35 +00:00
${SIMPLE_BUILD}
-Ddoc=enabled
2023-08-09 11:50:29 +00:00
-Drs=enabled
2023-03-27 13:34:35 +00:00
-Dgst-docs:fatal_warnings=true
2023-10-09 18:11:01 +00:00
-Dgst-plugins-bad:svthevcenc=disabled
2022-06-09 00:08:19 +00:00
# Disable werror for the docs build, we don't need it
2020-09-07 15:33:13 +00:00
GST_WERROR : 'false'
2023-08-29 06:10:49 +00:00
SUBPROJECTS_CACHE_DIR : "/subprojects"
2020-10-24 17:56:22 +00:00
CI_ARTIFACTS_URL : "${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/"
script :
2024-06-29 14:26:20 +00:00
- $CI_PROJECT_DIR/ci/scripts/build-docs.sh build/
2020-10-24 17:56:22 +00:00
artifacts :
when : always
2021-09-28 19:29:12 +00:00
expire_in : "7 days"
2020-10-24 17:56:22 +00:00
paths :
- documentation/
2022-08-31 18:15:16 +00:00
- diffs/
2021-09-27 14:15:22 +00:00
2021-10-05 13:06:32 +00:00
#
2021-10-13 21:10:40 +00:00
# This jobs runs in gstreamer namespace when after the merge into main branch.
2021-10-05 13:06:32 +00:00
# The produced artifact is later used to automatically update the web page.
#
2021-09-28 19:29:12 +00:00
documentation :
stage : integrate
extends :
- '.documentation'
2022-08-26 12:43:34 +00:00
needs :
- "fedora amd64 docker"
2021-09-28 19:29:12 +00:00
rules :
- if : '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == "main"'
2021-10-05 13:06:32 +00:00
#
# This job is run in users namespace to validate documentation before merging
# MR.
#
2021-09-28 19:29:12 +00:00
build documentation :
extends :
- '.documentation'
stage : build
needs :
2022-10-24 18:51:53 +00:00
- "trigger"
2022-08-26 12:43:34 +00:00
- "fedora amd64 docker"
2021-09-28 19:29:12 +00:00
rules :
2021-10-13 21:10:40 +00:00
# Never run post merge, we have the `documentation` always running for that
- if : '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == $GST_UPSTREAM_BRANCH'
2021-10-13 21:00:13 +00:00
when : never
2021-09-28 19:29:12 +00:00
- changes :
- .gitlab-ci.yml
2023-07-31 17:51:51 +00:00
- .gitlab-image-tags.yml
2022-02-05 03:46:49 +00:00
- ci/gitlab/*.py
2021-09-28 19:29:12 +00:00
- subprojects/*.wrap
- subprojects/gst-docs/**/*
- subprojects/gst-devtools/**/*
- subprojects/gst-editing-services/**/*
- subprojects/gst-libav/**/*
- subprojects/gst-plugins-bad/**/*
- subprojects/gst-plugins-base/**/*
- subprojects/gst-plugins-good/**/*
- subprojects/gst-plugins-ugly/**/*
- subprojects/gstreamer/**/*
- subprojects/gstreamer-vaapi/**/*
- subprojects/gst-rtsp-server/**/*
2021-09-27 14:15:22 +00:00
# FIXME: Using trigger: causes permission issues, workaround using old REST API.
# https://gitlab.com/gitlab-org/gitlab/-/issues/341737
cerbero trigger :
stage : build
2022-09-22 12:33:53 +00:00
timeout : '4h'
2022-03-30 09:52:53 +00:00
tags :
- placeholder-job
2021-10-05 00:24:58 +00:00
extends :
- '.fedora image'
- '.fdo.suffixed-image@fedora'
2021-10-05 13:27:50 +00:00
needs :
2022-10-24 18:51:53 +00:00
- "trigger"
2021-10-05 13:27:50 +00:00
- "fedora amd64 docker"
2021-09-27 14:15:22 +00:00
script :
2021-09-27 22:37:18 +00:00
- ci/gitlab/trigger_cerbero_pipeline.py
2021-09-27 14:15:22 +00:00
rules :
2023-04-03 11:59:36 +00:00
- if : '$MESON_COMMIT'
2021-10-13 21:10:40 +00:00
# Never run post merge
- if : '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == $GST_UPSTREAM_BRANCH'
2021-10-13 21:00:13 +00:00
when : never
2021-09-27 14:15:22 +00:00
- changes :
- .gitlab-ci.yml
2022-02-05 03:46:49 +00:00
- ci/gitlab/*.py
2021-09-27 14:15:22 +00:00
- subprojects/gst-devtools/**/*
- subprojects/gst-editing-services/**/*
- subprojects/gst-libav/**/*
- subprojects/gst-plugins-bad/**/*
- subprojects/gst-plugins-base/**/*
- subprojects/gst-plugins-good/**/*
- subprojects/gst-plugins-ugly/**/*
- subprojects/gst-python/**/*
- subprojects/gstreamer/**/*
- subprojects/gst-rtsp-server/**/*
2021-10-05 13:27:50 +00:00
- subprojects/gst-examples/**/*