--- # This file is meant to be included from one of pacxx's .gitlab-cy.yml files. # # The including file should set the variable ADOPT to whereever it's # checked-out files should end up in pacxx's source tree, see the --adopt= # parameter in base/getpacxx. # # The project should set the protected CI variable DOCKER_REBUILD_TOKEN to a # token that can be used to trigger rebuilds for the docker images stages: - source - build - test - deploy ###################################################################### # # PACXX Source: get the sources (also, verify ci is current) # check-ci-main.yml: stage: source image: alpine:latest variables: REFERENCE: https://gitlab.dune-project.org/joe/pacxx-docker/raw/master/ci-main.yml script: - apk add curl - curl -f -o ci-main.yml.upstream "$REFERENCE" - if ! diff -u ci-main.yml.upstream ci-main.yml; then echo "Outdated ci setup, please update ci-main.yml from $REFERENCE"; exit 2; fi tags: - hpc2seci allow_failure: true source-pacxx: stage: source image: registry.dune-project.org/joe/pacxx-docker:base-native.master script: - getpacxx ${ADOPT:+--adopt="$ADOPT"} --branch="$CI_COMMIT_REF_NAME" --versionlog=repoversions # Trim down to stay within ZIVGITLAB limits - find llvm/ -name .git -prune -print0 | xargs -0 rm -rf - mv repoversions llvm/ - cat llvm/repoversions tags: - hpc2seci artifacts: paths: - llvm/ source-samples: stage: source image: registry.dune-project.org/joe/pacxx-docker:base-native.master script: - getpacxx ${ADOPT:+--adopt="$ADOPT"} --branch="$CI_COMMIT_REF_NAME" --versionlog=repoversions --samples - mv repoversions samples/repoversions - cat samples/repoversions tags: - hpc2seci artifacts: paths: - samples/ ###################################################################### # # Build: build pacxx using the base image # build-native: image: registry.dune-project.org/joe/pacxx-docker:base-native.master stage: build variables: GIT_STRATEGY: none dependencies: - source-pacxx script: - cat llvm/repoversions - export PACXX_INSTALL=$(pwd)/install - mkdir build - ( cd build && cmake ../llvm -DBUILD_SHARED_LIBS=ON -DLLVM_ENABLE_RTTI=ON -DLLVM_ENABLE_CXX1Y=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS_RELEASE="-O3" -DCMAKE_INSTALL_PREFIX="${PACXX_INSTALL}" ) - make -C build -j$(nproc) install - cp llvm/repoversions install/ tags: - hpc2seci artifacts: paths: - install/ build-cuda: image: registry.dune-project.org/joe/pacxx-docker:base-cuda.master stage: build variables: GIT_STRATEGY: none dependencies: - source-pacxx script: - cat llvm/repoversions - export PACXX_INSTALL=$(pwd)/install - mkdir build - ( cd build && cmake ../llvm -DBUILD_SHARED_LIBS=ON -DLLVM_ENABLE_RTTI=ON -DLLVM_ENABLE_CXX1Y=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS_RELEASE="-O3" -DCMAKE_INSTALL_PREFIX="${PACXX_INSTALL}" ) - make -C build -j$(nproc) install - cp llvm/repoversions install/ tags: - hpc2seci-nvidia artifacts: paths: - install/ ###################################################################### # # Test: test the just built pacxx # test-native-make-debug: image: registry.dune-project.org/joe/pacxx-docker:base-native.master stage: test variables: GIT_STRATEGY: none PACXX_FORCE_DEFAULT_RT: 1 PACXX_DEFAULT_RT: 1 # native dependencies: - build-native - source-samples script: - cat install/repoversions - cat samples/repoversions - export PATH=$(pwd)/install/bin:$PATH - mkdir build - cd build - cmake ../samples -DCMAKE_CXX_COMPILER=pacxx++ -DCMAKE_BUILD_TYPE=Debug - make -j$(nproc) - ctest -j$(nproc) -LE '^native-debug-(known-failure|slow)$' --output-on-failure - ctest -j$(nproc) -L '^native-debug-known-failure$' --output-on-failure || true - ": The following tests were skipped because they are known to be slow" - ctest -N -L '^native-debug-slow$' tags: - hpc2seci test-native-ninja-release: image: registry.dune-project.org/joe/pacxx-docker:base-native.master stage: test variables: GIT_STRATEGY: none PACXX_FORCE_DEFAULT_RT: 1 PACXX_DEFAULT_RT: 1 # native dependencies: - build-native - source-samples script: - cat install/repoversions - cat samples/repoversions - export PATH=$(pwd)/install/bin:$PATH - mkdir build - cd build - cmake ../samples -G Ninja -DCMAKE_CXX_COMPILER=pacxx++ -DCMAKE_BUILD_TYPE=Release - ninja - ctest -j$(nproc) -LE '^native-release-known-failure$' --output-on-failure - ctest -j$(nproc) -L '^native-release-known-failure$' --output-on-failure || true tags: - hpc2seci test-cuda-make-debug: image: registry.dune-project.org/joe/pacxx-docker:base-cuda.master stage: test variables: GIT_STRATEGY: none PACXX_FORCE_DEFAULT_RT: 1 PACXX_DEFAULT_RT: 0 # Cuda dependencies: - build-cuda - source-samples script: - cat install/repoversions - cat samples/repoversions - export PATH=$(pwd)/install/bin:$PATH - mkdir build - cd build - cmake ../samples -DCMAKE_CXX_COMPILER=pacxx++ -DCMAKE_BUILD_TYPE=Debug - make -j$(nproc) - ctest -j$(nproc) -LE '^cuda-debug-(known-failure|slow)$' --output-on-failure - ctest -j$(nproc) -L '^cuda-debug-known-failure$' --output-on-failure || true - ": The following tests were skipped because they are known to be slow" - ctest -N -L '^cuda-debug-slow$' tags: - hpc2seci-nvidia test-cuda-make-release: image: registry.dune-project.org/joe/pacxx-docker:base-cuda.master stage: test variables: GIT_STRATEGY: none PACXX_FORCE_DEFAULT_RT: 1 PACXX_DEFAULT_RT: 0 # Cuda dependencies: - build-cuda - source-samples script: - cat install/repoversions - cat samples/repoversions - export PATH=$(pwd)/install/bin:$PATH - mkdir build - cd build - cmake ../samples -DCMAKE_CXX_COMPILER=pacxx++ -DCMAKE_BUILD_TYPE=Release - make -j$(nproc) - ctest -j$(nproc) -LE '^cuda-release-known-failure$' --output-on-failure - ctest -j$(nproc) -L '^cuda-release-known-failure$' --output-on-failure || true tags: - hpc2seci-nvidia ###################################################################### # # Deploy: Trigger rebuild of the docker images # trigger-docker-rebuild: stage: deploy image: alpine:latest variables: GIT_STRATEGY: none script: - apk add curl - curl -f -X POST -F token=$DOCKER_REBUILD_TOKEN -F ref=master https://gitlab.dune-project.org/api/v4/projects/702/trigger/pipeline tags: - hpc2seci dependencies: [] only: - master