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 variables: FDO_UPSTREAM_REPO: "dabrain34/GstPipelineStudio" GNOME_RUNTIME_IMAGE: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-44' 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" # 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.0" 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: - 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' 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-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'