[gimp] gitlab-ci: reorganize pipeline rules.
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] gitlab-ci: reorganize pipeline rules.
- Date: Mon, 17 May 2021 12:36:19 +0000 (UTC)
commit 5a366ee0d2a9b1e7824de4ef36221b7d0850f493
Author: Jehan <jehan girinstud io>
Date: Mon May 17 14:34:29 2021 +0200
gitlab-ci: reorganize pipeline rules.
The goal is to make it easier to understand which pipeline is run when,
for future maintenance, and also to make it easy to trigger a specific
pipeline through Gitlab pipeline interface.
.gitlab-ci.yml | 136 +++++++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 108 insertions(+), 28 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 127ec6aefd..3209e88304 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,12 +1,27 @@
-# Default commit CI ($CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE != "schedule"):
+# Default commit CI should only run the following pipelines:
# - Linux autotools and meson (base & fast)
-# - Win64 crossbuilds (base & fast)
-# Scheduled CI ($CI_PIPELINE_SOURCE == "schedule"):
+# - Win64 crossbuild (base & fast)
+# Scheduled CI ($CI_PIPELINE_SOURCE == "schedule") will run regularly:
# - Win 32/64 native builds (base but slow)
# - Win32 crossbuilds (rare usefulness)
# - Linux CLang (rare usefulness)
-# Release ($CI_COMMIT_TAG != null):
+# - cppcheck (static code analysis)
+# Releases ($CI_COMMIT_TAG != null) should run only:
# - Linux autotools (distcheck source tarball)
+# - Win 32/64 native builds (Windows installer creation)
+#
+# To force step-specific pipelines without waiting for commits and/or
+# pipelines, these are the variable you should set:
+# - GIMP_CI_AUTOTOOLS: trigger the autotools/gcc build.
+# - GIMP_CI_MESON_GCC: trigger the meson/gcc build.
+# - GIMP_CI_MESON_CLANG: trigger the meson/clang build.
+# - GIMP_CI_CROSSROAD_WIN32: trigger the crossroad/meson build for Win 32-bit.
+# - GIMP_CI_CROSSROAD_WIN64: trigger the crossroad/meson build for Win 64-bit.
+# - GIMP_CI_MSYS2_WIN32: trigger the native MSYS2 build for Win 32-bit.
+# - GIMP_CI_MSYS2_WIN64: trigger the native MSYS2 build for Win 64-bit.
+# - GIMP_CI_WIN_INSTALLER: trigger both native MSYS2 builds then creates Windows installer.
+# - GIMP_CI_SOURCES: trigger the autotools/gcc build and the source tarball job.
+# - GIMP_CI_CPPCHECK: trigger cppcheck static analysis.
image: debian:testing
@@ -27,8 +42,15 @@ variables:
build-image:
rules:
- - if: '$CI_PIPELINE_SOURCE != "schedule"'
- - if: '$SCHEDULE_CLANG != null'
+ # On commits.
+ - if: '$CI_PIPELINE_SOURCE == "push"'
+ # On releases.
+ - if: '$CI_COMMIT_TAG != null'
+ # Custom builds though web GUI, API or schedules.
+ - if: '$GIMP_CI_AUTOTOOLS != null'
+ - if: '$GIMP_CI_SOURCES != null'
+ - if: '$GIMP_CI_MESON_GCC != null'
+ - if: '$GIMP_CI_MESON_CLANG != null'
stage: prepare
variables:
GIT_STRATEGY: none
@@ -49,7 +71,10 @@ build-image:
build-image-win64:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE != "schedule"'
+ # On commits except tags.
+ - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
+ # Custom builds though web GUI, API or schedules.
+ - if: '$GIMP_CI_CROSSROAD_WIN64 != null'
stage: prepare
variables:
GIT_STRATEGY: none
@@ -70,7 +95,8 @@ build-image-win64:
build-image-win32:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_WIN32 != null'
+ # Custom builds only (web GUI, API or schedules).
+ - if: '$GIMP_CI_CROSSROAD_WIN32 != null'
stage: prepare
variables:
GIT_STRATEGY: none
@@ -93,8 +119,15 @@ build-image-win32:
deps-debian:
rules:
- - if: '$CI_PIPELINE_SOURCE != "schedule"'
- - if: '$SCHEDULE_CLANG != null'
+ # On commits.
+ - if: '$CI_PIPELINE_SOURCE == "push"'
+ # On releases.
+ - if: '$CI_COMMIT_TAG != null'
+ # Custom builds though web GUI, API or schedules.
+ - if: '$GIMP_CI_AUTOTOOLS != null'
+ - if: '$GIMP_CI_SOURCES != null'
+ - if: '$GIMP_CI_MESON_GCC != null'
+ - if: '$GIMP_CI_MESON_CLANG != null'
stage: dependencies
image: $CI_REGISTRY_IMAGE:build-debian-latest
cache:
@@ -152,8 +185,14 @@ deps-debian:
needs: ["deps-debian"]
gimp-distcheck-debian:
- except:
- - schedules
+ rules:
+ # On commits.
+ - if: '$CI_PIPELINE_SOURCE == "push"'
+ # On releases.
+ - if: '$CI_COMMIT_TAG != null'
+ # Custom builds though web GUI, API or schedules.
+ - if: '$GIMP_CI_AUTOTOOLS != null'
+ - if: '$GIMP_CI_SOURCES != null'
extends: .gimp-debian-base
script:
- mkdir _build
@@ -168,7 +207,10 @@ gimp-distcheck-debian:
gimp-meson-debian:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE != "schedule"'
+ # On commits except tags.
+ - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
+ # Custom builds though web GUI, API or schedules.
+ - if: '$GIMP_CI_MESON_GCC != null'
extends: .gimp-debian-base
script:
- meson _build
@@ -178,7 +220,8 @@ gimp-meson-debian:
gimp-clang-debian:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_CLANG != null'
+ # Custom builds only (web GUI, API or schedules).
+ - if: '$GIMP_CI_MESON_CLANG != null'
extends: .gimp-debian-base
variables:
CC: "clang"
@@ -196,7 +239,11 @@ gimp-clang-debian:
deps-win64-native:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_NATIVE_WIN64 != null'
+ # On releases.
+ - if: '$CI_COMMIT_TAG != null'
+ # Custom builds though web GUI, API or schedules.
+ - if: '$GIMP_CI_MSYS2_WIN64 != null'
+ - if: '$GIMP_CI_WIN_INSTALLER != null'
stage: dependencies
variables:
MSYSTEM: "MINGW64"
@@ -217,7 +264,11 @@ deps-win64-native:
gimp-win64-native:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_NATIVE_WIN64 != null'
+ # On releases.
+ - if: '$CI_COMMIT_TAG != null'
+ # Custom builds though web GUI, API or schedules.
+ - if: '$GIMP_CI_MSYS2_WIN64 != null'
+ - if: '$GIMP_CI_WIN_INSTALLER != null'
stage: gimp
variables:
MSYSTEM: "MINGW64"
@@ -243,7 +294,11 @@ gimp-win64-native:
deps-win32-native:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_NATIVE_WIN32 != null'
+ # On releases.
+ - if: '$CI_COMMIT_TAG != null'
+ # Custom builds though web GUI, API or schedules.
+ - if: '$GIMP_CI_MSYS2_WIN32 != null'
+ - if: '$GIMP_CI_WIN_INSTALLER != null'
stage: dependencies
variables:
MSYSTEM: "MINGW32"
@@ -263,7 +318,11 @@ deps-win32-native:
gimp-win32-native:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_NATIVE_WIN32 != null'
+ # On releases.
+ - if: '$CI_COMMIT_TAG != null'
+ # Custom builds though web GUI, API or schedules.
+ - if: '$GIMP_CI_MSYS2_WIN32 != null'
+ - if: '$GIMP_CI_WIN_INSTALLER != null'
stage: gimp
variables:
MSYSTEM: "MINGW32"
@@ -288,7 +347,10 @@ gimp-win32-native:
deps-win64:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE != "schedule"'
+ # On commits except tags.
+ - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
+ # Custom builds though web GUI, API or schedules.
+ - if: '$GIMP_CI_CROSSROAD_WIN64 != null'
stage: dependencies
image: $CI_REGISTRY_IMAGE:build-win64-latest
variables:
@@ -321,7 +383,10 @@ deps-win64:
gimp-win64:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE != "schedule"'
+ # On commits except tags.
+ - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
+ # Custom builds though web GUI, API or schedules.
+ - if: '$GIMP_CI_CROSSROAD_WIN64 != null'
stage: gimp
image: $CI_REGISTRY_IMAGE:build-win64-latest
dependencies:
@@ -354,7 +419,8 @@ gimp-win64:
deps-win32:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_WIN32 != null'
+ # Custom builds only (web GUI, API or schedules).
+ - if: '$GIMP_CI_CROSSROAD_WIN32 != null'
stage: dependencies
image: $CI_REGISTRY_IMAGE:build-win32-latest
variables:
@@ -384,7 +450,8 @@ deps-win32:
gimp-win32:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_WIN32 != null'
+ # Custom builds only (web GUI, API or schedules).
+ - if: '$GIMP_CI_CROSSROAD_WIN32 != null'
stage: gimp
image: $CI_REGISTRY_IMAGE:build-win32-latest
dependencies:
@@ -415,7 +482,8 @@ gimp-win32:
cppcheck:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_CPPCHECK != null'
+ # Custom builds only (web GUI, API or schedules).
+ - if: '$GIMP_CI_CPPCHECK != null'
stage: analysis
before_script:
- apt-get update
@@ -437,7 +505,10 @@ cppcheck:
win-installer-nightly:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_NATIVE_WIN64 != null &&
$SCHEDULE_NATIVE_WIN32 != null'
+ # On releases.
+ - if: '$CI_COMMIT_TAG != null'
+ # Custom builds though web GUI, API or schedules.
+ - if: '$GIMP_CI_WIN_INSTALLER != null'
variables:
CHERE_INVOKING: "yes"
tags:
@@ -460,8 +531,13 @@ win-installer-nightly:
needs: ["gimp-win32-native", "gimp-win64-native"]
sources:
- except:
- - schedules
+ rules:
+ # On commits.
+ - if: '$CI_PIPELINE_SOURCE == "push"'
+ # On releases.
+ - if: '$CI_COMMIT_TAG != null'
+ # Custom builds though web GUI, API or schedules.
+ - if: '$GIMP_CI_SOURCES != null'
stage: distribution
dependencies:
- gimp-distcheck-debian
@@ -482,7 +558,10 @@ sources:
win64-nightly:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE != "schedule"'
+ # On commits except tags.
+ - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
+ # Custom builds though web GUI, API or schedules.
+ - if: '$GIMP_CI_CROSSROAD_WIN64 != null'
stage: distribution
dependencies:
- gimp-win64
@@ -559,7 +638,8 @@ win64-nightly:
win32-nightly:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_WIN32 != null'
+ # Custom builds only (web GUI, API or schedules).
+ - if: '$GIMP_CI_CROSSROAD_WIN32 != null'
stage: distribution
dependencies:
- gimp-win32
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]