Index: trunk/.gitlab-ci.yml =================================================================== --- trunk/.gitlab-ci.yml (revision 8734) +++ trunk/.gitlab-ci.yml (revision 8735) @@ -1,607 +1,613 @@ stages: - build - deploy - report - daily - weekly - weekly-applications - weekly-report variables: NAGFOR_OPTIONS: "-w=all -gline -C=all -nan -f2008" GFORTRAN_OPTIONS: "-fbacktrace -fcheck=array-temps,bounds,do,mem,pointer" JOBS: "-j2" JOBS_NAGFOR: "-j4" OPAM_ROOT: "/opt/opam" OPAM_SWITCH: "4.05" .default_template: &default_definition stage: build before_script: - ./build_master.sh - autoreconf - command -v opam && eval $(opam config env --root="$OPAM_ROOT" --switch="$OPAM_SWITCH") - mkdir build || true - cd build except: - production - schedules - /^.*xfail.*$/ artifacts: expire_in: 3 weeks when: always paths: - build/configure.log - build/config.log - build/make.log - build/make-install.log - build/circe2/tests/test-suite.log - build/omega/tests/test-suite.log - build/vamp/tests/test-suite.log - build/tests/unit_tests/test-suite.log - build/tests/unit_tests/err-output/* - build/tests/functional_tests/test-suite.log .docker_template: &docker_definition variables: GIT_SSL_NO_VERIFY: "1" tags: - docker # SMALL TEST SUITE (BRANCHES) gfortran-7.5.0-fully: <<: *default_definition image: gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-tools script: - export LD_LIBRARY_PATH=/home/whizard/OpenLoops/lib:$LD_LIBRARY_PATH - ../configure FC=gfortran FCFLAGS="-O0 $GFORTRAN_OPTIONS" F77=gfortran --disable-static --prefix="`pwd`/install" --enable-hoppet --enable-fastjet --enable-openloops --enable-pythia8 > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check <<: *docker_definition nagfor-7: <<: *default_definition script: - ../configure FC=nagfor FCFLAGS="$NAGFOR_OPTIONS" F77=nagfor --disable-static --prefix="`pwd`/install" --enable-distribution > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS_NAGFOR -s V=1 check tags: - nagfor - latex ifort-20: <<: *default_definition script: - source /opt/intel/2020/bin/compilervars.sh intel64 - ../configure FC=ifort2020 F77=ifort2020 --disable-static --prefix="`pwd`/install" > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check tags: - ifort # BIG TEST SUITE (MASTER + TESTING BRANCHES) .extra_template: &extra_definition <<: *default_definition only: - master - /^testing.*$/ .distcheck_template: &distcheck_script script: - ../configure FC=gfortran FCFLAGS="-O2 $GFORTRAN_OPTIONS" F77=gfortran --enable-distribution --enable-static --prefix="`pwd`/install" > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 DISTCHECK_CONFIGURE_FLAGS='FC=gfortran F77=gfortran --enable-distribution --disable-noweb-force' distcheck > make-distcheck.log .distcheck_template: &distcheck_definition <<: *default_definition image: gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-gcc-11.2.0 <<: *distcheck_script <<: *docker_definition only: - master - /^testing.*$/ artifacts: expire_in: 3 weeks when: always paths: - build/configure.log - build/config.log - build/make.log - build/make-install.log - build/circe2/tests/test-suite.log - build/omega/tests/test-suite.log - build/vamp/tests/test-suite.log - build/tests/unit_tests/test-suite.log - build/tests/unit_tests/err-output/* - build/tests/functional_tests/test-suite.log - "build/whizard*.tar.gz" - build/make-distcheck.log after_script: - find . -type f -exec chmod 644 {} + - find . -type d -exec chmod 755 {} + - rm whizard*/ -rf distcheck.static.gfortran-11.2.0: <<: *distcheck_definition gfortran-8.5.0: <<: *extra_definition image: gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-gcc-8.5.0 script: - ../configure FC=gfortran F77=gfortran --disable-static --prefix="`pwd`/install" > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check <<: *docker_definition gfortran-9.4.0: <<: *extra_definition image: gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-gcc-9.4.0 script: - ../configure FC=gfortran F77=gfortran --disable-static --prefix="`pwd`/install" > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check <<: *docker_definition gfortran-10.3.0: <<: *extra_definition image: gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-gcc-10.3.0 script: - ../configure FC=gfortran F77=gfortran --disable-static --prefix="`pwd`/install" > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check <<: *docker_definition gfortran-11.2.0: <<: *extra_definition image: gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-gcc-11.2.0 script: - ../configure FC=gfortran F77=gfortran --disable-static --prefix="`pwd`/install" > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check <<: *docker_definition gfortran-no-argument-11.2.0: <<: *extra_definition image: gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-gcc-11.2.0 script: - ../configure | tee configure.log - make $JOBS -s V=1 | tee make.log - make $JOBS -s V=1 install | tee make-install.log - make $JOBS -s V=1 check <<: *docker_definition # osx.gfortran: # <<: *extra_definition # script: # - ../configure FC=gfortran FCFLAGS="-O0 $GFORTRAN_OPTIONS" F77=gfortran --prefix="`pwd`/install" --enable-distribution --enable-hepmc --enable-lcio --enable-lhapdf --enable-hoppet --enable-fastjet --enable-looptools LOOPTOOLS_DIR=/usr/local/lib --enable-gosam --enable-openloops --enable-recola --enable-pythia8 > configure.log # - make $JOBS -s V=1 > make.log # - make $JOBS -s V=1 install > make-install.log # - make $JOBS -s V=1 check # tags: # - osx disabled.static.nagfor-7: <<: *extra_definition script: - ../configure --disable-lhapdf --disable-hepmc --disable-lcio --disable-pythia8 --disable-fastjet --disable-hoppet --disable-gosam --disable-openloops --disable-looptools --disable-pythia6 --enable-distribution FC=nagfor FCFLAGS="$NAGFOR_OPTIONS" F77=nagfor --prefix="`pwd`/install" > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS_NAGFOR -s V=1 check tags: - nagfor - latex extended.gfortran-7.5.0-fully: <<: *extra_definition image: gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-tools script: - export LD_LIBRARY_PATH=/home/whizard/OpenLoops/lib:$LD_LIBRARY_PATH - ../configure --with-precision=extended FC=gfortran FCFLAGS="-O0 $GFORTRAN_OPTIONS" F77=gfortran --disable-static --prefix="`pwd`/install" --enable-hoppet --enable-fastjet --enable-openloops --enable-pythia8 > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check <<: *docker_definition openmp.gfortran-7.5.0: <<: *extra_definition image: gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-gcc-7.5.0 script: - ../configure --enable-fc-openmp FC=gfortran FCFLAGS="-O1 $GFORTRAN_OPTIONS" F77=gfortran --disable-static --prefix="`pwd`/install" > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check <<: *docker_definition mpi.gfortran-7.5.0: <<: *extra_definition image: gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-gcc-7.5.0-openmpi-4.0.5 script: - ../configure --enable-fc-mpi FC=mpifort FCFLAGS="-O1 $GFORTRAN_OPTIONS" F77=mpifort CC=mpicc CXX=mpic++ --disable-static --prefix="`pwd`/install" > configure.log - sed -i.bak 's/mpirun="mpirun -np 1"/mpirun="mpirun -np 1 --allow-run-as-root"/' tests/functional_tests/run_whizard.sh - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check <<: *docker_definition parallel.gfortran-7.5.0: <<: *extra_definition image: gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-gcc-7.5.0-openmpi-4.0.5 script: - ../configure --enable-fc-openmp --enable-fc-mpi FC=mpifort FCFLAGS="-O1 $GFORTRAN_OPTIONS" F77=mpifort CC=mpicc CXX=mpic++ --disable-static --prefix="`pwd`/install" > configure.log - sed -i.bak 's/mpirun="mpirun -np 1"/mpirun="mpirun -np 1 --allow-run-as-root"/' tests/functional_tests/run_whizard.sh - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check <<: *docker_definition ifort-19: <<: *extra_definition script: - source /opt/intel/2019/bin/compilervars.sh intel64 - ../configure FC=ifort2019 F77=ifort2019 --disable-static --prefix="`pwd`/install" > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check tags: - ifort quadruple.ifort-20: <<: *extra_definition script: - source /opt/intel/2020/bin/compilervars.sh intel64 - ../configure --with-precision=quadruple FC=ifort2020 FCFLAGS="-O1" F77=ifort2020 --disable-static --prefix="`pwd`/install" --enable-fastjet --enable-openloops > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check tags: - ifort # DEPLOY (MASTER) .deploy_template: &deploy_definition stage: deploy tags: - deployment only: - master before_script: - eval `ssh-agent -s` - ssh-add /nfs/theoc/data1/whizard/sl7/gitlab_runner/id_rsa /nfs/theoc/data1/whizard/sl7/gitlab_runner/id_rsa_runner_wgs except: - production - schedules - /^.*xfail.*$/ notify slack: stage: report tags: - deployment only: - master before_script: - eval `ssh-agent -s` - ssh-add /nfs/theoc/data1/whizard/sl7/gitlab_runner/id_rsa /nfs/theoc/data1/whizard/sl7/gitlab_runner/id_rsa_runner_wgs when: on_failure script: - echo "Build on \`$CI_BUILD_REF_NAME\` failed! Commit \`$(git log -1 --oneline)\` See pipeline $CI_PIPELINE_URL" | slacktee.sh -a "danger" -p --config /nfs/theoc/data1/whizard/sl7/gitlab_runner/.slacktee deploy to production: <<: *deploy_definition environment: production script: - export GIT_SSH=/nfs/theoc/data1/whizard/sl7/gitlab_runner/ssh.sh - git remote set-url --push origin git@gitlab.tp.nt.uni-siegen.de:whizard/development.git - git checkout master - git pull - git checkout production - git merge master --ff-only - git push deploy to public git: <<: *deploy_definition environment: public_git dependencies: [] script: - export GIT_SSH=/nfs/theoc/data1/whizard/sl7/gitlab_runner/ssh.sh - git log --format="%h %s" -n 1 HEAD > `pwd`/../git_public.msg - cd .. - rm -rf public/ - git clone git@gitlab.tp.nt.uni-siegen.de:whizard/public.git - rsync -r --delete --log-file=rsync.log --out-format='%i %n%L' --exclude=.git* development/ public - diff -r --exclude=.git* development public || exit 1 - cp development/.gitignore public/ - mv rsync.log development/ - cd public - echo -e ".gitignore" >> .gitignore - echo -e ".gitlab/issue_templates" >> .gitignore - echo -e ".gitlab-ci.yml" >> .gitignore - echo -e "CONTRIBUTING.md" >> .gitignore - echo -e "synchronize.sh" >> .gitignore - echo -e "share/debug/*" >> .gitignore - echo -e "build/*" >> .gitignore - echo -e "install/*" >> .gitignore - git add --all - git diff-index --exit-code HEAD || git commit --file=`pwd`/../git_public.msg - git push artifacts: expire_in: 3 weeks when: always paths: - rsync.log deploy to svn: <<: *deploy_definition environment: svn script: - svn co --config-dir /nfs/theoc/data1/whizard/sl7/gitlab_runner/.subversion/ svn+ssh://vcs@phab.hepforge.org/source/whizardsvn/trunk trunk - cp .git trunk/ -r - cd trunk - git status - git checkout -- . - git clean -d -f - svn diff --config-dir /nfs/theoc/data1/whizard/sl7/gitlab_runner/.subversion/ > ../svndiff.log || true - svn status --config-dir /nfs/theoc/data1/whizard/sl7/gitlab_runner/.subversion/ | grep "^?" | grep -v '.git$' | awk '{print $2}' >| ../svn-add-files.log || true - svn status --config-dir /nfs/theoc/data1/whizard/sl7/gitlab_runner/.subversion/ | grep "^\!" | grep -v '.git$' | awk '{print $2}' >| ../svn-del-files.log || true - if test -s ../svn-add-files.log ; then cat ../svn-add-files.log | xargs svn add --config-dir /nfs/theoc/data1/whizard/sl7/gitlab_runner/.subversion/ ; fi - if test -s ../svn-del-files.log ; then cat ../svn-del-files.log | xargs svn rm --config-dir /nfs/theoc/data1/whizard/sl7/gitlab_runner/.subversion/ ; fi - git log --format="%h %s" -n 1 HEAD > svn-commit.msg - svn commit --config-dir /nfs/theoc/data1/whizard/sl7/gitlab_runner/.subversion/ --file=svn-commit.msg artifacts: paths: - svndiff.log - svn-add-files.log - svn-del-files.log # NIGHTLY BUILD (DAILY) build whizard tarball: stage: daily environment: nightly only: refs: - schedules variables: - $type == "nightly" before_script: + - mkdir /home/gitlab-runner/.ssh/ || true + - ssh-keyscan -H beryllium > /home/gitlab-runner/.ssh/known_hosts + - chmod 600 /home/gitlab-runner/.ssh/known_hosts + - echo "${SSH_SEC_TARBALL}" > /home/gitlab-runner/.ssh/id_rsa + - chmod 400 /home/gitlab-runner/.ssh/id_rsa - ./build_master.sh - autoreconf - command -v opam && eval $(opam config env --root="$OPAM_ROOT" --switch="$OPAM_SWITCH") - mkdir build || true - cd build script: - ../configure --enable-distribution FC=nagfor FCFLAGS="$NAGFOR_OPTIONS" F77=nagfor > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 dist > make-dist.log - mv "$(ls whizard-*.tar.gz)" "$(basename $(ls whizard-*.tar.gz) .tar.gz)-$(date -Idate)-$(git rev-parse --short HEAD).tar.gz" - ssh whizard@beryllium 'cd tarballs && rm -f whizard-nightly-latest.tar.gz' - ssh whizard@beryllium 'cd tarballs && (for f in $(ls -1t *.tar.gz | tail -n +5); do rm -f "${f}"; done)' - rsync whizard*.tar.gz whizard@beryllium:~/tarballs - ssh whizard@beryllium 'cd tarballs && rm -f *.sig; for f in $(ls -tr1 *.tar.gz); do sha256sum "${f}" > "${f}.sig"; done' - ssh whizard@beryllium 'cd tarballs && ln -sfn "$(ls -1t whizard-*.tar.gz | head -n1)" whizard-nightly-latest.tar.gz' - ssh whizard@beryllium 'cd tarballs && ln -sfn "$(ls -1t whizard-*.tar.gz.sig | head -n1)" whizard-nightly-latest.tar.gz.sig' + after_script: + - shred --remove /home/gitlab-runner/.ssh/id_rsa artifacts: expire_in: 3 weeks when: always paths: - configure.log - make.log - make-dist.log tags: - - jenkins2 - nagfor - latex # WHIZARD IMAGE (WEEKLY) build whizard image: stage: weekly script: - git clone https://${WHIZARD_DOCKER_USER}:${WHIZARD_DOCKER_PASSWORD}@gitlab.tp.nt.uni-siegen.de/whizard/docker.git - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} https://gitlab.tp.nt.uni-siegen.de:4567 - docker build -t gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-master -f docker/whizard-master/Dockerfile . - docker push gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-master tags: - whizard only: refs: - schedules variables: - $type == "weekly" # GCC TRUNK IMAGE (WEEKLY) build gcc-trunk image: stage: weekly script: - git clone https://${WHIZARD_DOCKER_USER}:${WHIZARD_DOCKER_PASSWORD}@gitlab.tp.nt.uni-siegen.de/whizard/docker.git - cd docker/whizard-gcc-trunk - wget http://mirrors.ctan.org/install/fonts/doublestroke.tds.zip - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} gitlab.tp.nt.uni-siegen.de:4567 - docker build --no-cache=true -t gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-gcc-trunk . - docker push gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-gcc-trunk tags: - whizard only: refs: - schedules variables: - $type == "weekly" # SUBPACKAGES (WEEKLY) .subpackage_template: &subpackage_definition <<: *distcheck_definition stage: weekly only: refs: - schedules variables: - $type == "weekly" except: circe1.distcheck.static.gfortran-11.2.0: <<: *subpackage_definition before_script: - command -v opam && eval $(opam config env --root="$OPAM_ROOT" --switch="$OPAM_SWITCH") - ./build_master.sh CIRCE1 - autoreconf - mkdir -p build - cd build circe2.distcheck.static.gfortran-11.2.0: <<: *subpackage_definition before_script: - command -v opam && eval $(opam config env --root="$OPAM_ROOT" --switch="$OPAM_SWITCH") - ./build_master.sh CIRCE2 - autoreconf - mkdir -p build - cd build vamp.distcheck.static.gfortran-11.2.0: <<: *subpackage_definition before_script: - command -v opam && eval $(opam config env --root="$OPAM_ROOT" --switch="$OPAM_SWITCH") - ./build_master.sh VAMP - autoreconf - mkdir -p build - cd build omega.distcheck.static.gfortran-11.2.0: <<: *subpackage_definition before_script: - command -v opam && eval $(opam config env --root="$OPAM_ROOT" --switch="$OPAM_SWITCH") - ./build_master.sh OMEGA - autoreconf - mkdir -p build - cd build script: - ../configure FC=gfortran FCFLAGS="-O2 $GFORTRAN_OPTIONS" F77=gfortran --enable-distribution --enable-static --prefix="`pwd`/install" > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check - make $JOBS -s V=1 extra-distcheck > make-distcheck.log whizard.distcheck.static.gfortran-11.2.0: <<: *subpackage_definition before_script: - command -v opam && eval $(opam config env --root="$OPAM_ROOT" --switch="$OPAM_SWITCH") - ./build_master.sh - autoreconf - mkdir -p build - cd build script: - ../configure FC=gfortran FCFLAGS="-O2 $GFORTRAN_OPTIONS" F77=gfortran --enable-distribution --enable-static --prefix="`pwd`/install" > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check - make $JOBS -s V=1 extra-distcheck > make-distcheck.log # EXAMPLES (WEEKLY) .examples_template: &examples_definition stage: weekly-applications image: gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-master only: refs: - schedules variables: - $type == "weekly" before_script: - source /home/whizard/GoSam/local/bin/gosam_setup_env.sh - eval $(opam config env --root="$OPAM_ROOT" --switch="$OPAM_SWITCH") - cd /home/whizard/whizard/share/examples <<: *docker_definition run matching examples: <<: *examples_definition script: - for s in *Matching*.sin ; do whizard $s; done run NLO examples: <<: *examples_definition script: - for s in *NLO*OpenLoops.sin ; do whizard $s; done # - for s in *NLO*GoSam.sin ; do whizard $s; done run collider examples: <<: *examples_definition script: - for s in HERA_DIS.sin LEP_cc10.sin LEP_higgs.sin W-endpoint.sin Z-lineshape.sin ; do whizard $s; done run other examples: <<: *examples_definition script: - for s in Zprime.sin casc_dec.sin circe1.sin eeww_polarized.sin fourjetsLO.sin ; do whizard $s; done # Extended Tests (WEEKLY) .ext_tests_template: &ext_tests_definition stage: weekly-applications image: gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-master only: refs: - schedules variables: - $type == "weekly" before_script: - source /home/whizard/GoSam/local/bin/gosam_setup_env.sh - eval $(opam config env --root="$OPAM_ROOT" --switch="$OPAM_SWITCH") - cd /home/whizard/whizard/_build/tests <<: *docker_definition run extended NLO tests: <<: *ext_tests_definition script: - cd ext_tests_nlo - make $JOBS -s V=1 check after_script: - cp /home/whizard/whizard/_build/tests/ext_tests_nlo/test-suite.log $CI_PROJECT_DIR/test-suite_ext_nlo.log artifacts: expire_in: 3 weeks when: always paths: - test-suite_ext_nlo.log build whizard with gcc-trunk: <<: *default_definition <<: *docker_definition stage: weekly-applications image: gitlab.tp.nt.uni-siegen.de:4567/whizard/development:whizard-gcc-trunk only: refs: - schedules variables: - $type == "weekly" except: dependencies: script: - ../configure --disable-static --prefix="`pwd`/install" > configure.log - make $JOBS -s V=1 > make.log - make $JOBS -s V=1 install > make-install.log - make $JOBS -s V=1 check notify slack weekly: stage: weekly-report tags: - deployment only: refs: - schedules variables: - $type == "weekly" before_script: - eval `ssh-agent -s` - ssh-add /nfs/theoc/data1/whizard/sl7/gitlab_runner/id_rsa /nfs/theoc/data1/whizard/sl7/gitlab_runner/id_rsa_runner_wgs when: on_failure script: - echo "Weekly build on \`$CI_BUILD_REF_NAME\` failed! Commit \`$(git log -1 --oneline)\`. See pipeline $CI_PIPELINE_URL" | slacktee.sh -a "warning" -p --config /nfs/theoc/data1/whizard/sl7/gitlab_runner/.slacktee