mirror of
https://gitlab.freedesktop.org/dabrain34/GstPipelineStudio.git
synced 2024-12-18 14:06:30 +00:00
287 lines
7.1 KiB
YAML
287 lines
7.1 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:
|
|
FDO_UPSTREAM_REPO: "dabrain34/GstPipelineStudio"
|
|
GNOME_RUNTIME_IMAGE: "quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master"
|
|
WINDOWS_RUST_STABLE_IMAGE: "$CI_REGISTRY_IMAGE/windows:$GST_RS_WIN_IMG_TAG"
|
|
WINDOWS_RUST_STABLE_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/windows:$GST_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: "2023-08-25.1"
|
|
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
|
|
|
|
.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"
|
|
GST_UPSTREAM_BRANCH: "1.22"
|
|
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", "DEFAULT_GST_BRANCH=$GST_UPSTREAM_BRANCH", "--build-arg", "RUST_VERSION=$RUST_VERSION")
|
|
- "& 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: !reference [variables, "WINDOWS_RUST_STABLE_IMAGE"]
|
|
RUST_UPSTREAM_IMAGE:
|
|
!reference [variables, "WINDOWS_RUST_STABLE_UPSTREAM_IMAGE"]
|
|
RUST_VERSION: !reference [variables, "GST_RS_STABLE"]
|
|
|
|
.msvc2019 build:
|
|
stage: test
|
|
tags:
|
|
- "docker"
|
|
- "windows"
|
|
- "2022"
|
|
|
|
windows installer stable:
|
|
needs:
|
|
- job: "windows rust docker stable"
|
|
artifacts: false
|
|
image: "$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"
|
|
|
|
rustfmt-clippy:
|
|
extends:
|
|
- .fedora
|
|
- .fdo.distribution-image@fedora
|
|
stage: lint
|
|
script:
|
|
- meson build
|
|
- cargo fmt --version
|
|
- cargo fmt -- --color=always --check
|
|
- 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
|
|
needs:
|
|
- job: "windows rust docker stable"
|
|
artifacts: false
|
|
tags:
|
|
- gst-macos-11.1
|
|
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
|
|
script:
|
|
# rust toolchain
|
|
- curl https://sh.rustup.rs -sSf | sh -s -- -y
|
|
- source $HOME/.cargo/env
|
|
# brew install
|
|
- /bin/bash -c "./installer/macos/brew_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
|
|
- 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
|