Browse Source

Merge topic 'ci-intel-compilers'

1610c0f034 gitlab-ci: add jobs testing Intel oneAPI compilers on Linux
c076833310 gitlab-ci: add jobs testing Intel Classic compilers on Linux
5ea928d9d2 gitlab-ci: factor out job dependencies on release-style binaries
402518904f gitlab-ci: add rules to enable jobs only in a nightly pipeline schedule
747940157f gitlab-ci: init environment with per-CMAKE_CONFIGURATION shell scripts
256c320fb6 gitlab-ci: add variable for job to control its ctest build name

Acked-by: Kitware Robot <[email protected]>
Acked-by: Ben Boeckel <[email protected]>
Merge-request: !5920
Brad King 4 years ago
parent
commit
1d34a153c0

+ 207 - 16
.gitlab-ci.yml

@@ -115,10 +115,7 @@ test:debian10-ninja:
         - .cmake_test_linux_release
         - .linux_builder_tags_qt
         - .run_dependent
-    dependencies:
-        - build:centos6-x86_64
-    needs:
-        - build:centos6-x86_64
+        - .needs_centos6_x86_64
 
 test:debian10-aarch64-ninja:
     extends:
@@ -126,10 +123,7 @@ test:debian10-aarch64-ninja:
         - .cmake_test_linux_release
         - .linux_builder_tags_aarch64_qt
         - .run_dependent
-    dependencies:
-        - build:centos7-aarch64
-    needs:
-        - build:centos7-aarch64
+        - .needs_centos7_aarch64
     variables:
         CMAKE_CI_NO_MR: "true"
 
@@ -139,10 +133,7 @@ test:fedora33-makefiles:
         - .cmake_test_linux_release
         - .linux_builder_tags_qt
         - .run_dependent
-    dependencies:
-        - build:centos6-x86_64
-    needs:
-        - build:centos6-x86_64
+        - .needs_centos6_x86_64
 
 test:cuda10.2-nvidia:
     extends:
@@ -150,10 +141,7 @@ test:cuda10.2-nvidia:
         - .cmake_test_linux_release
         - .linux_builder_tags_cuda
         - .run_dependent
-    dependencies:
-        - build:centos6-x86_64
-    needs:
-        - build:centos6-x86_64
+        - .needs_centos6_x86_64
 
 build:fedora33-ninja:
     extends:
@@ -186,6 +174,209 @@ test:fedora33-ninja-multi:
     needs:
         - test:fedora33-ninja
 
+test:intel2016-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2016_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2016-centos7
+
+test:intel2016u1-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2016u1_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2016u1-centos7
+
+test:intel2016u2-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2016u2_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2016u2-centos7
+
+test:intel2017-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2017_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017-centos7
+
+test:intel2017u1-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2017u1_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u1-centos7
+
+test:intel2017u2-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2017u2_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u2-centos7
+
+test:intel2017u3-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2017u3_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u3-centos7
+
+test:intel2017u4-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2017u4_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u4-centos7
+
+test:intel2017u5-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2017u5_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u5-centos7
+
+test:intel2017u6-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2017u6_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u6-centos7
+
+test:intel2017u7-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2017u7_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u7-centos7
+
+test:intel2017u8-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2017u8_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2017u8-centos7
+
+test:intel2018-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2018_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2018-centos7
+
+test:intel2018u1-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2018u1_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2018u1-centos7
+
+test:intel2018u2-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2018u2_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2018u2-centos7
+
+test:intel2018u3-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2018u3_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2018u3-centos7
+
+test:intel2018u4-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2018u4_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2018u4-centos7
+
+test:intel2019-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2019_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2019-centos7
+
+test:intel2019u1-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2019u1_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2019u1-centos7
+
+test:intel2019u2-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2019u2_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2019u2-centos7
+
+test:intel2019u3-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2019u3_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2019u3-centos7
+
+test:intel2019u4-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2019u4_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2019u4-centos7
+
+test:intel2020-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2020_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2020-rhel8
+
+test:intel2020u2-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2020u2_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2020u2-rhel8
+
+test:intel2020u4-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2020u4_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2020u4-rhel8
+
+test:intel2021.1.1-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2021.1.1_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2021.1.1-rhel8
+
+test:intel2021.1.2-makefiles:
+    extends:
+        - .cmake_test_linux_intelclassic_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: intel2021.1.2_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2021.1.2-rhel8
+
+test:oneapi2021.1.1-makefiles:
+    extends:
+        - .cmake_test_linux_inteloneapi_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: oneapi2021.1.1_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2021.1.1-rhel8
+
+test:oneapi2021.1.2-makefiles:
+    extends:
+        - .cmake_test_linux_inteloneapi_makefiles
+    variables:
+        CMAKE_CI_BUILD_NAME: oneapi2021.1.2_makefiles
+        CMAKE_CI_INTELCOMPILER_IMAGE_TAG: 2021.1.2-rhel8
+
 build:linux-x86_64-package:
     extends:
         - .linux_package

