forked from mirrors/gstreamer-rs
258 lines
7.5 KiB
YAML
258 lines
7.5 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 thoses image:
|
|
# - new Rust stable version: update FDO_DISTRIBUTION_TAG
|
|
# - add dependencies: update FDO_DISTRIBUTION_PACKAGES and update FDO_DISTRIBUTION_TAG
|
|
# - update GStreamer version: update the tag in ci/install-gst.sh and update FDO_DISTRIBUTION_TAG
|
|
#
|
|
# Updating FDO_DISTRIBUTION_TAG is done by either:
|
|
# - 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 personnal 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 acda94e139030dc2caa058118956225e55bbec5f
|
|
|
|
include:
|
|
- project: 'freedesktop/ci-templates'
|
|
ref: *templates_sha
|
|
file: '/templates/debian.yml'
|
|
|
|
variables:
|
|
FDO_UPSTREAM_REPO: gstreamer/gstreamer-rs
|
|
|
|
stages:
|
|
- "prep"
|
|
- "lint"
|
|
- "test"
|
|
- "extras"
|
|
|
|
.debian:10:
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: 10
|
|
FDO_DISTRIBUTION_TAG: '$RUST_VERSION-2020-04-16.2'
|
|
# Only stuff inside the repo directory can be cached
|
|
# Override the CARGO_HOME variable to force its location
|
|
CARGO_HOME: "${CI_PROJECT_DIR}/.cargo_home"
|
|
before_script:
|
|
- source ./ci/env.sh
|
|
- mkdir .cargo && echo -e "[net]\ngit-fetch-with-cli = true" > .cargo/config
|
|
|
|
.debian:10-stable:
|
|
extends: .debian:10
|
|
variables:
|
|
RUST_VERSION: "stable"
|
|
|
|
.debian:10-1-40:
|
|
extends: .debian:10
|
|
variables:
|
|
RUST_VERSION: "1.40.0"
|
|
|
|
.debian:10-nightly:
|
|
extends: .debian:10
|
|
variables:
|
|
RUST_VERSION: "nightly"
|
|
|
|
.build-debian-container:
|
|
extends:
|
|
- .fdo.container-build@debian
|
|
stage: prep
|
|
variables:
|
|
FDO_DISTRIBUTION_PACKAGES: "build-essential curl liborc-0.4-dev libglib2.0-dev libxml2-dev libgtk-3-dev libegl1-mesa libgles2-mesa libgl1-mesa-dri libgl1-mesa-glx libwayland-egl1-mesa xz-utils libssl-dev git wget ca-certificates ninja-build python3-pip flex bison libglib2.0-dev"
|
|
FDO_DISTRIBUTION_EXEC: 'bash ci/install-gst.sh && bash ci/install-rust.sh $RUST_VERSION'
|
|
|
|
build-stable:
|
|
extends:
|
|
- .build-debian-container
|
|
- .debian:10-stable
|
|
|
|
build-1-40:
|
|
extends:
|
|
- .build-debian-container
|
|
- .debian:10-1-40
|
|
|
|
build-nightly:
|
|
extends:
|
|
- .build-debian-container
|
|
- .debian:10-nightly
|
|
|
|
update-nightly:
|
|
extends: build-nightly
|
|
only:
|
|
variables:
|
|
- $UPDATE_NIGHTLY == "1"
|
|
variables:
|
|
FDO_FORCE_REBUILD: 1
|
|
|
|
.dist-debian-container:
|
|
extends:
|
|
- .fdo.distribution-image@debian
|
|
cache:
|
|
key: "gst"
|
|
paths:
|
|
- "${CARGO_HOME}"
|
|
after_script:
|
|
- rm -rf target
|
|
|
|
.img-stable:
|
|
extends:
|
|
- .dist-debian-container
|
|
- .debian:10-stable
|
|
|
|
.img-1-40:
|
|
extends:
|
|
- .dist-debian-container
|
|
- .debian:10-1-40
|
|
|
|
.img-nightly:
|
|
extends:
|
|
- .dist-debian-container
|
|
- .debian:10-nightly
|
|
|
|
.cargo test:
|
|
stage: "test"
|
|
script:
|
|
- rustc --version
|
|
# First build and test all the crates with their relevant features
|
|
# Keep features in sync with below
|
|
- |
|
|
for crate in gstreamer*; do
|
|
if [ -n "$ALL_FEATURES" ]; then
|
|
if [ $crate = "gstreamer" ]; then
|
|
FEATURES=ser_de,v1_16
|
|
elif [ $crate = "gstreamer-gl" ]; then
|
|
FEATURES=egl,x11,wayland,v1_16
|
|
else
|
|
FEATURES=v1_16
|
|
fi
|
|
|
|
cargo build --color=always --manifest-path $crate/Cargo.toml --features=$FEATURES
|
|
G_DEBUG=fatal_warnings cargo test --color=always --manifest-path $crate/Cargo.toml --features=$FEATURES
|
|
else
|
|
cargo build --color=always --manifest-path $crate/Cargo.toml
|
|
G_DEBUG=fatal_warnings cargo test --color=always --manifest-path $crate/Cargo.toml
|
|
fi
|
|
done
|
|
|
|
# If we do a build with all features then also build the
|
|
# tutorials/examples with all features
|
|
- |
|
|
if [ -n "$ALL_FEATURES" ]; then
|
|
cargo build --color=always --manifest-path examples/Cargo.toml --bins --examples --all-features
|
|
cargo build --color=always --manifest-path tutorials/Cargo.toml --bins --examples --all-features
|
|
fi
|
|
|
|
test 1.40:
|
|
extends:
|
|
- '.cargo test'
|
|
- .img-1-40
|
|
|
|
test stable:
|
|
extends:
|
|
- '.cargo test'
|
|
- .img-stable
|
|
|
|
test stable all-features:
|
|
variables:
|
|
ALL_FEATURES: 'yes'
|
|
extends:
|
|
- '.cargo test'
|
|
- .img-stable
|
|
|
|
test nightly:
|
|
allow_failure: true
|
|
extends:
|
|
- '.cargo test'
|
|
- .img-nightly
|
|
|
|
test nightly all-features:
|
|
allow_failure: true
|
|
variables:
|
|
ALL_FEATURES: 'yes'
|
|
extends:
|
|
- '.cargo test'
|
|
- .img-nightly
|
|
|
|
rustfmt:
|
|
extends: .img-stable
|
|
stage: "lint"
|
|
script:
|
|
- cargo fmt --version
|
|
- cargo fmt -- --color=always --check
|
|
|
|
clippy:
|
|
extends: .img-stable
|
|
stage: 'extras'
|
|
script:
|
|
- cargo clippy --version
|
|
# Keep features in sync with above
|
|
- |
|
|
for crate in gstreamer*; do
|
|
if [ $crate = "gstreamer" ]; then
|
|
FEATURES=ser_de,v1_16
|
|
elif [ $crate = "gstreamer-gl" ]; then
|
|
FEATURES=egl,x11,wayland,v1_16
|
|
else
|
|
FEATURES=v1_16
|
|
fi
|
|
|
|
cargo clippy --color=always --manifest-path $crate/Cargo.toml --features=$FEATURES --all-targets -- -A clippy::redundant_pattern_matching -A clippy::single_match -A clippy::cast_lossless -A clippy::missing_safety_doc -D warnings
|
|
done
|
|
# And also run over all the examples/tutorials
|
|
- |
|
|
cargo clippy --color=always --manifest-path examples/Cargo.toml --all-targets --all-features -- -A clippy::redundant_pattern_matching -A clippy::single_match -A clippy::cast_lossless -A clippy::missing_safety_doc -D warnings
|
|
cargo clippy --color=always --manifest-path tutorials/Cargo.toml --all-targets --all-features -- -A clippy::redundant_pattern_matching -A clippy::single_match -A clippy::cast_lossless -A clippy::missing_safety_doc -D warnings
|
|
|
|
deny:
|
|
extends: .img-stable
|
|
stage: 'extras'
|
|
only:
|
|
- schedules
|
|
script:
|
|
- cargo deny check
|
|
|
|
gir-checks:
|
|
extends: .img-stable
|
|
stage: 'extras'
|
|
script:
|
|
- git clone --depth 1 https://github.com/gtk-rs/checker
|
|
- cd checker && echo '[workspace]' >> Cargo.toml
|
|
- cargo build --release
|
|
- |
|
|
cargo run --release -- \
|
|
--gir-file ../Gir_GstApp.toml ../gstreamer-app \
|
|
--gir-file ../Gir_GstAudio.toml ../gstreamer-audio/ \
|
|
--gir-file ../Gir_GstBase.toml ../gstreamer-base \
|
|
--gir-file ../Gir_GstCheck.toml ../gstreamer-check/ \
|
|
--gir-file ../Gir_GstEditingServices.toml ../gstreamer-editing-services/ \
|
|
--gir-file ../Gir_GstGL.toml ../gstreamer-gl/ \
|
|
--gir-file ../Gir_GstNet.toml ../gstreamer-net/ \
|
|
--gir-file ../Gir_GstPbutils.toml ../gstreamer-pbutils/ \
|
|
--gir-file ../Gir_GstPlayer.toml ../gstreamer-player/ \
|
|
--gir-file ../Gir_GstRtp.toml ../gstreamer-rtp/ \
|
|
--gir-file ../Gir_GstRtspServer.toml ../gstreamer-rtsp-server/ \
|
|
--gir-file ../Gir_GstRtsp.toml ../gstreamer-rtsp/ \
|
|
--gir-file ../Gir_GstSdp.toml ../gstreamer-sdp/ \
|
|
--gir-file ../Gir_Gst.toml ../gstreamer/ \
|
|
--gir-file ../Gir_GstVideo.toml ../gstreamer-video/ \
|
|
--gir-file ../Gir_GstWebRTC.toml ../gstreamer-webrtc/
|
|
- cd ..
|
|
- |
|
|
for crate in gstreamer*; do
|
|
echo '-->' $crate
|
|
(cd $crate && ../checker/check_init_asserts)
|
|
done
|
|
|
|
outdated:
|
|
extends: .img-stable
|
|
allow_failure: true
|
|
stage: 'extras'
|
|
only:
|
|
- schedules
|
|
script:
|
|
- cargo outdated --root-deps-only --exit-code 1 -v
|