gitlab-ci: Reduce redundancy on Windows native jobs
This commit uses definitions and references to reduce repetition of CI code. Some people (like the GitLab devs?) prefer (almost imposes) this to be done in multiple .yml's using 'worfklow:' but this makes the CI way more complicated and very slow to read. So, let's just keep simple in one human readable file. --- Other changes are: - The custom native arch pipelines now they always generate a .zip package. This helps to ensure that everything is in place and facilitate testing; - The pacman update (-Syyuu) was removed since it is auto done by runners; - The ccache config was moved to .yml. This does NOT affect local builds since meson saves ccache by default for user in '%LocalAppData%/ccache'.
This commit is contained in:
parent
702d5e1e80
commit
a22393a67e
3 changed files with 90 additions and 188 deletions
258
.gitlab-ci.yml
258
.gitlab-ci.yml
|
|
@ -19,9 +19,9 @@
|
|||
# - GIMP_CI_MSYS2_WIN_AARCH64: trigger the native MSYS2 build for Win Aarch64.
|
||||
# - GIMP_CI_MSYS2_WIN64: trigger the native MSYS2 build for Win 64-bit.
|
||||
# - GIMP_CI_MSYS2_WIN32: trigger the native MSYS2 build for Win 32-bit.
|
||||
# - GIMP_CI_SOURCES: trigger the Debian build and the source tarball job.
|
||||
# - GIMP_CI_FLATPAK: trigger the (normally) weekly flatpak build and publishing.
|
||||
# - GIMP_CI_WIN_INSTALLER: trigger all native MSYS2 builds then creates Inno Windows installer.
|
||||
# - GIMP_CI_SOURCES: trigger the Debian gcc build and the source tarball job.
|
||||
# - GIMP_CI_CPPCHECK: trigger cppcheck static analysis.
|
||||
|
||||
|
||||
|
|
@ -638,73 +638,72 @@ packaging-win-x86-nightly:
|
|||
|
||||
## WINDOWS Aarch64 CI (native MSYS2) ##
|
||||
|
||||
deps-win-a64:
|
||||
.win:
|
||||
rules:
|
||||
# On releases.
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
# Custom builds though web GUI, API or schedules.
|
||||
- if: '$GIMP_CI_MSYS2_WIN_AARCH64 != null'
|
||||
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
||||
# Merge requests with appropriate label.
|
||||
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
||||
stage: dependencies
|
||||
variables:
|
||||
BUILD_TYPE: "CI_NATIVE"
|
||||
MSYSTEM: "CLANGARM64"
|
||||
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
|
||||
rules:
|
||||
# Custom builds though web GUI, API or schedules.
|
||||
- if: '$GIMP_CI_MSYS2_WIN_AARCH64 != null'
|
||||
tags:
|
||||
- windows-aarch64
|
||||
variables:
|
||||
MSYSTEM: "CLANGARM64"
|
||||
before_script:
|
||||
# C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
||||
script:
|
||||
# Verification to prevent the job from failing because stuck pacman (ARM only),
|
||||
# since our runner keeps the status of the MSYS2 installation between jobs
|
||||
# Verification to prevent the job from failing because stuck pacman (ARM only)
|
||||
- $stuck = Test-Path -Path "C:\msys64\var\lib\pacman\db.lck" -PathType Leaf
|
||||
- if ($stuck -eq "True") {
|
||||
Remove-Item -Force -Path "C:\msys64\var\lib\pacman\db.lck";
|
||||
Write-Output "Cleaned previous stuck pacman" }
|
||||
- taskkill /F /FI "MODULES eq msys-2.0.dll"
|
||||
- Start-Job -ScriptBlock{sleep 90; taskkill /t /F /IM "pacman.exe"}
|
||||
|
||||
deps-win-a64:
|
||||
extends: .win-a64
|
||||
# GitLab don't support extending 'rules'
|
||||
rules:
|
||||
- !reference [.win, rules]
|
||||
- !reference [.win-a64, rules]
|
||||
stage: dependencies
|
||||
script:
|
||||
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/1_build-deps-msys2.sh"
|
||||
retry: 2
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
when: always
|
||||
expire_in: 2 hours
|
||||
paths:
|
||||
- _install-a64
|
||||
needs: []
|
||||
|
||||
gimp-win-a64:
|
||||
extends: .win-a64
|
||||
# GitLab don't support extending 'rules'
|
||||
rules:
|
||||
# On releases.
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
# Custom builds though web GUI, API or schedules.
|
||||
- if: '$GIMP_CI_MSYS2_WIN_AARCH64 != null'
|
||||
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
||||
# Merge requests with appropriate label.
|
||||
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
||||
- !reference [.win, rules]
|
||||
- !reference [.win-a64, rules]
|
||||
stage: gimp
|
||||
variables:
|
||||
BUILD_TYPE: "CI_NATIVE"
|
||||
MSYSTEM: "CLANGARM64"
|
||||
CHERE_INVOKING: "yes"
|
||||
tags:
|
||||
- windows-aarch64
|
||||
before_script:
|
||||
# C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
||||
script:
|
||||
- $stuck = Test-Path -Path "C:\msys64\var\lib\pacman\db.lck" -PathType Leaf
|
||||
- if ($stuck -eq "True") {
|
||||
Remove-Item -Force -Path "C:\msys64\var\lib\pacman\db.lck";
|
||||
Write-Output "Cleaned previous stuck pacman" }
|
||||
- taskkill /F /FI "MODULES eq msys-2.0.dll"
|
||||
- Start-Job -ScriptBlock{sleep 90; taskkill /t /F /IM "pacman.exe"}
|
||||
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/2_build-gimp-msys2.sh"
|
||||
retry: 2
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
when: always
|
||||
expire_in: 1 day
|
||||
paths:
|
||||
- _install-a64
|
||||
|
|
@ -712,42 +711,21 @@ gimp-win-a64:
|
|||
- _build-a64/meson-*/
|
||||
# Needed by 4_dist-gimp-inno.ps1 in dist-installer-weekly
|
||||
- _build-a64/config.h
|
||||
cache:
|
||||
paths:
|
||||
- _ccache/
|
||||
needs: ["deps-win-a64"]
|
||||
|
||||
packaging-win-a64:
|
||||
extends: .win-a64
|
||||
# GitLab don't support extending 'rules'
|
||||
rules:
|
||||
# On releases.
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
# Custom builds though web GUI, API or schedules.
|
||||
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
||||
# Merge requests with appropriate label.
|
||||
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
||||
- !reference [.win, rules]
|
||||
- !reference [.win-a64, rules]
|
||||
stage: packaging
|
||||
variables:
|
||||
BUILD_TYPE: "CI_NATIVE"
|
||||
MSYSTEM: "CLANGARM64"
|
||||
CHERE_INVOKING: "yes"
|
||||
tags:
|
||||
- windows-aarch64
|
||||
before_script:
|
||||
# C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
||||
cache: []
|
||||
script:
|
||||
- $stuck = Test-Path -Path "C:\msys64\var\lib\pacman\db.lck" -PathType Leaf
|
||||
- if ($stuck -eq "True") {
|
||||
Remove-Item -Force -Path "C:\msys64\var\lib\pacman\db.lck";
|
||||
Write-Output "Cleaned previous stuck pacman" }
|
||||
- taskkill /F /FI "MODULES eq msys-2.0.dll"
|
||||
- Start-Job -ScriptBlock{sleep 90; taskkill /t /F /IM "pacman.exe"}
|
||||
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/3_package-gimp-uni_base.sh"
|
||||
- cd gimp-a64
|
||||
- C:\msys64\usr\bin\bash -lc "bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh"
|
||||
retry: 2
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
when: always
|
||||
expire_in: 1 day
|
||||
paths:
|
||||
- gimp-a64
|
||||
|
|
@ -760,90 +738,60 @@ packaging-win-a64:
|
|||
|
||||
## WINDOWS x86_64 CI (native MSYS2) ##
|
||||
|
||||
deps-win-x64:
|
||||
.win-x64:
|
||||
extends: .win
|
||||
rules:
|
||||
# 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'
|
||||
# Merge requests with appropriate label.
|
||||
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
||||
stage: dependencies
|
||||
variables:
|
||||
BUILD_TYPE: "CI_NATIVE"
|
||||
MSYSTEM: "CLANG64"
|
||||
CHERE_INVOKING: "yes"
|
||||
tags:
|
||||
- win32-ps
|
||||
before_script:
|
||||
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
||||
variables:
|
||||
MSYSTEM: "CLANG64"
|
||||
|
||||
deps-win-x64:
|
||||
extends: .win-x64
|
||||
# GitLab don't support extending 'rules'
|
||||
rules:
|
||||
- !reference [.win, rules]
|
||||
- !reference [.win-x64, rules]
|
||||
stage: dependencies
|
||||
script:
|
||||
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/1_build-deps-msys2.sh"
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
when: always
|
||||
expire_in: 2 hours
|
||||
paths:
|
||||
- _install-x64
|
||||
needs: []
|
||||
|
||||
gimp-win-x64:
|
||||
extends: .win-x64
|
||||
# GitLab don't support extending 'rules'
|
||||
rules:
|
||||
# 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'
|
||||
# Merge requests with appropriate label.
|
||||
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
||||
- !reference [.win, rules]
|
||||
- !reference [.win-x64, rules]
|
||||
stage: gimp
|
||||
variables:
|
||||
BUILD_TYPE: "CI_NATIVE"
|
||||
MSYSTEM: "CLANG64"
|
||||
CHERE_INVOKING: "yes"
|
||||
tags:
|
||||
- win32-ps
|
||||
before_script:
|
||||
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
||||
script:
|
||||
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/2_build-gimp-msys2.sh"
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
when: always
|
||||
expire_in: 1 day
|
||||
paths:
|
||||
- _install-x64
|
||||
- _build-x64/build/windows/installer/
|
||||
- _build-x64/meson-*/
|
||||
cache:
|
||||
paths:
|
||||
- _ccache/
|
||||
needs: ["deps-win-x64"]
|
||||
|
||||
packaging-win-x64:
|
||||
extends: .win-x64
|
||||
# GitLab don't support extending 'rules'
|
||||
rules:
|
||||
# On releases.
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
# Custom builds though web GUI, API or schedules.
|
||||
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
||||
# Merge requests with appropriate label.
|
||||
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
||||
- !reference [.win, rules]
|
||||
- !reference [.win-x64, rules]
|
||||
stage: packaging
|
||||
variables:
|
||||
MSYSTEM: "CLANG64"
|
||||
CHERE_INVOKING: "yes"
|
||||
tags:
|
||||
- win32-ps
|
||||
before_script:
|
||||
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
||||
cache: []
|
||||
script:
|
||||
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/3_package-gimp-uni_base.sh"
|
||||
- cd gimp-x64
|
||||
- C:\msys64\usr\bin\bash -lc "bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh"
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
when: always
|
||||
expire_in: 1 day
|
||||
paths:
|
||||
- gimp-x64
|
||||
|
|
@ -852,89 +800,60 @@ packaging-win-x64:
|
|||
|
||||
## WINDOWS x86 CI (native MSYS2) ##
|
||||
|
||||
deps-win-x86:
|
||||
.win-x86:
|
||||
extends: .win
|
||||
rules:
|
||||
# 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'
|
||||
# Merge requests with appropriate label.
|
||||
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
||||
stage: dependencies
|
||||
variables:
|
||||
BUILD_TYPE: "CI_NATIVE"
|
||||
MSYSTEM: "MINGW32"
|
||||
CHERE_INVOKING: "yes"
|
||||
tags:
|
||||
- win32-ps
|
||||
before_script:
|
||||
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
||||
variables:
|
||||
MSYSTEM: "MINGW32"
|
||||
|
||||
deps-win-x86:
|
||||
extends: .win-x86
|
||||
# GitLab don't support extending 'rules'
|
||||
rules:
|
||||
- !reference [.win, rules]
|
||||
- !reference [.win-x86, rules]
|
||||
stage: dependencies
|
||||
script:
|
||||
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/1_build-deps-msys2.sh"
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
when: always
|
||||
expire_in: 2 hours
|
||||
paths:
|
||||
- _install-x86
|
||||
needs: []
|
||||
|
||||
gimp-win-x86:
|
||||
extends: .win-x86
|
||||
# GitLab don't support extending 'rules'
|
||||
rules:
|
||||
# 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'
|
||||
# Merge requests with appropriate label.
|
||||
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
||||
- !reference [.win, rules]
|
||||
- !reference [.win-x86, rules]
|
||||
stage: gimp
|
||||
variables:
|
||||
BUILD_TYPE: "CI_NATIVE"
|
||||
MSYSTEM: "MINGW32"
|
||||
CHERE_INVOKING: "yes"
|
||||
tags:
|
||||
- win32-ps
|
||||
before_script:
|
||||
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
||||
script:
|
||||
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/2_build-gimp-msys2.sh"
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
when: always
|
||||
expire_in: 1 day
|
||||
paths:
|
||||
- _install-x86
|
||||
- _build-x86/meson-*/
|
||||
cache:
|
||||
paths:
|
||||
- _ccache/
|
||||
needs: ["deps-win-x86"]
|
||||
|
||||
packaging-win-x86:
|
||||
extends: .win-x86
|
||||
# GitLab don't support extending 'rules'
|
||||
rules:
|
||||
# On releases.
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
# Custom builds though web GUI, API or schedules.
|
||||
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
||||
# Merge requests with appropriate label.
|
||||
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
||||
- !reference [.win, rules]
|
||||
- !reference [.win-x86, rules]
|
||||
stage: packaging
|
||||
variables:
|
||||
MSYSTEM: "MINGW32"
|
||||
CHERE_INVOKING: "yes"
|
||||
tags:
|
||||
- win32-ps
|
||||
before_script:
|
||||
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
||||
cache: []
|
||||
script:
|
||||
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/3_package-gimp-uni_base.sh"
|
||||
- cd gimp-x86
|
||||
- C:\msys64\usr\bin\bash -lc "bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh"
|
||||
artifacts:
|
||||
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
when: always
|
||||
expire_in: 1 day
|
||||
paths:
|
||||
- gimp-x86
|
||||
|
|
@ -992,18 +911,13 @@ dist-flatpak-weekly:
|
|||
- 'packaging-flatpak-x64'
|
||||
|
||||
dist-installer-weekly:
|
||||
extends: .win
|
||||
# GitLab don't support extending 'rules'
|
||||
rules:
|
||||
# On releases.
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
# Custom builds though web GUI, API or schedules.
|
||||
- if: '$GIMP_CI_WIN_INSTALLER != null'
|
||||
# Merge requests with appropriate label.
|
||||
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*5. Windows Installer.*/'
|
||||
variables:
|
||||
CHERE_INVOKING: "yes"
|
||||
- !reference [.win, rules]
|
||||
stage: distribution
|
||||
tags:
|
||||
- win32-ps
|
||||
stage: distribution
|
||||
dependencies:
|
||||
- packaging-win-a64
|
||||
- packaging-win-x64
|
||||
|
|
|
|||
|
|
@ -115,3 +115,5 @@ configure_or_build ()
|
|||
configure_or_build babl "-Dwith-docs=false"
|
||||
|
||||
configure_or_build gegl "-Ddocs=false -Dworkshop=true"
|
||||
|
||||
ccache --show-stats
|
||||
|
|
@ -61,20 +61,6 @@ export XDG_DATA_DIRS="${GIMP_PREFIX}/share:/usr/share${XDG_DATA_DIRS:+:$XDG_DATA
|
|||
export GI_TYPELIB_PATH="${GIMP_PREFIX}/${LIB_DIR}/${LIB_SUBDIR}girepository-1.0${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}"
|
||||
# End of universal variables
|
||||
|
||||
if [ ! -d "_ccache" ]; then
|
||||
mkdir -p _ccache
|
||||
fi
|
||||
export CCACHE_BASEDIR="$(pwd)"
|
||||
export CCACHE_DIR="${CCACHE_BASEDIR}/_ccache"
|
||||
|
||||
# XXX Do not enable ccache this way because it breaks
|
||||
# gobject-introspection rules. Let's see later for ccache.
|
||||
# See: https://github.com/msys2/MINGW-packages/issues/9677
|
||||
#export CC="ccache gcc"
|
||||
|
||||
#ccache --zero-stats
|
||||
#ccache --show-stats
|
||||
|
||||
|
||||
git submodule update --init
|
||||
|
||||
|
|
@ -99,6 +85,8 @@ else
|
|||
ninja install
|
||||
fi
|
||||
|
||||
ccache --show-stats
|
||||
|
||||
|
||||
# XXX Functional fix to the problem of non-configured interpreters
|
||||
make_cmd ()
|
||||
|
|
@ -148,8 +136,6 @@ if [[ "$BUILD_TYPE" == "CI_NATIVE" ]]; then
|
|||
|
||||
cd ..
|
||||
|
||||
#ccache --show-stats
|
||||
|
||||
# XXX Moving back the prefix to be used as artifacts.
|
||||
mv "${GIMP_PREFIX}" .
|
||||
else
|
||||
|
|
|
|||
Loading…
Reference in a new issue