+ 1 - 0
.gitlab/ci/configure_intelclassic_makefiles.cmake

@@ -0,0 +1 @@
+include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 1 - 0
.gitlab/ci/configure_inteloneapi_makefiles.cmake

@@ -0,0 +1 @@
+include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 14 - 0
.gitlab/ci/env.sh

@@ -0,0 +1,14 @@
+quietly() {
+  readonly log="/tmp/quietly-$RANDOM.log"
+  if ! "$@" >"$log" 2>&1; then
+    ret=$?
+    cat "$log"
+    rm -f "$log"
+    exit $ret
+  fi
+  rm -f "$log"
+}
+
+if test -r ".gitlab/ci/env_${CMAKE_CONFIGURATION}.sh"; then
+  source ".gitlab/ci/env_${CMAKE_CONFIGURATION}.sh"
+fi

+ 9 - 0
.gitlab/ci/env_intelclassic_common.sh

@@ -0,0 +1,9 @@
+source .gitlab/ci/env_intelcompiler_license.sh
+
+if test -r /opt/intel/oneapi/setvars.sh; then
+  source /opt/intel/oneapi/setvars.sh
+elif test -r /opt/intel/bin/compilervars.sh; then
+  source /opt/intel/bin/compilervars.sh intel64
+fi
+
+export CC=icc CXX=icpc FC=ifort

+ 1 - 0
.gitlab/ci/env_intelclassic_makefiles.sh

@@ -0,0 +1 @@
+source .gitlab/ci/env_intelclassic_common.sh

+ 8 - 0
.gitlab/ci/env_intelcompiler_license.sh

@@ -0,0 +1,8 @@
+if test -n "$CMAKE_CI_INTELCOMPILER_LICENSE"; then
+  if test -d /opt/intel/licenses; then
+    mv "$CMAKE_CI_INTELCOMPILER_LICENSE" /opt/intel/licenses/ci.lic
+  else
+    rm "$CMAKE_CI_INTELCOMPILER_LICENSE"
+  fi
+  unset CMAKE_CI_INTELCOMPILER_LICENSE
+fi

+ 7 - 0
.gitlab/ci/env_inteloneapi_common.sh

@@ -0,0 +1,7 @@
+source .gitlab/ci/env_intelcompiler_license.sh
+
+if test -r /opt/intel/oneapi/setvars.sh; then
+  source /opt/intel/oneapi/setvars.sh
+fi
+
+export CC=icx CXX=icpx FC=ifx

+ 1 - 0
.gitlab/ci/env_inteloneapi_makefiles.sh

@@ -0,0 +1 @@
+source .gitlab/ci/env_inteloneapi_common.sh

+ 5 - 1
.gitlab/ci/gitlab_ci.cmake

@@ -17,7 +17,11 @@ if ("$ENV{CMAKE_CONFIGURATION}" STREQUAL "")
 endif ()
 
 # Set the build metadata.
-set(CTEST_BUILD_NAME "$ENV{CI_PROJECT_NAME}-$ENV{CMAKE_CONFIGURATION}")
+if(NOT "$ENV{CMAKE_CI_BUILD_NAME}" STREQUAL "")
+  set(CTEST_BUILD_NAME "$ENV{CI_PROJECT_NAME}-$ENV{CMAKE_CI_BUILD_NAME}")
+else()
+  set(CTEST_BUILD_NAME "$ENV{CI_PROJECT_NAME}-$ENV{CMAKE_CONFIGURATION}")
+endif()
 set(CTEST_SITE "gitlab-ci")
 set(ctest_model "Experimental")
 

+ 55 - 0
.gitlab/os-linux.yml

