Browse Source

gitlab-ci: add jobs to make Linux release packages

These reuse the doc artifacts as the macOS package does.
Ben Boeckel 5 years ago
parent
commit
bd83c9f073
2 changed files with 67 additions and 0 deletions
  1. 23 0
      .gitlab-ci.yml
  2. 44 0
      .gitlab/os-linux.yml

+ 23 - 0
.gitlab-ci.yml

@@ -152,6 +152,29 @@ test:fedora31-ninja-multi:
     needs:
         - test:fedora31-ninja
 
+build:linux-x86_64-package:
+    extends:
+        - .linux_package_x86_64
+        - .cmake_build_linux_package
+        - .cmake_release_artifacts
+        - .linux_builder_tags
+        - .run_only_for_package
+    dependencies:
+        - prep:doc-package
+    needs:
+        - prep:doc-package
+
+upload:linux-x86_64-package:
+    extends:
+        - .rsync_upload
+        - .run_only_for_package
+    dependencies:
+        - build:linux-x86_64-package
+    needs:
+        - build:linux-x86_64-package
+    variables:
+        RSYNC_DESTINATION: dev
+
 # macOS builds
 
 build:macos-ninja:

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

@@ -17,6 +17,19 @@
     variables:
         GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
 
+.linux_package:
+    variables:
+        GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
+        LAUNCHER: "scl enable devtoolset-6 rh-python36 --"
+
+.linux_package_x86_64:
+    extends: .linux_package
+
+    image: "kitware/cmake:build-linux-x86_64-deps-2020-04-02@sha256:77e9ab183f34680990db9da5945473e288f0d6556bce79ecc1589670d656e157"
+
+    variables:
+        CMAKE_ARCH: x86_64
+
 ### Debian
 
 .debian10:
@@ -195,6 +208,37 @@
 
     interruptible: true
 
+.cmake_build_linux_package:
+    stage: build
+
+    script:
+        # Bootstrap.
+        - cp -v Utilities/Release/linux/$CMAKE_ARCH/cache.txt build/CMakeCache.txt
+        # Make sccache available.
+        - .gitlab/ci/sccache.sh
+        - export PATH=$PWD/.gitlab:$PATH
+        # Append sccache settings to the cache.
+        - echo "CMAKE_C_COMPILER_LAUNCHER:STRING=sccache" >> build/CMakeCache.txt
+        - echo "CMAKE_CXX_COMPILER_LAUNCHER:STRING=sccache" >> build/CMakeCache.txt
+        # CI settings.
+        - echo "CMake_TEST_INSTALL:BOOL=OFF" >> build/CMakeCache.txt
+        - echo "CMAKE_INSTALL_PREFIX:PATH=$PWD/build/install" >> build/CMakeCache.txt
+        - echo "CMAKE_SKIP_INSTALL_ALL_DEPENDENCY:BOOL=ON" >> build/CMakeCache.txt
+        # Bootstrap
+        - cd build/
+        - '$LAUNCHER ../bootstrap --parallel=$(nproc) --docdir=doc/cmake -- "-DCMake_DOC_ARTIFACT_PREFIX=$CI_PROJECT_DIR/build/install-doc"'
+        # FIXME: When CTest can drive an external CMake for the build as well,
+        # use the scripts here.
+        - "$LAUNCHER make -j$(nproc)"
+        # NOTE: This regex matches that used in the release build.
+        - "$LAUNCHER bin/ctest --output-on-failure -j$(nproc) -R '^(CMake\\.|CMakeLib\\.|CMakeServerLib\\.|RunCMake\\.ctest_memcheck)'"
+        # Make a package.
+        - bin/cpack -G TGZ
+        - bin/cpack -G STGZ
+        - sccache --show-stats
+
+    interruptible: true
+
 .cmake_build_release_linux:
     stage: build