| # Base configuration for linux builds and tests. |
| # SPDX-FileCopyrightText: The Eigen Authors |
| # SPDX-License-Identifier: MPL-2.0 |
| |
| # Shared rule sets, referenced from concrete jobs via |
| # rules: !reference [.rules:<name>, rules] |
| # Centralizing them keeps the "what triggers this job?" decision in one place. |
| .rules:libeigen:all-tests: |
| rules: |
| - if: $CI_PIPELINE_SOURCE == "schedule" && $CI_PROJECT_NAMESPACE == "libeigen" |
| - if: $CI_PIPELINE_SOURCE == "web" && $CI_PROJECT_NAMESPACE == "libeigen" |
| - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_MERGE_REQUEST_LABELS =~ "/all-tests/" |
| |
| .rules:libeigen:gpu: |
| # Spelled out (rather than referencing .rules:libeigen:all-tests) to avoid |
| # a nested !reference, which GitLab CI has had inconsistent support for. |
| rules: |
| - if: $CI_PIPELINE_SOURCE == "schedule" && $CI_PROJECT_NAMESPACE == "libeigen" |
| - if: $CI_PIPELINE_SOURCE == "web" && $CI_PROJECT_NAMESPACE == "libeigen" |
| - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_MERGE_REQUEST_LABELS =~ "/all-tests/" |
| - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_MERGE_REQUEST_LABELS =~ "/gpu-tests/" |
| |
| .rules:libeigen:scheduled-or-web: |
| rules: |
| - if: $CI_PIPELINE_SOURCE == "schedule" && $CI_PROJECT_NAMESPACE == "libeigen" |
| - if: $CI_PIPELINE_SOURCE == "web" && $CI_PROJECT_NAMESPACE == "libeigen" |
| |
| .rules:libeigen:scheduled-or-web:default-branch: |
| rules: |
| - if: $CI_PIPELINE_SOURCE == "schedule" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH |
| - if: $CI_PIPELINE_SOURCE == "web" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH |
| |
| .common:linux:cross: |
| image: ubuntu:24.04 |
| variables: |
| EIGEN_CI_TARGET_ARCH: "" |
| EIGEN_CI_ADDITIONAL_ARGS: "" |
| # If host matches target, use the following: |
| EIGEN_CI_C_COMPILER: "" |
| EIGEN_CI_CXX_COMPILER: "" |
| EIGEN_CI_INSTALL: "${EIGEN_CI_C_COMPILER} ${EIGEN_CI_CXX_COMPILER}" |
| # If host does not match the target, use the following: |
| EIGEN_CI_CROSS_TARGET_TRIPLE: "" |
| EIGEN_CI_CROSS_C_COMPILER: ${EIGEN_CI_C_COMPILER} |
| EIGEN_CI_CROSS_CXX_COMPILER: ${EIGEN_CI_CXX_COMPILER} |
| EIGEN_CI_CROSS_INSTALL: "${EIGEN_CI_CROSS_C_COMPILER} ${EIGEN_CI_CROSS_CXX_COMPILER}" |
| before_script: |
| # Call script in current shell - it sets up some environment variables. |
| - . ci/scripts/common.linux.before_script.sh |
| artifacts: |
| when: always |
| name: "$CI_JOB_NAME_SLUG-$CI_COMMIT_REF_SLUG" |
| paths: |
| - ${EIGEN_CI_BUILDDIR}/ |
| exclude: |
| - ${EIGEN_CI_BUILDDIR}/**/*.o |
| - ${EIGEN_CI_BUILDDIR}/**/*.a |
| - ${EIGEN_CI_BUILDDIR}/**/.ninja_log |
| - ${EIGEN_CI_BUILDDIR}/**/.ninja_deps |
| - ${EIGEN_CI_BUILDDIR}/**/CMakeFiles/*.dir/** |
| - ${EIGEN_CI_BUILDDIR}/.cmake/** |
| - ${EIGEN_CI_BUILDDIR}/**/Testing/Temporary/** |
| expire_in: 2 days |
| |
| # Base configuration for Windows builds and tests. |
| .common:windows: |
| variables: |
| EIGEN_CI_MSVC_ARCH: x64 |
| EIGEN_CI_MSVC_VER: "14.29" |
| EIGEN_CI_ADDITIONAL_ARGS: "" |
| EIGEN_CI_BEFORE_SCRIPT: "" |
| before_script: |
| - . ci/scripts/common.windows.before_script.ps1 |
| artifacts: |
| when: always |
| name: "$CI_JOB_NAME_SLUG-$CI_COMMIT_REF_NAME" |
| paths: |
| - ${EIGEN_CI_BUILDDIR}/ |
| exclude: |
| - ${EIGEN_CI_BUILDDIR}/**/*.obj |
| - ${EIGEN_CI_BUILDDIR}/**/*.lib |
| - ${EIGEN_CI_BUILDDIR}/**/.ninja_log |
| - ${EIGEN_CI_BUILDDIR}/**/.ninja_deps |
| - ${EIGEN_CI_BUILDDIR}/**/CMakeFiles/*.dir/** |
| - ${EIGEN_CI_BUILDDIR}/.cmake/** |
| - ${EIGEN_CI_BUILDDIR}/**/Testing/Temporary/** |
| expire_in: 2 days |