201 lines
4.4 KiB
YAML
201 lines
4.4 KiB
YAML
# SPDX-FileCopyrightText: 2017 Florian Müllner <fmuellner@gnome.org>
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
include:
|
|
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/bbe5232986c9b98eb1efe62484e07216f7d1a4df/templates/fedora.yml'
|
|
- remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/bc70242ffb8402243e934659ecc1a2d1c89eca2b/templates/ci-fairy.yml"
|
|
- project: 'Infrastructure/openshift-images/gnome-release-service'
|
|
file: '/ci-templates/release-module.yml'
|
|
|
|
stages:
|
|
- pre_review
|
|
- prepare
|
|
- review
|
|
- build
|
|
- deploy
|
|
|
|
default:
|
|
image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/40:2024-07-11.0
|
|
# 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-extensions
|
|
LINT_LOG: "eslint-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'
|
|
|
|
.prereview_req: &prereview_req
|
|
needs:
|
|
- check_commit_log
|
|
- check-merge-request
|
|
|
|
check_commit_log:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
stage: pre_review
|
|
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
|
|
|
|
check-reuse:
|
|
stage: pre_review
|
|
image:
|
|
name: fsfe/reuse:latest
|
|
entrypoint: [""]
|
|
script:
|
|
- reuse lint
|
|
|
|
js_check:
|
|
stage: review
|
|
<<: *prereview_req
|
|
script:
|
|
- gjs-check-syntax
|
|
|
|
eslint:
|
|
stage: review
|
|
<<: *prereview_req
|
|
script:
|
|
- export NODE_PATH=$(npm root -g)
|
|
- ./.gitlab-ci/run-eslint --output-file ${LINT_LOG} --format junit --stdout
|
|
artifacts:
|
|
paths:
|
|
- ${LINT_LOG}
|
|
reports:
|
|
junit: ${LINT_LOG}
|
|
|
|
potfile_js_check:
|
|
stage: review
|
|
<<: *prereview_req
|
|
script:
|
|
- gjs-check-potfiles
|
|
artifacts:
|
|
reports:
|
|
junit: gjs-check-potfiles.junit.xml
|
|
|
|
build-bundles:
|
|
stage: build
|
|
<<: *prereview_req
|
|
script:
|
|
- ./export-zips.sh
|
|
artifacts:
|
|
name: 'Extension bundles'
|
|
expose_as: 'Get Extension bundles here'
|
|
paths:
|
|
- zip-files/
|
|
|
|
fedora-build:
|
|
stage: build
|
|
<<: *prereview_req
|
|
script:
|
|
- meson setup build --werror -Dextension_set=all -Dclassic_mode=true
|
|
- meson compile -C build
|
|
- meson test -C build
|
|
- meson install -C build
|
|
artifacts:
|
|
paths:
|
|
- build
|
|
|
|
fedora-distinfo:
|
|
stage: deploy
|
|
needs:
|
|
- fedora-build
|
|
script:
|
|
- .gitlab-ci/export-artifact-path build > dist.env
|
|
artifacts:
|
|
reports:
|
|
dotenv: dist.env
|
|
paths:
|
|
- build
|
|
- dist.env
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG'
|
|
|
|
fedora-dist:
|
|
stage: deploy
|
|
needs:
|
|
- fedora-build
|
|
variables:
|
|
GIT_SUBMODULE_STRATEGY: normal
|
|
script:
|
|
- meson dist -C build
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
changes:
|
|
- "**/meson.build"
|
|
- meson/*
|
|
|
|
fedora-dist-tarball:
|
|
extends: fedora-dist
|
|
needs:
|
|
- fedora-distinfo
|
|
artifacts:
|
|
expose_as: 'Get tarball here'
|
|
paths:
|
|
- $TARBALL_ARTIFACT_PATH
|
|
reports:
|
|
dotenv: dist.env
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG'
|
|
|
|
release-module:
|
|
stage: deploy
|
|
needs:
|
|
- fedora-dist-tarball
|
|
extends: .release-module
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG'
|