gnome-shell/.gitlab-ci.yml
Sebastian Keller 80a37bcf53 js: Update for Gio/GioUnix split
GLib 2.79.2 split out the platform specific Gio APIs into a separate
GIRs, while still keeping a copy in the Gio GIR. gjs then added warnings
about the APIs being moved.

This bumps the Gio(Unix) version requirement to 2.79.2 and switches to
using the new GioUnix GIR.

See: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3892
See: https://gitlab.gnome.org/GNOME/gjs/-/merge_requests/918
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7539
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3288>
2024-04-29 16:48:07 +02:00

323 lines
8.2 KiB
YAML

include:
- remote: 'https://gitlab.gnome.org/GNOME/citemplates/raw/HEAD/flatpak/flatpak_ci_initiative.yml'
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/057b052e682d8e5a20c1eb2dd60d5b87d2b56856/templates/fedora.yml'
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/34f4ade99434043f88e164933f570301fd18b125/templates/ci-fairy.yml'
stages:
- pre_review
- prep
- review
- build
- test
- analyze
- docs
- deploy
default:
image: $MUTTER_CI_IMAGE
# Cancel jobs if newer commits are pushed to the branch
interruptible: true
# Auto-retry jobs in case of infra failures
retry:
max: 1
when:
- 'runner_system_failure'
- 'stuck_or_timeout_failure'
- 'scheduler_failure'
- 'api_failure'
variables:
MUTTER_CI_IMAGE: registry.gitlab.gnome.org/gnome/mutter/fedora/40:x86_64-2024-04-29.0
FDO_UPSTREAM_REPO: GNOME/gnome-shell
BUNDLE: "extensions-git.flatpak"
LINT_LOG: "eslint-report.xml"
LINT_MR_LOG: "eslint-mr-report.xml"
workflow:
rules:
- if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"'
when: never
- if: '$CI_MERGE_REQUEST_IID'
- if: '$CI_COMMIT_TAG'
- if: '$CI_COMMIT_BRANCH'
.pipeline_guard: &pipeline_guard
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_COMMIT_TAG'
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- if: '$CI_COMMIT_BRANCH =~ /^gnome-[0-9-]+$/'
- when: 'manual'
.gnome-shell.fedora:
variables:
FDO_DISTRIBUTION_VERSION: 40
FDO_DISTRIBUTION_TAG: '2024-02-23.0'
FDO_DISTRIBUTION_PACKAGES:
gjs
nodejs
npm
meson
git
'pkgconfig(gobject-introspection-1.0)'
'pkgconfig(gio-2.0)'
'pkgconfig(gio-unix-2.0)'
'pkgconfig(gnome-autoar-0)'
'pkgconfig(json-glib-1.0)'
FDO_DISTRIBUTION_EXEC: |
# For static analysis with eslint
npm install -g eslint@^8.0.0 eslint-plugin-jsdoc@^46.0.0 &&
./.gitlab-ci/install-meson-project.sh \
https://gitlab.gnome.org/fmuellner/gjs-ci-tools.git \
main &&
./.gitlab-ci/install-meson-project.sh \
--subdir subprojects/extensions-tool/ \
--prepare ./generate-translations.sh \
-Dman=false \
https://gitlab.gnome.org/GNOME/gnome-shell.git \
main
check_commit_log:
extends:
- .fdo.ci-fairy
stage: pre_review
variables:
GIT_DEPTH: "100"
script:
- if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ;
then
ci-fairy check-commits --junit-xml=commit-message-junit-report.xml ;
else
echo "Not a merge request" ;
fi
<<: *pipeline_guard
artifacts:
expire_in: 1 week
paths:
- commit-message-junit-report.xml
reports:
junit: commit-message-junit-report.xml
check-merge-request:
extends:
- .fdo.ci-fairy
stage: pre_review
script:
- if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ;
then
ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request-report.xml ;
else
echo "Not a merge request" ;
fi
<<: *pipeline_guard
artifacts:
expire_in: 1 week
paths:
- check-merge-request-report.xml
reports:
junit: check-merge-request-report.xml
build-fedora-container:
extends:
- .fdo.container-build@fedora@x86_64
- .gnome-shell.fedora
stage: prep
js_check:
extends:
- .fdo.distribution-image@fedora
- .gnome-shell.fedora
stage: review
script:
- gjs-check-syntax
artifacts:
reports:
junit: gjs-check-syntax.junit.xml
eslint:
extends:
- .fdo.distribution-image@fedora
- .gnome-shell.fedora
stage: review
script:
- export NODE_PATH=$(npm root -g)
- ./.gitlab-ci/run-eslint --output-file ${LINT_LOG} --format junit --stdout
artifacts:
reports:
junit: ${LINT_LOG}
when: always
eslint-doc:
extends:
- .fdo.distribution-image@fedora
- .gnome-shell.fedora
stage: review
script:
- export NODE_PATH=$(npm root -g)
- ./.gitlab-ci/eslint-coding-style.sh
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
changes:
- HACKING.md
- .eslintrc.yml
- lint/*
potfile_c_check:
extends:
- .fdo.distribution-image@fedora
- .gnome-shell.fedora
stage: review
script:
- ./.gitlab-ci/check-potfiles.sh
potfile_js_check:
extends:
- .fdo.distribution-image@fedora
- .gnome-shell.fedora
stage: review
script:
- gjs-check-potfiles
artifacts:
reports:
junit: gjs-check-potfiles.junit.xml
build:
stage: build
needs: ["check_commit_log"]
variables:
GIT_SUBMODULE_STRATEGY: normal
before_script:
- .gitlab-ci/checkout-mutter.sh
- meson mutter mutter/build --prefix=/usr
- sudo meson install -C mutter/build
script:
- meson setup . build -Dbuildtype=debugoptimized -Dman=false -Dgtk_doc=true --werror --fatal-meson-warnings
- meson compile -C build
- sudo meson install -C build
artifacts:
expire_in: 1 day
paths:
- mutter
- build
test:
stage: test
needs: ["build"]
variables:
GIT_SUBMODULE_STRATEGY: normal
XDG_RUNTIME_DIR: "$CI_PROJECT_DIR/runtime-dir"
NO_AT_BRIDGE: "1"
before_script:
- sudo meson install -C mutter/build
- mkdir -m 700 $XDG_RUNTIME_DIR
script:
- dbus-run-session -- xvfb-run meson test -C build --no-rebuild
artifacts:
expire_in: 1 day
paths:
- build/meson-logs/testlog.txt
reports:
junit: build/meson-logs/testlog.junit.xml
when: on_failure
test-coverity:
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $GNOME_SHELL_SCHEDULED_JOB == "coverity"'
when: always
- when: manual
needs: ["build"]
stage: analyze
allow_failure: true
variables:
GIT_SUBMODULE_STRATEGY: normal
before_script:
- sudo meson install -C mutter/build
script:
- .gitlab-ci/download-coverity-tarball.sh
- CC=clang meson coverity-build -Dman=false
- ./coverity/cov-analysis-linux64-*/bin/cov-build --fs-capture-search js --dir cov-int meson compile -C coverity-build
- tar czf cov-int.tar.gz cov-int
- curl https://scan.coverity.com/builds?project=GNOME+Shell
--form token=$COVERITY_TOKEN --form email=carlosg@gnome.org
--form file=@cov-int.tar.gz --form version="`git describe --tags`"
--form description="GitLab CI build"
cache:
key: coverity-tarball
paths:
- coverity
flatpak:
stage: build
needs: ["check_commit_log"]
variables:
SUBPROJECT: "subprojects/extensions-app"
# Your manifest path
MANIFEST_PATH: "$SUBPROJECT/build-aux/flatpak/org.gnome.Extensions.json"
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
FLATPAK_MODULE: "gnome-extensions-app"
APP_ID: "org.gnome.Extensions.Devel"
extends: .flatpak
nightly:
extends: '.publish_nightly'
dist:
variables:
XDG_RUNTIME_DIR: "$CI_PROJECT_DIR/runtime-dir"
NO_AT_BRIDGE: "1"
GIT_SUBMODULE_STRATEGY: normal
stage: deploy
needs: ["build"]
before_script:
- sudo meson install -C mutter/build
- mkdir -m 700 $XDG_RUNTIME_DIR
script:
- dbus-run-session xvfb-run meson dist -C build
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
changes:
- "**/meson.build"
- meson/*
dist-tarball:
extends: dist
artifacts:
expose_as: 'Get tarball here'
paths:
- build/meson-dist/$CI_PROJECT_NAME-$CI_COMMIT_TAG.tar.xz
rules:
- if: '$CI_COMMIT_TAG'
reference:
stage: docs
needs: ["build"]
script:
- mkdir -p reference/
- mv build/docs/reference/{shell/shell,st/st} reference/
artifacts:
paths:
- reference
pages:
stage: deploy
needs: ['reference']
script:
- mv reference/ public/
artifacts:
paths:
- public
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_NAMESPACE == "GNOME"'
build-toolbox:
image: quay.io/freedesktop.org/ci-templates:container-build-base-2021-07-29.0
stage: deploy
needs: []
script:
- .gitlab-ci/build-toolbox-image.sh $MUTTER_CI_IMAGE
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_NAMESPACE == "GNOME"'
- if: '$CI_COMMIT_BRANCH =~ /^gnome-[0-9-]+$/ && $CI_PROJECT_NAMESPACE == "GNOME"'