244 lines
8.3 KiB
YAML
244 lines
8.3 KiB
YAML
## Overall seed job template for all jobs to make use of
|
|
|
|
variables:
|
|
BRANCH_NAME_WINDOWS: "master"
|
|
BRANCH_NAME_LINUX: "master"
|
|
BRANCH_NAME_MACOS: "master"
|
|
BRANCH_NAME_ANDROID: "master"
|
|
|
|
VM_IMAGE_NAME_WINDOWS: "storage.kde.org/vm-images/krita-windows-clang21-twinpy"
|
|
VM_IMAGE_NAME_LINUX: "storage.kde.org/vm-images/krita-appimage-2204"
|
|
VM_IMAGE_NAME_ANDROID: "storage.kde.org/vm-images/krita-android-sdk36-2204"
|
|
|
|
# The name of python executable that will be used for initializing
|
|
# the initial virtual envioronment. After venv is initialized, the chosen
|
|
# python can be addressed via plain 'python' or 'python3'
|
|
BOOTSTRAP_PYTHON_EXE_WINDOWS: 'C:\tools\Python-3.13\python.exe'
|
|
|
|
stages:
|
|
- Dependencies
|
|
- SystemMaintenance
|
|
|
|
.nightly-repo-cleanup:
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "schedule" && $KRITACI_SCHEDULED_JOB_NAME == "repo-cleanup"
|
|
when: always
|
|
|
|
.local_cache_mixin:
|
|
rules:
|
|
- when: manual
|
|
variables:
|
|
KDECI_CACHE_PATH: $CI_PROJECT_DIR/_local_cache
|
|
KDECI_ALLOW_PACKAGE_OVERRIDE_BY_CACHE: True
|
|
KDECI_PUBLISH_TO_CACHE: True
|
|
|
|
.shared_build_mixin:
|
|
rules:
|
|
- when: manual
|
|
variables:
|
|
KDECI_REMOVE_INSTALL_FOLDERS_AFTER_BUILD: False
|
|
KDECI_SHARED_INSTALL_PATH: $CI_PROJECT_DIR/_shared_install
|
|
|
|
.seed_template:
|
|
needs: []
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE == "schedule"'
|
|
when: never
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
when: never
|
|
- when: manual
|
|
variables:
|
|
KDECI_GITLAB_SERVER: https://invent.kde.org/
|
|
# we need to make sure that the packages of the same batch don't try
|
|
# to link to each other's build prefix
|
|
KDECI_REMOVE_INSTALL_FOLDERS_AFTER_BUILD: True
|
|
|
|
.seed_template_auto:
|
|
needs: []
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE == "schedule"'
|
|
when: never
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
when: never
|
|
- when: always
|
|
variables:
|
|
KDECI_GITLAB_SERVER: https://invent.kde.org/
|
|
# we need to make sure that the packages of the same batch don't try
|
|
# to link to each other's build prefix
|
|
KDECI_REMOVE_INSTALL_FOLDERS_AFTER_BUILD: True
|
|
|
|
.stage_deps_input_template:
|
|
inputs:
|
|
KRITA_STAGE_DEP:
|
|
default: base/unknown
|
|
description: A space-separated list of deps to build, e.g. `base/qt base/kconfig`
|
|
|
|
.log_artifacts_windows:
|
|
artifacts:
|
|
when: always
|
|
expire_in: 1 week
|
|
paths:
|
|
- ".\\**\\meson-logs\\meson-log.txt"
|
|
- ".\\**\\CMakeCache.txt"
|
|
- ".\\**\\CMakeFiles\\CMakeOutput.log"
|
|
- ".\\**\\config.log"
|
|
- ".\\**\\task.log"
|
|
- ".\\**\\task-debug.log"
|
|
- "./**/task.log"
|
|
- "./**/task-debug.log"
|
|
- "./**/CMakeCache.txt"
|
|
- "*.log"
|
|
exclude:
|
|
- "./**/meson-private/**/*"
|
|
|
|
.log_artifacts_unix:
|
|
artifacts:
|
|
when: always
|
|
expire_in: 1 week
|
|
paths:
|
|
- "./**/meson-logs/meson-log.txt"
|
|
- "./**/CMakeCache.txt"
|
|
- "./**/CMakeFiles/CMakeOutput.log"
|
|
- "./**/config.log"
|
|
- "*.log"
|
|
exclude:
|
|
- "./**/meson-private/**/*"
|
|
|
|
.windows_base:
|
|
image: $VM_IMAGE_NAME_WINDOWS
|
|
tags:
|
|
- VM
|
|
- amd64
|
|
extends:
|
|
- .log_artifacts_windows
|
|
variables:
|
|
KDECI_CC_CACHE: "Z:\\krita-windows\\caches"
|
|
KDECI_CACHE_PATH: "Z:\\krita-windows\\artifacts"
|
|
KDECI_PACKAGE_PROJECT: teams/ci-artifacts/krita-windows
|
|
EXTERNALS_DOWNLOAD_DIR: "Z:\\krita-windows\\downloads"
|
|
KDECI_GLOBAL_CONFIG_OVERRIDE_PATH: "$CI_PROJECT_DIR\\global-config.yml"
|
|
KDECI_REPO_METADATA_PATH: "$CI_PROJECT_DIR\\repo-metadata"
|
|
KDECI_SIGN_BINARIES: True
|
|
KRITACI_WINDOWS_SIGN_CONFIG: "$CI_PROJECT_DIR\\upstream-ci-utilities\\signing\\signwindowsbinaries.ini"
|
|
KDECI_WORKDIR_PATH: "C:\\_"
|
|
KDECI_CA_BUNDLE: "C:\\_\\_ca_bundle\\cacert.pem"
|
|
PYTHONUTF8: 1
|
|
# different commits may build different deps, so they should not be cancellable
|
|
interruptible: false
|
|
before_script:
|
|
# Download update CA Bundle from Mozilla, our base Windows image
|
|
# is outdated and sysadmins have problems with keeping it up to date
|
|
- cmake -DKDECI_CA_BUNDLE_ARG="$KDECI_CA_BUNDLE" -P tools\download_ca_bundle.cmake
|
|
- $env:SSL_CERT_FILE = $KDECI_CA_BUNDLE
|
|
|
|
- >
|
|
& $BOOTSTRAP_PYTHON_EXE_WINDOWS -m venv venv --upgrade-deps
|
|
- . venv\Scripts\Activate.ps1
|
|
|
|
- git clone https://invent.kde.org/packaging/krita-ci-utilities.git --depth=1 ci-utilities
|
|
- git clone https://invent.kde.org/sysadmin/ci-notary-service.git --depth=1
|
|
- git clone https://invent.kde.org/sysadmin/ci-utilities.git upstream-ci-utilities --depth=1
|
|
|
|
- pip install -r requirements.txt
|
|
- pip install -r ci-utilities/requirements-windows.txt
|
|
- pip install -r ci-notary-service/requirements.txt
|
|
|
|
- git config --global --add safe.directory $CI_PROJECT_DIR
|
|
|
|
.appimage_base:
|
|
image: $VM_IMAGE_NAME_LINUX
|
|
tags:
|
|
- VM
|
|
- amd64
|
|
extends:
|
|
- .log_artifacts_unix
|
|
variables:
|
|
KDECI_CC_CACHE: /mnt/krita-appimage/caches/
|
|
KDECI_CACHE_PATH: /mnt/krita-appimage/artifacts/
|
|
KDECI_PACKAGE_PROJECT: teams/ci-artifacts/krita-appimage
|
|
EXTERNALS_DOWNLOAD_DIR: /mnt/krita-appimage/downloads
|
|
KDECI_GLOBAL_CONFIG_OVERRIDE_PATH: "$CI_PROJECT_DIR/global-config.yml"
|
|
KDECI_REPO_METADATA_PATH: "$CI_PROJECT_DIR/repo-metadata"
|
|
KDECI_BUILD_TYPE: Release
|
|
# different commits may build different deps, so they should not be cancellable
|
|
interruptible: false
|
|
before_script:
|
|
- python3 -m venv venv --upgrade-deps
|
|
- . venv/bin/activate
|
|
- pip install -r requirements.txt
|
|
# Reactivate the venv to force it to use pip version of meson
|
|
- . venv/bin/activate
|
|
- git clone https://invent.kde.org/packaging/krita-ci-utilities.git --depth=1 ci-utilities
|
|
- git config --global --add safe.directory $CI_PROJECT_DIR
|
|
|
|
.android_base:
|
|
image: $VM_IMAGE_NAME_ANDROID
|
|
tags:
|
|
- VM
|
|
- amd64
|
|
extends:
|
|
- .log_artifacts_unix
|
|
variables:
|
|
EXTERNALS_DOWNLOAD_DIR: /mnt/krita-appimage/artifacts/downloads # reuse appimage caches!
|
|
KDECI_GLOBAL_CONFIG_OVERRIDE_PATH: "$CI_PROJECT_DIR/global-config.yml"
|
|
KDECI_REPO_METADATA_PATH: "$CI_PROJECT_DIR/repo-metadata"
|
|
KDECI_BUILD_TYPE: Release
|
|
KDECI_SKIP_ECM_ANDROID_TOOLCHAIN: "True"
|
|
CMAKE_TOOLCHAIN_FILE: $CI_PROJECT_DIR/tools/android-toolchain.cmake
|
|
# ANDROID_HOME: /opt/android-tooling # <-- set up in the base image!
|
|
# KDECI_ANDROID_SDK_ROOT: $ANDROID_HOME/sdk # <-- set up in the base image!
|
|
# KDECI_ANDROID_NDK_ROOT: $ANDROID_HOME/android-ndk-r22b/ # <-- set up in the base image!
|
|
|
|
# different commits may build different deps, so they should not be cancellable
|
|
interruptible: false
|
|
before_script:
|
|
- . /var/lib/ci-files/setup-environment.sh
|
|
|
|
- python3 -m venv venv --upgrade-deps
|
|
# Venvs can not be stacked
|
|
- . venv/bin/activate
|
|
- pip install -r requirements.txt
|
|
# Ensure that we're using the venv version of dependencies
|
|
- . venv/bin/activate
|
|
- git clone https://invent.kde.org/packaging/krita-ci-utilities.git --depth=1 ci-utilities
|
|
- git config --global --add safe.directory $CI_PROJECT_DIR
|
|
|
|
.macos_base:
|
|
tags:
|
|
- macOS
|
|
extends:
|
|
- .log_artifacts_unix
|
|
variables:
|
|
# ccache is not present on macOS
|
|
# KDECI_CC_CACHE: /Users/gitlab/caches/krita-macos/cache
|
|
KDECI_CACHE_PATH: /Users/gitlab/caches/krita-macos/artifacts
|
|
KDECI_PACKAGE_PROJECT: teams/ci-artifacts/krita-macos
|
|
EXTERNALS_DOWNLOAD_DIR: /Users/gitlab/caches/krita-macos/downloads
|
|
KDECI_GLOBAL_CONFIG_OVERRIDE_PATH: "$CI_PROJECT_DIR/global-config.yml"
|
|
KDECI_REPO_METADATA_PATH: "$CI_PROJECT_DIR/repo-metadata"
|
|
KDECI_BUILD_TYPE: Release
|
|
MACOSX_DEPLOYMENT_TARGET: "10.15"
|
|
QMAKE_MACOSX_DEPLOYMENT_TARGET: "10.15"
|
|
CMAKE_TOOLCHAIN_FILE: $CI_PROJECT_DIR/tools/macos-toolchain.cmake
|
|
|
|
# different commits may build different deps, so they should not be cancellable
|
|
interruptible: false
|
|
before_script:
|
|
- python3 -m venv venv --upgrade-deps
|
|
- . venv/bin/activate
|
|
- pip install -r requirements.txt
|
|
- git clone https://invent.kde.org/packaging/krita-ci-utilities.git --depth=1 ci-utilities
|
|
- git clone https://invent.kde.org/sysadmin/ci-utilities.git --depth=1 upstream-ci-utilities
|
|
|
|
- python3 -u tools/download-macos-tools.py
|
|
- source _krita-tools/activate
|
|
|
|
- git config --global --add safe.directory $CI_PROJECT_DIR
|
|
|
|
include:
|
|
- /pipelines/linux.yml
|
|
- /pipelines/windows.yml
|
|
- /pipelines/macos.yml
|
|
- /pipelines/android.yml
|
|
- /pipelines/registry-cleanup.yml
|
|
- /pipelines/generate-deps-visualization.yml
|