diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9659cc7..87b7185 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,294 +1,296 @@ # --------------------------------- # - General Setup - # --------------------------------- stages: - build - test - FOG:build - FOG:test - # - clean_code - # - publish + - clean_code + - publish variables: # build directories HEJ_BUILD_DIR: tmp_HEJ/HEJ_build HEJ_INSTALL_DIR: tmp_HEJ/HEJ_installed FOG_BUILD_DIR: tmp_HEJ/FOG_build FOG_INSTALL_DIR: ${HEJ_INSTALL_DIR} # docker images DOCKER_BASIC: hejdock/hepenv DOCKER_HEPMC3: hejdock/hepmc3env DOCKER_QCDLOOP: hejdock/qcdloopenv DOCKER_RIVET: hejdock/rivetenv # ----------- Macros ----------- after_script: - date .tags_template: tags: &tags_def - docker # save complete history of failed tests .save_failure: artifacts: &artifacts_failed when: on_failure untracked: true - expire_in: 1h # TODO change to 3d + expire_in: 3d # --------------------------------- # - Script Templates - # --------------------------------- # ----------- Build ----------- .HEJ_build: tags: *tags_def stage: build before_script: - date - source /cvmfs/pheno.egi.eu/HEJ/HEJ_env.sh || exit 1 # prepare build - t_HEJ_DIR=${PWD} - t_HEJ_INSTALL_DIR=${PWD}/${HEJ_INSTALL_DIR} - t_HEJ_BUILD_DIR=${PWD}/${HEJ_BUILD_DIR} - mkdir -p ${t_HEJ_BUILD_DIR} - cd ${t_HEJ_BUILD_DIR} - cmake ${t_HEJ_DIR} -DCMAKE_BUILD_TYPE=DEBUG -DCMAKE_INSTALL_PREFIX=${t_HEJ_INSTALL_DIR} script: - make -j $(nproc --ignore=1) - make install artifacts: # save build and installed folder name: build - expire_in: 1h # TODO change to 1d + expire_in: 1d paths: - ${HEJ_INSTALL_DIR} - ${HEJ_BUILD_DIR} # ----------- Test ----------- .HEJ_test: tags: *tags_def stage: test before_script: - date - source /cvmfs/pheno.egi.eu/HEJ/HEJ_env.sh || exit 1 # load HEJ - t_HEJ_DIR=${PWD} - t_HEJ_INSTALL_DIR=${PWD}/${HEJ_INSTALL_DIR} - export LD_LIBRARY_PATH=${t_HEJ_INSTALL_DIR}/lib:${LD_LIBRARY_PATH} - export PATH=${t_HEJ_INSTALL_DIR}/bin:${PATH} - cd ${HEJ_BUILD_DIR} - cmake ${t_HEJ_DIR} # rerun cmake to create all test configure files - - cat info.log # TODO remove script: - ctest --output-on-failure artifacts: *artifacts_failed ## ----------- FOG build ----------- .FOG_build: tags: *tags_def stage: FOG:build before_script: - date - source /cvmfs/pheno.egi.eu/HEJ/HEJ_env.sh || exit 1 # load HEJ - t_HEJ_INSTALL_DIR=${PWD}/${HEJ_INSTALL_DIR} - export LD_LIBRARY_PATH=${t_HEJ_INSTALL_DIR}/lib:${LD_LIBRARY_PATH} - export PATH=${t_HEJ_INSTALL_DIR}/bin:${PATH} # prepare build - t_FOG_DIR=${PWD}/FixedOrderGen - t_FOG_INSTALL_DIR=${PWD}/${FOG_INSTALL_DIR} - t_FOG_BUILD_DIR=${PWD}/${FOG_BUILD_DIR} - mkdir -p ${t_FOG_BUILD_DIR} - cd ${t_FOG_BUILD_DIR} - cmake ${t_FOG_DIR} -DCMAKE_BUILD_TYPE=DEBUG -DCMAKE_INSTALL_PREFIX=${t_FOG_INSTALL_DIR} script: - make -j $(nproc --ignore=1) - make install artifacts: # save build and installed folder name: FOG_build - expire_in: 1h # TODO change to 1d + expire_in: 1d paths: - ${HEJ_INSTALL_DIR} - ${FOG_INSTALL_DIR} - ${FOG_BUILD_DIR} ## ----------- FOG test ----------- .FOG_test: tags: *tags_def stage: FOG:test before_script: - date - source /cvmfs/pheno.egi.eu/HEJ/HEJ_env.sh || exit 1 # load HEJ - t_FOG_DIR=${PWD}/FixedOrderGen - t_HEJ_INSTALL_DIR=${PWD}/${HEJ_INSTALL_DIR} - t_FOG_INSTALL_DIR=${PWD}/${FOG_INSTALL_DIR} - export LD_LIBRARY_PATH=${t_HEJ_INSTALL_DIR}/lib:${LD_LIBRARY_PATH} - export PATH=${t_HEJ_INSTALL_DIR}/bin:${t_FOG_INSTALL_DIR}/bin:${PATH} - t_FOG_BUILD_DIR=${PWD}/${FOG_BUILD_DIR} - cd ${t_FOG_BUILD_DIR} - cmake ${t_FOG_DIR} # rerun cmake to create all test configure files script: - make test artifacts: *artifacts_failed - # --------------------------------- # - Build & Test - # --------------------------------- # ----------- basic ----------- build:basic: image: ${DOCKER_BASIC} extends: .HEJ_build - after_script: - - echo "basic" > ${HEJ_BUILD_DIR}/info.log # TODO remove test:basic: image: ${DOCKER_BASIC} extends: .HEJ_test dependencies: - build:basic FOG:build:basic: image: ${DOCKER_BASIC} extends: .FOG_build - after_script: - - echo "FOG basic" > ${HEJ_BUILD_DIR}/info.log # TODO remove dependencies: - build:basic FOG:test:basic: image: ${DOCKER_BASIC} extends: .FOG_test dependencies: - FOG:build:basic # ----------- HepMC 3 ----------- build:hepmc3: image: ${DOCKER_HEPMC3} extends: .HEJ_build - after_script: - - echo "HepMC3" > ${HEJ_BUILD_DIR}/info.log # TODO remove test:hepmc3: image: ${DOCKER_HEPMC3} extends: .HEJ_test dependencies: - build:hepmc3 # ----------- QCDloop ----------- build:qcdloop: image: ${DOCKER_QCDLOOP} extends: .HEJ_build - after_script: - - echo "QCDloop" > ${HEJ_BUILD_DIR}/info.log # TODO remove test:qcdloop: image: ${DOCKER_QCDLOOP} extends: .HEJ_test dependencies: - build:qcdloop # ----------- rivet ----------- build:rivet: image: ${DOCKER_RIVET} extends: .HEJ_build - after_script: - - echo "rivet" > ${HEJ_BUILD_DIR}/info.log # TODO remove test:rivet: image: ${DOCKER_RIVET} extends: .HEJ_test dependencies: - build:rivet script: - ctest --output-on-failure - bash -c '[ -f tst.yoda ]' && echo "found rivet output" - rivet-cmphistos tst.yoda - bash -c '[ -f MC_XS_XS.dat ]' && echo "yoda not empty" -## OLD: - -# No_tabs: -# stage: clean_code -# tags: *tags_def -# image: hejdock/git -# script: -# - date -# - check_tabs - -# No_warnings: -# stage: clean_code -# tags: *tags_def -# image: hejdock/hepenv -# before_script: -# - date -# - source /cvmfs/pheno.egi.eu/HEJ/HEJ_env.sh || exit 1 -# - export t_HEJ_INSTALL_DIR=${PWD}/$HEJ_INSTALL_DIR -# - export t_HEJ_BUILD_DIR=${PWD}/$HEJ_BUILD_DIR -# - export t_HEJ_DIR=${PWD} -# - export LD_LIBRARY_PATH=${t_HEJ_INSTALL_DIR}/lib:${LD_LIBRARY_PATH} -# - export PATH=${t_HEJ_INSTALL_DIR}/bin:${PATH} -# - export t_FOG_BUILD_DIR=${PWD}/$FOG_BUILD_DIR -# - export t_FOG_DIR=${t_HEJ_DIR}/FixedOrderGen -# - mkdir -p ${t_HEJ_BUILD_DIR} -# - mkdir -p ${t_FOG_BUILD_DIR} -# script: -# - sed -i 's/include_directories(${LHAPDF/include_directories(SYSTEM ${LHAPDF/g' CMakeLists.txt -# - sed -i 's/include_directories(${fastjet/include_directories(SYSTEM ${fastjet/g' CMakeLists.txt -# - sed -i 's/include_directories(${Boost/include_directories(SYSTEM ${Boost/g' CMakeLists.txt -# - cd ${t_HEJ_BUILD_DIR} -# - cmake ${t_HEJ_DIR} -DCMAKE_CXX_FLAGS="-Werror" -DCMAKE_INSTALL_PREFIX=${t_HEJ_INSTALL_DIR} -# - make -j 8 -# - make install -# - cd ${t_FOG_DIR} -# - sed -i 's/include_directories(${LHAPDF/include_directories(SYSTEM ${LHAPDF/g' CMakeLists.txt -# - sed -i 's/include_directories(${fastjet/include_directories(SYSTEM ${fastjet/g' CMakeLists.txt -# - sed -i 's/include_directories(${Boost/include_directories(SYSTEM ${Boost/g' CMakeLists.txt -# - cd ${t_FOG_BUILD_DIR} -# - cmake ${t_FOG_DIR} -DCMAKE_CXX_FLAGS="-Werror" -# - make -j 8 - -# .Publish: -# stage: publish -# tags: *tags_def -# image: hejdock/git -# before_script: -# - mkdir -p .ssh/ && echo "${SSH_KEY}" > .ssh/id_rsa && chmod 0600 .ssh/id_rsa -# - rm -rf ~/.ssh/id_rsa; mkdir -p ~/.ssh/ -# - ln -s $PWD/.ssh/id_rsa ~/.ssh/id_rsa && chmod 0600 ~/.ssh/id_rsa -# - ssh -T ${PUBLIC_GIT_PREFIX} -o "StrictHostKeyChecking no" || echo "added ssh" -# script: -# - git remote add public ${PUBLIC_GIT_PREFIX}${PUBLIC_GIT_POSTFIX} -# - git checkout $CI_COMMIT_REF_NAME -# - git branch -# - git pull -# - git push public -# - git push public --tags -# after_script: -# - rm -f /root/.ssh/id_rsa && rm -fr .ssh -# - git remote rm public - -# Publish_version: -# extends: .Publish -# only: -# - /^v\d+\.\d+$/ -# except: -# - tags -# when: on_success +# --------------------------------- +# - Clean Code - +# --------------------------------- + +No_tabs: + stage: clean_code + tags: *tags_def + image: hejdock/git + dependencies: [] + script: + - date + - check_tabs + +# ----------- No gcc warnings ----------- + +.Warning_build: + extends: .HEJ_build + stage: clean_code + dependencies: [] + script: + - cd ${t_HEJ_DIR} + # suppress warnings from side packages + - sed -i 's/include_directories(${LHAPDF/include_directories(SYSTEM ${LHAPDF/g' CMakeLists.txt + - sed -i 's/include_directories(${fastjet/include_directories(SYSTEM ${fastjet/g' CMakeLists.txt + - sed -i 's/include_directories(${Boost/include_directories(SYSTEM ${Boost/g' CMakeLists.txt + - cd ${t_HEJ_BUILD_DIR} + - cmake ${t_HEJ_DIR} -DCMAKE_CXX_FLAGS="-Werror" + - make -j $(nproc --ignore=1) + artifacts: # don't save anything + +.Warning_FOG: + extends: .FOG_build + stage: clean_code + script: + - cd ${t_FOG_DIR} + # suppress warnings from side packages + - sed -i 's/include_directories(${LHAPDF/include_directories(SYSTEM ${LHAPDF/g' CMakeLists.txt + - sed -i 's/include_directories(${fastjet/include_directories(SYSTEM ${fastjet/g' CMakeLists.txt + - sed -i 's/include_directories(${Boost/include_directories(SYSTEM ${Boost/g' CMakeLists.txt + - cd ${t_FOG_BUILD_DIR} + - cmake ${t_FOG_DIR} -DCMAKE_CXX_FLAGS="-Werror" + - make -j $(nproc --ignore=1) + artifacts: # don't save anything + +No_Warning:basic: + image: ${DOCKER_BASIC} + extends: .Warning_build + +No_Warning:basic:FOG: + image: ${DOCKER_BASIC} + extends: .Warning_FOG + dependencies: + - build:basic + +# --------------------------------- +# - Publish - +# --------------------------------- + +Publish_version: + stage: publish + tags: *tags_def + image: hejdock/git + dependencies: [] + only: + - /^v\d+\.\d+$/ + except: + - tags + when: on_success + before_script: + - mkdir -p .ssh/ && echo "${SSH_KEY}" > .ssh/id_rsa && chmod 0600 .ssh/id_rsa + - rm -rf ~/.ssh/id_rsa; mkdir -p ~/.ssh/ + - ln -s $PWD/.ssh/id_rsa ~/.ssh/id_rsa && chmod 0600 ~/.ssh/id_rsa + - ssh -T ${PUBLIC_GIT_PREFIX} -o "StrictHostKeyChecking no" || echo "added ssh" + script: + - git remote add public ${PUBLIC_GIT_PREFIX}${PUBLIC_GIT_POSTFIX} + - git checkout $CI_COMMIT_REF_NAME + - git branch + - git pull + - git push public + - git push public --tags + after_script: + - rm -f /root/.ssh/id_rsa && rm -fr .ssh + - git remote rm public