2c812550fa
By default, gitlab skips checking out of submodules. So far this didn't matter to us, as meson will initialize submodules as part of setup. It no longer does for the dist command however, and as we run it from a separate job where the submodule checkout isn't preserved, the job breaks with recent meson versions. Fix this by instructing gitlab to checkout the submodule for all jobs that need it. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2371>
291 lines
7.3 KiB
YAML
291 lines
7.3 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/34f4ade99434043f88e164933f570301fd18b125/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
|
|
- deploy
|
|
|
|
default:
|
|
# 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:
|
|
FDO_UPSTREAM_REPO: GNOME/gnome-shell
|
|
BUNDLE: "extensions-git.flatpak"
|
|
JS_LOG: "js-report.txt"
|
|
LINT_LOG: "eslint-report.xml"
|
|
LINT_MR_LOG: "eslint-mr-report.xml"
|
|
|
|
image: registry.gitlab.gnome.org/gnome/mutter/fedora/35:x86_64-2022-07-11.0
|
|
|
|
workflow:
|
|
rules:
|
|
- 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:35:
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: 35
|
|
FDO_DISTRIBUTION_TAG: '2022-01-18.0'
|
|
FDO_DISTRIBUTION_PACKAGES:
|
|
findutils
|
|
mozjs91-devel
|
|
nodejs
|
|
npm
|
|
meson
|
|
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 eslint-plugin-jsdoc &&
|
|
|
|
dnf group install -y 'Development Tools' \
|
|
'C Development Tools and Libraries' &&
|
|
|
|
./.gitlab-ci/install-meson-project.sh \
|
|
-Dman=false \
|
|
https://gitlab.gnome.org/GNOME/gnome-shell.git \
|
|
main \
|
|
subprojects/extensions-tool/ \
|
|
./generate-translations.sh &&
|
|
|
|
dnf clean all
|
|
|
|
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:35
|
|
stage: prep
|
|
|
|
js_check:
|
|
extends:
|
|
- .fdo.distribution-image@fedora
|
|
- .gnome-shell.fedora:35
|
|
stage: review
|
|
script:
|
|
- find js -name '*.js' $(printf "! -wholename %s " $(cat .jscheckignore)) -exec js91 -c '{}' ';' 2>&1 | tee $JS_LOG
|
|
- (! grep -q . $JS_LOG)
|
|
artifacts:
|
|
paths:
|
|
- ${JS_LOG}
|
|
when: on_failure
|
|
|
|
eslint:
|
|
extends:
|
|
- .fdo.distribution-image@fedora
|
|
- .gnome-shell.fedora:35
|
|
stage: review
|
|
script:
|
|
- export NODE_PATH=$(npm root -g)
|
|
- ./.gitlab-ci/run-eslint --output-file ${LINT_LOG} --format junit
|
|
artifacts:
|
|
reports:
|
|
junit: ${LINT_LOG}
|
|
when: always
|
|
|
|
eslint_mr:
|
|
extends:
|
|
- .fdo.distribution-image@fedora
|
|
- .gnome-shell.fedora:35
|
|
stage: review
|
|
script:
|
|
- export NODE_PATH=$(npm root -g)
|
|
- ./.gitlab-ci/run-eslint --output-file ${LINT_MR_LOG} --format junit
|
|
--remote ${CI_MERGE_REQUEST_PROJECT_URL}.git
|
|
--branch ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}
|
|
only:
|
|
- merge_requests
|
|
artifacts:
|
|
reports:
|
|
junit: ${LINT_MR_LOG}
|
|
when: always
|
|
|
|
potfile_c_check:
|
|
extends:
|
|
- .fdo.distribution-image@fedora
|
|
- .gnome-shell.fedora:35
|
|
stage: review
|
|
script:
|
|
- ./.gitlab-ci/check-potfiles.sh
|
|
|
|
potfile_js_check:
|
|
extends:
|
|
- .fdo.distribution-image@fedora
|
|
- .gnome-shell.fedora:35
|
|
stage: review
|
|
script:
|
|
- js91 -m .gitlab-ci/check-potfiles.js
|
|
|
|
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
|
|
- meson install -C mutter/build
|
|
script:
|
|
- meson . build -Dbuildtype=debugoptimized -Dman=false --werror
|
|
- meson compile -C build
|
|
- 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:
|
|
- meson install -C mutter/build
|
|
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:
|
|
- 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:
|
|
- 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'
|