mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-10-06 01:12:40 +02:00
gitlab-ci: Reduce redundancy on Debian native jobs
* Move common things to the new .default section extensible for all jobs * Reorganize order of job elements to be way more consistent and rational: from general (pipeline/rules) to specific (job artifacts) in a liner way * The order of rules was changed to be a bit more easier to understand - Drops 'dependencies' which is redudant, and 'needs' have more options - Drop apt-cache which lost use and it is sometimes troublesome to cache + First try to boost the use of ccache in all build jobs, when possible + Fix the problem of non-failing jobs introduced by GNOME/gimp!1171
This commit is contained in:
239
.gitlab-ci.yml
239
.gitlab-ci.yml
@@ -37,6 +37,32 @@ stages:
|
||||
- distribution
|
||||
- analysis
|
||||
|
||||
# GitLab "default:" is buggy so let's use extensions and references
|
||||
.default:
|
||||
# Caching support
|
||||
variables:
|
||||
CCACHE_BASEDIR: "$CI_PROJECT_DIR"
|
||||
CCACHE_DIR: "$CI_PROJECT_DIR/_ccache"
|
||||
CC: "ccache clang"
|
||||
CXX: "ccache clang++"
|
||||
cache:
|
||||
key: $CI_JOB_NAME
|
||||
paths:
|
||||
- _ccache/
|
||||
# Universal variables (works in all OSes and archs)
|
||||
before_script:
|
||||
- export PATH="$GIMP_PREFIX/bin:$PATH"
|
||||
- gcc -print-multi-os-directory | grep . && LIB_DIR=$(gcc -print-multi-os-directory | sed 's/\.\.\///g') || LIB_DIR="lib"
|
||||
- gcc -print-multiarch | grep . && LIB_SUBDIR=$(echo $(gcc -print-multiarch)'/')
|
||||
- export PKG_CONFIG_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
|
||||
- export LD_LIBRARY_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
||||
- export XDG_DATA_DIRS="${GIMP_PREFIX}/share:/usr/share${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}"
|
||||
- export GI_TYPELIB_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}girepository-1.0${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}"
|
||||
# Common artifacts behavior
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
when: always
|
||||
|
||||
variables:
|
||||
GIT_DEPTH: "1"
|
||||
ARTIFACTS_SUFFIX: "-x64"
|
||||
@@ -47,11 +73,6 @@ variables:
|
||||
|
||||
image-debian-x64:
|
||||
rules:
|
||||
# On commits and merge requests.
|
||||
- if: '$CI_PIPELINE_SOURCE == "push"'
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
# On releases.
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
# Custom builds though web GUI, API or schedules.
|
||||
- if: '$GIMP_CI_MESON_CLANG != null'
|
||||
- if: '$GIMP_CI_MESON_GCC != null'
|
||||
@@ -60,13 +81,18 @@ image-debian-x64:
|
||||
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
|
||||
- if: '$GIMP_CI_SOURCES != null'
|
||||
- if: '$GIMP_CI_FLATPAK != null'
|
||||
# On merge requests and commits.
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
- if: '$CI_PIPELINE_SOURCE == "push"'
|
||||
# On releases.
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
stage: prepare
|
||||
variables:
|
||||
GIT_STRATEGY: none
|
||||
cache: {}
|
||||
image:
|
||||
name: gcr.io/kaniko-project/executor:debug
|
||||
entrypoint: [""]
|
||||
variables:
|
||||
GIT_STRATEGY: none
|
||||
cache: {}
|
||||
script:
|
||||
- export container=docker
|
||||
- mkdir -p /kaniko/.docker
|
||||
@@ -81,6 +107,8 @@ image-debian-x64:
|
||||
- echo "appstream
|
||||
at-spi2-core
|
||||
build-essential
|
||||
ccache
|
||||
clang
|
||||
cpio
|
||||
desktop-file-utils
|
||||
ffmpeg
|
||||
@@ -154,37 +182,11 @@ image-debian-x64:
|
||||
|
||||
## GNU/Linux 64-bit CIs (Debian bookworm) ##
|
||||
|
||||
deps-debian-x64:
|
||||
rules:
|
||||
# On commits and merge requests.
|
||||
- if: '$CI_PIPELINE_SOURCE == "push"'
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
# On releases.
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
# Custom builds though web GUI, API or schedules.
|
||||
- if: '$GIMP_CI_MESON_CLANG != null'
|
||||
- if: '$GIMP_CI_MESON_GCC != null'
|
||||
- if: '$GIMP_CI_RASTER_ICONS != null'
|
||||
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
|
||||
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
|
||||
- if: '$GIMP_CI_SOURCES != null'
|
||||
- if: '$GIMP_CI_FLATPAK != null'
|
||||
variables:
|
||||
CC: "clang"
|
||||
CXX: "clang++"
|
||||
.deps-debian-base:
|
||||
extends: .default
|
||||
needs: ["image-debian-x64"]
|
||||
stage: dependencies
|
||||
image: $CI_REGISTRY_IMAGE:build-debian-latest
|
||||
cache:
|
||||
paths:
|
||||
- apt-cache
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
expire_in: 2 hours
|
||||
when: always
|
||||
paths:
|
||||
- "_install${ARTIFACTS_SUFFIX}"
|
||||
- _babl/_build${ARTIFACTS_SUFFIX}
|
||||
- _gegl/_build${ARTIFACTS_SUFFIX}
|
||||
before_script:
|
||||
- if [ "$CI_COMMIT_TAG" != "" ]; then
|
||||
repo=https://gitlab.gnome.org/GNOME/babl.git;
|
||||
@@ -201,78 +203,92 @@ deps-debian-x64:
|
||||
fi
|
||||
- git clone $babl_branch --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/babl.git _babl
|
||||
- git clone $gegl_branch --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/gegl.git _gegl
|
||||
- export PATH="$GIMP_PREFIX/bin:$PATH"
|
||||
- gcc -print-multi-os-directory | grep . && LIB_DIR=$(gcc -print-multi-os-directory | sed 's/\.\.\///g') || LIB_DIR="lib"
|
||||
- gcc -print-multiarch | grep . && LIB_SUBDIR=$(echo $(gcc -print-multiarch)'/')
|
||||
- export PKG_CONFIG_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
|
||||
- export LD_LIBRARY_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
||||
- export XDG_DATA_DIRS="${GIMP_PREFIX}/share:/usr/share${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}"
|
||||
- export GI_TYPELIB_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}girepository-1.0${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}"
|
||||
# Universal variables
|
||||
- !reference [.default, before_script]
|
||||
- mkdir -p _ccache/
|
||||
script:
|
||||
- mkdir -p "$APT_CACHE"
|
||||
- apt-get install -y --no-install-recommends -o dir::cache::archives="$APT_CACHE"
|
||||
clang
|
||||
- mkdir _babl/_build${ARTIFACTS_SUFFIX} && cd _babl/_build${ARTIFACTS_SUFFIX}
|
||||
- meson setup .. -Dprefix="${GIMP_PREFIX}"
|
||||
- ninja && ninja install
|
||||
- ninja
|
||||
- ninja install
|
||||
- ccache --show-stats
|
||||
- mkdir ../../_gegl/_build${ARTIFACTS_SUFFIX} && cd ../../_gegl/_build${ARTIFACTS_SUFFIX}
|
||||
- meson setup .. -Dprefix="${GIMP_PREFIX}"
|
||||
- ninja && ninja install
|
||||
needs: ["image-debian-x64"]
|
||||
|
||||
.gimp-debian-base:
|
||||
stage: gimp
|
||||
image: $CI_REGISTRY_IMAGE:build-debian-latest
|
||||
dependencies:
|
||||
- deps-debian-x64
|
||||
cache:
|
||||
paths:
|
||||
- apt-cache
|
||||
- ninja
|
||||
- ninja install
|
||||
- ccache --show-stats
|
||||
artifacts:
|
||||
expire_in: 1 days
|
||||
when: always
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
expire_in: 2 hours
|
||||
paths:
|
||||
- "_build${ARTIFACTS_SUFFIX}"
|
||||
- "_install${ARTIFACTS_SUFFIX}"
|
||||
before_script:
|
||||
- export PATH="$GIMP_PREFIX/bin:$PATH"
|
||||
- gcc -print-multi-os-directory | grep . && LIB_DIR=$(gcc -print-multi-os-directory | sed 's/\.\.\///g') || LIB_DIR="lib"
|
||||
- gcc -print-multiarch | grep . && LIB_SUBDIR=$(echo $(gcc -print-multiarch)'/')
|
||||
- export PKG_CONFIG_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
|
||||
- export LD_LIBRARY_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
||||
- export XDG_DATA_DIRS="${GIMP_PREFIX}/share:/usr/share${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}"
|
||||
- export GI_TYPELIB_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}girepository-1.0${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}"
|
||||
- git submodule update --init
|
||||
needs: ["deps-debian-x64"]
|
||||
- _install${ARTIFACTS_SUFFIX}
|
||||
- _babl/_build${ARTIFACTS_SUFFIX}
|
||||
- _gegl/_build${ARTIFACTS_SUFFIX}
|
||||
|
||||
gimp-debian-x64:
|
||||
deps-debian-x64:
|
||||
extends: .deps-debian-base
|
||||
rules:
|
||||
# On commits and merge requests.
|
||||
- if: '$CI_PIPELINE_SOURCE == "push"'
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
# Custom builds though web GUI, API or schedules.
|
||||
- if: '$GIMP_CI_MESON_CLANG != null'
|
||||
- if: '$GIMP_CI_RASTER_ICONS != null'
|
||||
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
|
||||
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
|
||||
- if: '$GIMP_CI_SOURCES != null'
|
||||
- if: '$GIMP_CI_FLATPAK != null'
|
||||
# On merge requests and commits.
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
- if: '$CI_PIPELINE_SOURCE == "push"'
|
||||
# On releases.
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
|
||||
# GitLab "rules:variables:" is buggy so let's use jobs
|
||||
deps-debian-gcc:
|
||||
extends: .deps-debian-base
|
||||
rules:
|
||||
# Custom builds though web GUI, API or schedules.
|
||||
- if: '$GIMP_CI_MESON_GCC != null'
|
||||
variables:
|
||||
CC: "ccache gcc"
|
||||
CXX: "ccache gcc"
|
||||
|
||||
.gimp-debian-base:
|
||||
extends: .default
|
||||
needs: ["deps-debian-x64"]
|
||||
stage: gimp
|
||||
image: $CI_REGISTRY_IMAGE:build-debian-latest
|
||||
before_script:
|
||||
# Universal variables
|
||||
- !reference [.default, before_script]
|
||||
- mkdir -p _ccache/
|
||||
- git submodule update --init
|
||||
- mkdir -p _build${ARTIFACTS_SUFFIX} && cd _build${ARTIFACTS_SUFFIX}
|
||||
after_script:
|
||||
- ccache --show-stats
|
||||
artifacts:
|
||||
expire_in: 1 days
|
||||
paths:
|
||||
- "_install${ARTIFACTS_SUFFIX}"
|
||||
- "_build${ARTIFACTS_SUFFIX}"
|
||||
|
||||
gimp-debian-x64:
|
||||
extends: .gimp-debian-base
|
||||
rules:
|
||||
# Custom builds though web GUI, API or schedules.
|
||||
- if: '$GIMP_CI_MESON_CLANG != null'
|
||||
- if: '$GIMP_CI_CROSSROAD_WIN64 != null'
|
||||
- if: '$GIMP_CI_CROSSROAD_WIN32 != null'
|
||||
- if: '$GIMP_CI_SOURCES != null'
|
||||
extends: .gimp-debian-base
|
||||
variables:
|
||||
CC: "clang"
|
||||
CXX: "clang++"
|
||||
- if: '$GIMP_CI_FLATPAK != null'
|
||||
# On merge requests and commits.
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
- if: '$CI_PIPELINE_SOURCE == "push"'
|
||||
# On releases.
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
script:
|
||||
- mkdir -p "$APT_CACHE"
|
||||
- apt-get install -y --no-install-recommends -o dir::cache::archives="$APT_CACHE"
|
||||
clang
|
||||
- mkdir -p "_build${ARTIFACTS_SUFFIX}" && cd "_build${ARTIFACTS_SUFFIX}"
|
||||
- meson setup .. -Dprefix="${GIMP_PREFIX}"
|
||||
-Dgi-docgen=enabled
|
||||
-Dg-ir-doc=true
|
||||
- ninja && ninja test
|
||||
- ninja
|
||||
- ninja test
|
||||
# The src should not be changed by the build. If it is, something is
|
||||
# wrong. Let's print out the diff for debugging in such case, and
|
||||
# exit to fail the CI.
|
||||
@@ -280,40 +296,43 @@ gimp-debian-x64:
|
||||
git diff;
|
||||
exit 1;
|
||||
fi
|
||||
- ninja dist && ninja install
|
||||
- ninja dist
|
||||
- ninja install
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
when: always
|
||||
paths:
|
||||
- _install${ARTIFACTS_SUFFIX}/
|
||||
- _build${ARTIFACTS_SUFFIX}/config.h
|
||||
- _build${ARTIFACTS_SUFFIX}/meson-dist/
|
||||
- _build${ARTIFACTS_SUFFIX}/devel-docs/
|
||||
- _build${ARTIFACTS_SUFFIX}/build/flatpak/
|
||||
- _build${ARTIFACTS_SUFFIX}/meson-logs/
|
||||
reports:
|
||||
junit: "_build${ARTIFACTS_SUFFIX}/meson-logs/testlog.junit.xml"
|
||||
paths:
|
||||
- "_build${ARTIFACTS_SUFFIX}/config.h"
|
||||
- "_build${ARTIFACTS_SUFFIX}/meson-logs"
|
||||
- "_build${ARTIFACTS_SUFFIX}/meson-dist"
|
||||
- "_build${ARTIFACTS_SUFFIX}/devel-docs"
|
||||
- "_build${ARTIFACTS_SUFFIX}/build/flatpak/"
|
||||
- "_install${ARTIFACTS_SUFFIX}"
|
||||
|
||||
gimp-debian-gcc:
|
||||
extends: .gimp-debian-base
|
||||
rules:
|
||||
# Custom builds only (web GUI, API or schedules).
|
||||
- if: '$GIMP_CI_MESON_GCC != null'
|
||||
extends: .gimp-debian-base
|
||||
needs: ["deps-debian-gcc"]
|
||||
variables:
|
||||
CC: "ccache gcc"
|
||||
CXX: "ccache gcc"
|
||||
script:
|
||||
- mkdir -p _build${ARTIFACTS_SUFFIX} && cd _build${ARTIFACTS_SUFFIX}
|
||||
- meson setup .. -Dprefix="${GIMP_PREFIX}"
|
||||
- ninja && ninja test
|
||||
- ninja
|
||||
- ninja test
|
||||
|
||||
gimp-debian-raster-icons:
|
||||
extends: .gimp-debian-base
|
||||
rules:
|
||||
# Custom builds only (web GUI, API or schedules).
|
||||
- if: '$GIMP_CI_RASTER_ICONS != null'
|
||||
extends: .gimp-debian-base
|
||||
script:
|
||||
- mkdir -p _build${ARTIFACTS_SUFFIX} && cd _build${ARTIFACTS_SUFFIX}
|
||||
- meson setup .. -Dprefix="${GIMP_PREFIX}"
|
||||
-Dvector-icons=false
|
||||
- ninja && ninja test
|
||||
- ninja
|
||||
- ninja test
|
||||
|
||||
packaging-flatpak-x64:
|
||||
# See: https://gitlab.gnome.org/GNOME/Initiatives/-/wikis/DevOps-with-Flatpak
|
||||
@@ -639,6 +658,7 @@ packaging-win-x86-nightly:
|
||||
## WINDOWS Aarch64 CI (native MSYS2) ##
|
||||
|
||||
.win:
|
||||
extends: .default
|
||||
rules:
|
||||
# On releases.
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
@@ -649,17 +669,8 @@ packaging-win-x86-nightly:
|
||||
variables:
|
||||
BUILD_TYPE: "CI_NATIVE"
|
||||
CHERE_INVOKING: "yes"
|
||||
CCACHE_BASEDIR: "$CI_PROJECT_DIR"
|
||||
CCACHE_DIR: "$CI_PROJECT_DIR/_ccache"
|
||||
cache:
|
||||
key: $CI_JOB_NAME
|
||||
paths:
|
||||
- _ccache/
|
||||
before_script:
|
||||
- New-Item -Path .\_ccache -ItemType Directory -Force
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
when: always
|
||||
|
||||
.win-a64:
|
||||
extends: .win
|
||||
@@ -809,6 +820,8 @@ packaging-win-x64:
|
||||
- win32-ps
|
||||
variables:
|
||||
MSYSTEM: "MINGW32"
|
||||
CC: "ccache cc"
|
||||
CXX: "ccache c++"
|
||||
|
||||
deps-win-x86:
|
||||
extends: .win-x86
|
||||
@@ -923,8 +936,6 @@ dist-installer-weekly:
|
||||
- packaging-win-x64
|
||||
- packaging-win-x86
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
when: always
|
||||
expire_in: 1 week
|
||||
expose_as: 'Windows exe'
|
||||
paths:
|
||||
|
Reference in New Issue
Block a user