mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2024-05-19 16:58:22 +00:00
139 lines
6.3 KiB
YAML
139 lines
6.3 KiB
YAML
# We use https://gitlab.freedesktop.org/freedesktop/ci-templates
|
|
# to build the images used by the ci.
|
|
#
|
|
# Here is how to properly update those images:
|
|
# - new Rust stable version: update GST_RS_IMG_TAG and update Rust version
|
|
# - add dependencies: update FDO_DISTRIBUTION_PACKAGES and update GST_RS_IMG_TAG
|
|
# - update GStreamer version: update the tag in ci/install-gst.sh and update GST_RS_IMG_TAG
|
|
#
|
|
# GST_RS_IMG_TAG is defined in ci/images_template.yml and should be updated
|
|
# either by:
|
|
# - setting it to the current date and the version suffix to 0
|
|
# - incrementing the version suffix
|
|
#
|
|
# After each update commit your changes and push to your personal repo.
|
|
# After review and ci approval merge the branch as usual.
|
|
#
|
|
# Updating the nightly image should be done by simply running a scheduled ci
|
|
# pipeline on the upstream repo with the $UPDATE_NIGHTLY variable defined.
|
|
|
|
.templates_sha: &templates_sha b2e24205598dc1d80b5f2c88cf7618051e30e9fd
|
|
|
|
include:
|
|
- project: 'freedesktop/ci-templates'
|
|
ref: *templates_sha
|
|
file: '/templates/debian.yml'
|
|
|
|
- local: "ci/images_template.yml"
|
|
|
|
workflow:
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "schedule"
|
|
- if: $CI_MERGE_REQUEST_IID
|
|
# don't create a pipeline if its a commit pipeline, on a branch and that branch has
|
|
# open merge requests (bc we will get a MR build instead)
|
|
- if: $CI_OPEN_MERGE_REQUESTS
|
|
when: never
|
|
- if: $CI_COMMIT_TAG
|
|
- if: $CI_COMMIT_BRANCH
|
|
|
|
default:
|
|
interruptible: true
|
|
|
|
variables:
|
|
FDO_UPSTREAM_REPO: gstreamer/gstreamer-rs
|
|
|
|
# DIY CI-templates like setup for windows
|
|
WINDOWS_RUST_MINIMUM_IMAGE: "$CI_REGISTRY_IMAGE/windows:$GST_RS_IMG_TAG-main-$GST_RS_MSRV"
|
|
WINDOWS_RUST_MINIMUM_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/windows:$GST_RS_IMG_TAG-main-$GST_RS_MSRV"
|
|
WINDOWS_RUST_STABLE_IMAGE: "$CI_REGISTRY_IMAGE/windows:$GST_RS_IMG_TAG-main-$GST_RS_STABLE"
|
|
WINDOWS_RUST_STABLE_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/windows:$GST_RS_IMG_TAG-main-$GST_RS_STABLE"
|
|
|
|
RUST_DOCS_FLAGS: "--cfg docsrs --extern-html-root-url=muldiv=https://docs.rs/muldiv/1.0.0/muldiv/ -Z unstable-options --generate-link-to-definition"
|
|
NAMESPACE: gstreamer
|
|
# format is <branch>=<name>
|
|
# the name is used in the URL
|
|
# latest release must be at the top
|
|
# (only relevant on main branch)
|
|
RELEASES:
|
|
0.22=0.22
|
|
|
|
stages:
|
|
- "test"
|
|
|
|
.macos:arm64:
|
|
image: "registry.freedesktop.org/gstreamer/cerbero/macos-arm64/14-sonoma:2023-10-25.2"
|
|
tags:
|
|
- 'gst-mac-arm'
|
|
|
|
.macos:arm64-stable:
|
|
extends: .macos:arm64
|
|
after_script:
|
|
- rm -rf target
|
|
|
|
before_script:
|
|
- CI=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
- (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> $HOME/.zprofile
|
|
- eval "$(/opt/homebrew/bin/brew shellenv)"
|
|
|
|
- CI=1 brew install pkg-config
|
|
|
|
- export GST_VERSION=1.24.2
|
|
- curl --proto '=https' --tlsv1.2 -o gstreamer-1.0-${GST_VERSION}-universal.pkg -sSf https://gstreamer.freedesktop.org/data/pkg/osx/${GST_VERSION}/gstreamer-1.0-${GST_VERSION}-universal.pkg
|
|
- curl --proto '=https' --tlsv1.2 -o gstreamer-1.0-devel-${GST_VERSION}-universal.pkg -sSf https://gstreamer.freedesktop.org/data/pkg/osx/${GST_VERSION}/gstreamer-1.0-devel-${GST_VERSION}-universal.pkg
|
|
- sudo installer -pkg gstreamer-1.0-${GST_VERSION}-universal.pkg -target /
|
|
- sudo installer -pkg gstreamer-1.0-devel-${GST_VERSION}-universal.pkg -target /
|
|
- export PKG_CONFIG_PATH=/Library/Frameworks/GStreamer.framework/Versions/1.0/lib/pkgconfig:$PKG_CONFIG_PATH
|
|
- export DYLD_FALLBACK_LIBRARY_PATH=/Library/Frameworks/GStreamer.framework/Versions/1.0/lib:$DYLD_FALLBACK_LIBRARY_PATH
|
|
|
|
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
- echo -e "[net]\ngit-fetch-with-cli = true" > $HOME/.cargo/config
|
|
|
|
- source "$HOME/.cargo/env"
|
|
|
|
test macos-arm64 stable:
|
|
extends: '.macos:arm64-stable'
|
|
stage: 'test'
|
|
#needs:
|
|
# - 'trigger'
|
|
script:
|
|
- rustc --version
|
|
|
|
# Package exclusion list:
|
|
# * examples & tutorials are handled separately.
|
|
# * gstreamer-editing-services-sys, gstreamer-rtp-sys ABI tests fail.
|
|
# * FIXME check some gl support?
|
|
- export EXCLUSION_LIST=(examples tutorials gstreamer-editing-services-sys gstreamer-gl \
|
|
gstreamer-gl-sys gstreamer-gl-egl gstreamer-gl-egl-sys gstreamer-gl-wayland \
|
|
gstreamer-gl-wayland-sys gstreamer-gl-x11 gstreamer-gl-x11-sys gstreamer-rtp-sys)
|
|
- export EXCLUDE_ARGS=(`for p in ${EXCLUSION_LIST[@]}; do printf " --exclude %s" $p; done`)
|
|
|
|
- cargo build --locked --workspace ${EXCLUDE_ARGS[@]} --all-targets --color=always
|
|
- G_DEBUG=fatal_warnings cargo test --locked --workspace ${EXCLUDE_ARGS[@]} --all-targets --color=always
|
|
|
|
# --all-features
|
|
- cargo build --locked --workspace ${EXCLUDE_ARGS[@]} --all-targets --all-features --color=always
|
|
- G_DEBUG=fatal_warnings cargo test --locked --workspace ${EXCLUDE_ARGS[@]} --all-targets --all-features --color=always
|
|
|
|
# --no-default-features
|
|
- cargo build --keep-going --locked --workspace ${EXCLUDE_ARGS[@]} --all-targets --no-default-features --color=always
|
|
- G_DEBUG=fatal_warnings cargo test --locked --workspace ${EXCLUDE_ARGS[@]} --all-targets --no-default-features --color=always
|
|
|
|
# examples
|
|
# Excluding anything gl, fd_allocator & d3d11videosink
|
|
- export EXAMPLE_FEATURES="rtsp-server gst-rtsp-server/v1_22 rtsp-server-record pango-cairo"
|
|
- EXAMPLE_FEATURES+=" overlay-composition allocators gst-play gst-player ges image cairo-rs"
|
|
- EXAMPLE_FEATURES+=" gst-video/v1_18"
|
|
- export INCLUSION_LIST=(appsink appsrc custom_events custom_meta decodebin debug_ringbuffer \
|
|
encodebin events iterator launch_glib_main launch transmux pad_probes play playbin player \
|
|
queries rtpfecclient rtpfecserver rtsp-server rtsp-server-subclass rtsp-server-custom-auth \
|
|
tagsetter toc futures glib-futures rtsp-server-record discoverer pango-cairo \
|
|
overlay-composition ges subclass video_converter thumbnail cairo_compositor \
|
|
audio_multichannel_interleave)
|
|
- export INCLUDE_ARGS=(`for p in ${INCLUSION_LIST[@]}; do printf " --bin %s" $p; done`)
|
|
- cargo build --locked --color=always -p examples ${INCLUDE_ARGS[@]} --features="${EXAMPLE_FEATURES}"
|
|
|
|
# tutorials
|
|
# - cargo build --locked --color=always -p tutorials --bins
|
|
- cargo build --keep-going --locked --color=always -p tutorials --bins
|