mirror of
https://gitlab.freedesktop.org/dabrain34/GstPipelineStudio.git
synced 2025-07-29 17:22:18 +00:00
The docker image is now build with an argument coming the images_templates.yml move gst and gtk to job Remove the build of gstreamer and gtk and build it during the job as macos job. Use gstreamer 1.26
300 lines
7.4 KiB
YAML
300 lines
7.4 KiB
YAML
include:
|
|
- project: "freedesktop/ci-templates" # the project to include from
|
|
ref: "34f4ade99434043f88e164933f570301fd18b125" # git ref of that project
|
|
file: "/templates/fedora.yml" # the actual file to include
|
|
- local: "ci/images_template.yml"
|
|
|
|
stages:
|
|
- prepare
|
|
- lint
|
|
- test
|
|
- release
|
|
- deploy
|
|
|
|
variables:
|
|
WINDOWS_AMD64_SUFFIX: "amd64/windows"
|
|
CI_GST_REGISTRY_IMAGE: "registry.freedesktop.org/gstreamer/gstreamer"
|
|
GST_WINDOWS_IMAGE: "$CI_GST_REGISTRY_IMAGE/$WINDOWS_AMD64_SUFFIX:$GST_WIN_IMG_TAG-$GST_UPSTREAM_BRANCH"
|
|
FDO_UPSTREAM_REPO: "dabrain34/GstPipelineStudio"
|
|
GNOME_RUNTIME_IMAGE: "quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master"
|
|
GPS_WINDOWS_RUST_STABLE_IMAGE: "$CI_REGISTRY_IMAGE/windows:$GPS_RS_WIN_IMG_TAG"
|
|
GPS_WINDOWS_RUST_STABLE_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/windows:$GPS_RS_WIN_IMG_TAG"
|
|
|
|
# Version and tag for our current container
|
|
.fedora:
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: "38"
|
|
# Update this to trigger a container rebuild
|
|
FDO_DISTRIBUTION_TAG: $GST_RS_FDO_IMG_TAG
|
|
before_script:
|
|
- source ./ci/env.sh
|
|
- mkdir .cargo && echo -e "[net]\ngit-fetch-with-cli = true" > .cargo/config
|
|
# If cargo exists assume we probably will want to update
|
|
# the lockfile
|
|
#- |
|
|
# if command -v cargo; then
|
|
# cargo generate-lockfile --color=always
|
|
# cargo update --color=always
|
|
# fi
|
|
|
|
build-fedora-container:
|
|
extends:
|
|
- .fedora # our template job above
|
|
- .fdo.container-build@fedora@x86_64 # the CI template
|
|
stage: prepare
|
|
variables:
|
|
# clang-devel: required by rust bindgen
|
|
FDO_DISTRIBUTION_PACKAGES: >-
|
|
gtk4-devel
|
|
clang-devel
|
|
gstreamer1-devel
|
|
gstreamer1-plugins-base-devel
|
|
gstreamer1-plugins-bad-free-devel
|
|
ninja-build
|
|
pkg-config
|
|
python3-devel
|
|
python3-pip
|
|
python3-setuptools
|
|
util-linux
|
|
xorg-x11-server-Xvfb
|
|
wget
|
|
git
|
|
flex
|
|
bison
|
|
FDO_DISTRIBUTION_EXEC: >-
|
|
ci/install-rust.sh stable &&
|
|
pip3 install meson &&
|
|
pip3 install pre-commit
|
|
|
|
.windows rust docker build:
|
|
stage: prepare
|
|
variables:
|
|
# Unlike the buildah/linux jobs, this file
|
|
# needs to be relative to windows-docker/ 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 windows-docker/
|
|
DOCKERFILE: "ci/windows-docker/Dockerfile"
|
|
|
|
tags:
|
|
- "windows"
|
|
- "shell"
|
|
- "2022"
|
|
script:
|
|
# We need to pass an array and to resolve the env vars, so we can't use a variable:
|
|
- $DOCKER_BUILD_ARGS = @("--build-arg", "RUST_VERSION=$GST_RS_STABLE", "--build-arg", "GST_WINDOWS_IMAGE=$GST_WINDOWS_IMAGE")
|
|
- "& ci/windows-docker/container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $RUST_IMAGE $RUST_UPSTREAM_IMAGE $DOCKERFILE"
|
|
- |
|
|
if (!($?)) {
|
|
echo "Failed to build the image"
|
|
Exit 1
|
|
}
|
|
|
|
windows rust docker stable:
|
|
extends: ".windows rust docker build"
|
|
variables:
|
|
RUST_IMAGE: $GPS_WINDOWS_RUST_STABLE_IMAGE
|
|
RUST_UPSTREAM_IMAGE: $GPS_WINDOWS_RUST_STABLE_UPSTREAM_IMAGE"]
|
|
|
|
.msvc2019 build:
|
|
stage: test
|
|
tags:
|
|
- "docker"
|
|
- "windows"
|
|
- "2022"
|
|
|
|
windows installer stable:
|
|
needs:
|
|
- job: "windows rust docker stable"
|
|
artifacts: false
|
|
image: "$GPS_WINDOWS_RUST_STABLE_IMAGE"
|
|
extends: ".msvc2019 build"
|
|
script:
|
|
- rustc --version
|
|
- git fetch --tags
|
|
- "& ./ci/build_gps.ps1"
|
|
- "& ./installer/wix/prepare_gstreamer.ps1"
|
|
- "& ./installer/wix/build_installer.ps1"
|
|
artifacts:
|
|
paths:
|
|
- installer/wix/*.msi
|
|
expire_in: 10 days
|
|
when: "manual"
|
|
|
|
pre-commit:
|
|
stage: "lint"
|
|
extends:
|
|
- .fedora
|
|
- .fdo.distribution-image@fedora
|
|
variables:
|
|
PRE_COMMIT_HOME: ${CI_PROJECT_DIR}/.cache/pre-commit
|
|
cache:
|
|
paths:
|
|
- ${PRE_COMMIT_HOME}
|
|
script:
|
|
- meson setup build
|
|
- pre-commit run --all-files
|
|
|
|
clippy:
|
|
extends:
|
|
- .fedora
|
|
- .fdo.distribution-image@fedora
|
|
stage: lint
|
|
script:
|
|
- meson build
|
|
- cargo clippy --version
|
|
- cargo clippy --color=always --all-targets -- -D warnings
|
|
|
|
windows installer release:
|
|
extends: "windows installer stable"
|
|
stage: release
|
|
only:
|
|
- flatpak
|
|
- tags
|
|
artifacts:
|
|
paths:
|
|
- installer/wix/*.msi
|
|
when: "always"
|
|
|
|
linux release:
|
|
extends:
|
|
- .fedora
|
|
- .fdo.distribution-image@fedora
|
|
stage: release
|
|
only:
|
|
- flatpak
|
|
- tags
|
|
script:
|
|
- meson builddir -Dbuildtype=release
|
|
- ninja -C builddir/ dist
|
|
artifacts:
|
|
paths:
|
|
- builddir/meson-dist/*
|
|
when: "always"
|
|
|
|
test-stable:
|
|
extends:
|
|
- .fedora
|
|
- .fdo.distribution-image@fedora
|
|
stage: test
|
|
script:
|
|
- meson build
|
|
- rustc --version
|
|
- cargo build --color=always --all-targets
|
|
- >
|
|
xvfb-run -a -s "-screen 0 1024x768x24"
|
|
cargo test --color=always
|
|
|
|
rustdoc:
|
|
extends:
|
|
- .fedora
|
|
- .fdo.distribution-image@fedora
|
|
stage: release
|
|
only:
|
|
- flatpak
|
|
- tags
|
|
variables:
|
|
RUSTDOCFLAGS: "-Dwarnings"
|
|
script:
|
|
- meson build
|
|
- rustdoc --version
|
|
- cargo doc --no-deps
|
|
|
|
dist-package:
|
|
extends:
|
|
- .fedora
|
|
- .fdo.distribution-image@fedora
|
|
stage: release
|
|
only:
|
|
- flatpak
|
|
script:
|
|
- meson build
|
|
- ninja -C build dist
|
|
|
|
flatpak:
|
|
image: $GNOME_RUNTIME_IMAGE
|
|
stage: test
|
|
variables:
|
|
MANIFEST_PATH: "build-aux/org.freedesktop.dabrain34.GstPipelineStudio.Devel.json"
|
|
APP_ID: "org.freedesktop.dabrain34.GstPipelineStudio.Devel"
|
|
BUNDLE: "gst-pipeline-studio-nightly.flatpak"
|
|
script:
|
|
- flatpak-builder app ${MANIFEST_PATH}
|
|
- flatpak build-export repo app
|
|
- flatpak build-bundle repo ${BUNDLE} ${APP_ID}
|
|
artifacts:
|
|
name: "Flatpak artifacts"
|
|
expose_as: "Get Flatpak bundle here"
|
|
when: "always"
|
|
paths:
|
|
- "${BUNDLE}"
|
|
expire_in: 14 days
|
|
cache:
|
|
key: "flatpak"
|
|
paths:
|
|
- .flatpak-builder/downloads/
|
|
- .flatpak-builder/git/
|
|
- target/
|
|
- target_test/
|
|
when: "manual"
|
|
|
|
macos installer stable:
|
|
stage: test
|
|
tags:
|
|
- gst-macos-13
|
|
before_script:
|
|
- pip3 install --upgrade pip
|
|
# Make sure meson is up to date
|
|
- pip3 install -U meson
|
|
# Need to install certificates for python
|
|
- pip3 install --upgrade certifi
|
|
# Another way to install certificates
|
|
- open /Applications/Python\ 3.8/Install\ Certificates.command
|
|
# Get ninja
|
|
- pip3 install -U ninja
|
|
# Get tomlib
|
|
- pip3 install -U tomli
|
|
script:
|
|
# rust toolchain
|
|
- curl https://sh.rustup.rs -sSf | sh -s -- -y
|
|
- source $HOME/.cargo/env
|
|
# brew install
|
|
- /bin/bash -c "./installer/macos/package_setup.sh"
|
|
- /bin/bash -c "./installer/macos/deploy_macos.sh"
|
|
artifacts:
|
|
name: "MacOS installer"
|
|
paths:
|
|
- installer/**/GstPipelineStudio*.dmg
|
|
- installer/**/GstPipelineStudio*.tar.gz
|
|
expire_in: 14 days
|
|
when: "manual"
|
|
|
|
macos installer release:
|
|
extends: "macos installer stable"
|
|
stage: release
|
|
only:
|
|
- flatpak
|
|
- tags
|
|
artifacts:
|
|
name: "MacOS installer"
|
|
paths:
|
|
- installer/**/GstPipelineStudio*.dmg
|
|
- installer/**/GstPipelineStudio*.tar.gz
|
|
when: "always"
|
|
|
|
pages:
|
|
image: ruby:2.7
|
|
stage: deploy
|
|
script:
|
|
- gem install bundler -v 2.4.22
|
|
- bundle install
|
|
- bundle exec jekyll build -d public
|
|
artifacts:
|
|
paths:
|
|
# The folder that contains the files to be exposed at the Page URL
|
|
- public
|
|
rules:
|
|
# This ensures that only pushes to the default branch will trigger
|
|
# a pages deploy
|
|
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
|