0334834a0f
In the future, the module will automate uploading the release tarball. We already use the CI pipeline to generate the tarball, so it's easy to hook up the module and provide some testing before the module goes into production. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/324>
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/6f86b8bcb0cd5168c32779c4fea9a893c4a0c046/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-02-23.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'
|