ab52ce4591
Besides dropping its GTK dependency (which doesn't affect us), GWeather 4.0 replaces its own timezone type with GTimeZone. It's easy enough to adjust to that, so port over to the new version. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2083>
289 lines
7.3 KiB
YAML
289 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/bbe5232986c9b98eb1efe62484e07216f7d1a4df/templates/fedora.yml'
|
|
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/bbe5232986c9b98eb1efe62484e07216f7d1a4df/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-01-05.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:34:
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: 34
|
|
FDO_DISTRIBUTION_TAG: '2021-08-12.0'
|
|
FDO_DISTRIBUTION_PACKAGES: >
|
|
findutils mozjs78-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 \
|
|
3.38.0 \
|
|
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:34
|
|
stage: prep
|
|
|
|
js_check:
|
|
extends:
|
|
- .fdo.distribution-image@fedora
|
|
- .gnome-shell.fedora:34
|
|
stage: review
|
|
script:
|
|
- find js -name '*.js' $(printf "! -wholename %s " $(cat .jscheckignore)) -exec js78 -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:34
|
|
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:34
|
|
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:34
|
|
stage: review
|
|
script:
|
|
- ./.gitlab-ci/check-potfiles.sh
|
|
|
|
potfile_js_check:
|
|
extends:
|
|
- .fdo.distribution-image@fedora
|
|
- .gnome-shell.fedora:34
|
|
stage: review
|
|
script:
|
|
- js78 -m .gitlab-ci/check-potfiles.js
|
|
|
|
no_template_check:
|
|
extends:
|
|
- .fdo.distribution-image@fedora
|
|
- .gnome-shell.fedora:34
|
|
stage: review
|
|
script:
|
|
- ./.gitlab-ci/check-template-strings.sh
|
|
|
|
build:
|
|
stage: build
|
|
needs: ["check_commit_log"]
|
|
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:
|
|
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
|
|
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'
|
|
variables:
|
|
BUNDLES: '$BUNDLE'
|
|
|
|
dist:
|
|
variables:
|
|
XDG_RUNTIME_DIR: "$CI_PROJECT_DIR/runtime-dir"
|
|
NO_AT_BRIDGE: "1"
|
|
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'
|