@@ -30,6 +30,18 @@
     variables:
         BOOTSTRAP_ARGS: '-- "-DCMake_DOC_ARTIFACT_PREFIX=$CI_PROJECT_DIR/build/install-doc"'
 
+.needs_centos6_x86_64:
+    dependencies:
+        - build:centos6-x86_64
+    needs:
+        - build:centos6-x86_64
+
+.needs_centos7_aarch64:
+    dependencies:
+        - build:centos7-aarch64
+    needs:
+        - build:centos7-aarch64
+
 ### Debian
 
 .debian10:
@@ -128,6 +140,27 @@
         CTEST_NO_WARNINGS_ALLOWED: 1
         CMAKE_GENERATOR: "Unix Makefiles"
 
+### Intel Compiler
+
+.intelcompiler:
+    image: "kitware/intelcompiler:$CMAKE_CI_INTELCOMPILER_IMAGE_TAG"
+    environment:
+        name: intel-compiler
+    variables:
+        CMAKE_ARCH: x86_64
+
+.intelclassic_makefiles:
+    extends: .intelcompiler
+    variables:
+        CMAKE_CONFIGURATION: intelclassic_makefiles
+        CMAKE_GENERATOR: "Unix Makefiles"
+
+.inteloneapi_makefiles:
+    extends: .intelcompiler
+    variables:
+        CMAKE_CONFIGURATION: inteloneapi_makefiles
+        CMAKE_GENERATOR: "Unix Makefiles"
+
 ### CUDA builds
 
 .cuda10.2:
@@ -195,6 +228,7 @@
 ## Linux-specific scripts
 
 .before_script_linux: &before_script_linux
+    - source .gitlab/ci/env.sh
     - .gitlab/ci/cmake.sh
     - .gitlab/ci/ninja.sh
     - export PATH=$PWD/.gitlab:$PWD/.gitlab/cmake/bin:$PATH
@@ -251,6 +285,7 @@
     stage: build
 
     script:
+        - source .gitlab/ci/env.sh
         # Bootstrap.
         - mkdir -p build/
         # Exclude documentation.  A job dependency provides it for packaging.
@@ -313,3 +348,23 @@
         - sccache --show-stats
 
     interruptible: true
+
+.cmake_test_linux_intelclassic_makefiles:
+    extends:
+        - .intelclassic_makefiles
+        - .cmake_test_linux_release
+        - .linux_builder_tags_qt
+        - .run_manually
+        - .needs_centos6_x86_64
+    variables:
+        CMAKE_CI_JOB_NIGHTLY: "true"
+
+.cmake_test_linux_inteloneapi_makefiles:
+    extends:
+        - .inteloneapi_makefiles
+        - .cmake_test_linux_release
+        - .linux_builder_tags_qt
+        - .run_manually
+        - .needs_centos6_x86_64
+    variables:
+        CMAKE_CI_JOB_NIGHTLY: "true"

+ 6 - 0
.gitlab/rules.yml

@@ -6,6 +6,8 @@
           when: never
         - if: '$CMAKE_CI_NIGHTLY == "true"'
           when: on_success
+        - if: '$CMAKE_CI_JOB_NIGHTLY == "true"'
+          when: never
         - if: '($CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != "" && $CI_COMMIT_BRANCH == $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH && $CMAKE_CI_JOB_CONTINUOUS == "true")'
           when: delayed
           start_in: 5 minutes
@@ -24,6 +26,8 @@
           when: never
         - if: '$CMAKE_CI_NIGHTLY == "true"'
           when: on_success
+        - if: '$CMAKE_CI_JOB_NIGHTLY == "true"'
+          when: never
         - if: '($CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != "" && $CI_COMMIT_BRANCH == $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH && $CMAKE_CI_JOB_CONTINUOUS == "true")'
           when: on_success
         - if: '($CMAKE_CI_NO_MR == "true" && $CI_MERGE_REQUEST_ID)'
@@ -42,6 +46,8 @@
           when: always
         - if: '$CMAKE_CI_NIGHTLY == "true"'
           when: on_success
+        - if: '$CMAKE_CI_JOB_NIGHTLY == "true"'
+          when: never
         - if: '($CMAKE_CI_NO_MR == "true" && $CI_MERGE_REQUEST_ID)'
           when: never
         - if: '$CI_MERGE_REQUEST_ID'