image: docker:latest variables: DOCKER_DRIVER: overlay BRANCH: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME COMMIT: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA NIGHTLY: $CI_REGISTRY_IMAGE:nightly TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG GSTLAL_DIR: $CI_PROJECT_DIR/opt/gstlal before_script: # Set up directory structure and copy over built-dependencies from container: - mkdir public - mkdir -p ${GSTLAL_DIR} # Define GstLAL build parameters: - export PATH="${GSTLAL_DIR}/bin:/usr/lib/ccache:/opt/local/libexec/ccache:${PATH}" - export LD_LIBRARY_PATH="${GSTLAL_DIR}/lib:${GSTLAL_DIR}/lib64:${LD_LIBRARY_PATH}" - export LIBRARY_PATH="${GSTLAL_DIR}/lib:${GSTLAL_DIR}/lib64:${LIBRARY_PATH}" - export PKG_CONFIG_PATH="${GSTLAL_DIR}/lib/pkgconfig:${GSTLAL_DIR}/lib64/pkgconfig:${PKG_CONFIG_PATH}" - export GI_TYPELIB_PATH="${GSTLAL_DIR}/lib/girepository-1.0:${GSTLAL_DIR}/lib64/girepository-1.0:${GI_TYPELIB_PATH}" - export GST_PLUGIN_PATH="${GSTLAL_DIR}/lib/gstreamer-1.0:${GSTLAL_DIR}/lib64/gstreamer-1.0:${GST_PLUGIN_PATH}" - export PYTHONPATH="${GSTLAL_DIR}/lib64/python2.7/site-packages:${GSTLAL_DIR}/lib/python2.7/site-packages:${PYTHONPATH}" - export GST_REGISTRY_1_0="${GSTLAL_DIR}/registry.bin" - export CCACHE_DIR=${PWD}/ccache # Define MKL environment variables: - export MKLROOT="/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl" - export LIBRARY_PATH="/opt/intel/compilers_and_libraries_2018.3.222/linux/tbb/lib/intel64_lin/gcc4.7:/opt/intel/compilers_and_libraries_2018.3.222/linux/compiler/lib/intel64_lin:/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64_lin" - export CPATH="/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl/include" - export PATH=PATH="/opt/intel/compilers_and_libraries_2018.3.222/linux/bin/intel64:${PATH}" - export PKG_CONFIG_PATH="/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl/bin/pkgconfig:${PKG_CONFIG_PATH}" - export LD_LIBRARY_PATH="/opt/intel/compilers_and_libraries_2018.3.222/linux/compiler/lib/intel64:/opt/intel/compilers_and_libraries_2018.3.222/linux/compiler/lib/intel64_lin:/opt/intel/compilers_and_libraries_2018.3.222/linux/tbb/lib/intel64_lin/gcc4.7:/opt/intel/compilers_and_libraries_2018.3.222/linux/compiler/lib/intel64_lin:/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64_lin" # Define build and linking parameters: - export CFLAGS="-O3 -fPIC -DMKL_ILP64 -m64 -I${MKLROOT}/include -I${GSTLAL_DIR}/include" - export LDFLAGS="-l:libfftw3.so -l:libfftw3f.so -l:libfftw3_threads.so -l:libfftw3f_threads.so -L${GSTLAL_DIR}/lib -L${MKLROOT}/lib/intel64 -Wl,--no-as-needed -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl" - export TMPDIR=/tmp cache: key: $CI_JOB_NAME paths: - ccache stages: - level0 - level1 - level2 - test-gstlal - test-inspiral - test-burst - test-offline - nightly-pages - verify # # build rpms # .levelN:rpm: &levelN-rpm-package image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14 variables: RPM_BUILD_CPUS: 4 script: - if [ -d rpmbuild ]; then yum -y install rpmbuild/RPMS/x86_64/*.rpm; fi - cd ${CI_JOB_NAME#level?:rpm:} - ./00init.sh - ./configure --enable-gtk-doc - make - make dist - rpmbuild -tb --define "_topdir $CI_PROJECT_DIR/rpmbuild" ${CI_JOB_NAME#level?:rpm:}-*.tar.gz artifacts: expire_in: 18h paths: - rpmbuild/RPMS/x86_64/${CI_JOB_NAME#level?:rpm:}-*.rpm - rpmbuild/RPMS/x86_64/python2-${CI_JOB_NAME#level?:rpm:}-*.rpm only: - pushes - schedules - tags - web allow_failure: true level0:rpm:gstlal: <<: *levelN-rpm-package stage: level0 level1:rpm:gstlal-ugly: <<: *levelN-rpm-package stage: level1 dependencies: - level0:rpm:gstlal level2:rpm:gstlal-inspiral: <<: *levelN-rpm-package stage: level2 dependencies: - level0:rpm:gstlal - level1:rpm:gstlal-ugly level2:rpm:gstlal-calibration: <<: *levelN-rpm-package stage: level2 dependencies: - level0:rpm:gstlal - level1:rpm:gstlal-ugly level2:rpm:gstlal-burst: <<: *levelN-rpm-package stage: level2 dependencies: - level0:rpm:gstlal - level1:rpm:gstlal-ugly level0:gstlal: image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14 stage: level0 script: - cd gstlal - ./00init.sh - ./configure --prefix=${GSTLAL_DIR} - make - make install artifacts: expire_in: 3h paths: - ${GSTLAL_DIR} when: always only: - pushes - schedules level1:gstlal-ugly: image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14 stage: level1 dependencies: - level0:gstlal script: - cd gstlal-ugly - ./00init.sh - ./configure --prefix=${GSTLAL_DIR} - make - make install artifacts: expire_in: 3h paths: - ${GSTLAL_DIR} when: always only: - pushes - schedules level2:gstlal-calibration: image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14 stage: level2 dependencies: - level1:gstlal-ugly script: - cd gstlal-calibration - ./00init.sh - ./configure --prefix=${GSTLAL_DIR} - make - make install artifacts: expire_in: 3h paths: - ${GSTLAL_DIR} when: always only: - pushes - schedules level2:gstlal-inspiral: image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14 stage: level2 dependencies: - level1:gstlal-ugly script: - cd gstlal-inspiral - ./00init.sh - ./configure --prefix=${GSTLAL_DIR} --disable-massmodel - make - make install artifacts: expire_in: 3h paths: - ${GSTLAL_DIR} when: always only: - pushes - schedules level2:gstlal-burst: image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14 stage: level2 dependencies: - level1:gstlal-ugly script: - cd gstlal-burst - ./00init.sh - ./configure --prefix=${GSTLAL_DIR} - make - make install artifacts: expire_in: 3h paths: - ${GSTLAL_DIR} when: always only: - pushes - schedules gstlal-verify: image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14 stage: verify script: # ------------------------------------------------------------------- # gstlal # ------------------------------------------------------------------- #- echo "$PWD" > ./pwd_output.out - cd gstlal - ./00init.sh - ./configure --prefix=${GSTLAL_DIR} - make - make install - cd .. # ------------------------------------------------------------------- # gstlal-ugly # ------------------------------------------------------------------- - cd gstlal-ugly - ./00init.sh - ./configure --prefix=${GSTLAL_DIR} - make - make install - cd .. # ------------------------------------------------------------------- # gstlal-calibration # ------------------------------------------------------------------- - cd gstlal-calibration - ./00init.sh - ./configure --prefix=${GSTLAL_DIR} - make - make install - cd .. # ------------------------------------------------------------------- # gstlal-inspiral # ------------------------------------------------------------------- - cd gstlal-inspiral - ./00init.sh - ./configure --prefix=${GSTLAL_DIR} --disable-massmodel - make - make install - cd .. # ------------------------------------------------------------------- # gstlal-burst # ------------------------------------------------------------------- - cd gstlal-burst - ./00init.sh - ./configure --prefix=${GSTLAL_DIR} - make - make install - cd .. only: - manual test:gstlal: image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14 stage: test-gstlal dependencies: - level0:gstlal script: - export GSTLAL_FIR_WHITEN=0 ## Get the necessary ROM data: #- git clone https://git.ligo.org/lscsoft/lalsuite-extra.git ${GSTLAL_DIR}/lalsuite-extra #- export LAL_DATA_PATH=${GSTLAL_DIR}/lalsuite-extra/data/lalsimulation/ # Get the necessary ROM data: - git clone https://git.ligo.org/alexander-pace/gstlal-testing-data.git ${GSTLAL_DIR}/gstlal-testing-data - export LAL_DATA_PATH=${GSTLAL_DIR}/gstlal-testing-data/ # Run doctests - cd gstlal - python -m pytest -v --doctest-modules --ignore gst/python --ignore port-tools --ignore tests --ignore share --ignore python/misc.py --ignore python/pipeparts/__init__.py --ignore python/matplotlibhelper.py --ignore python/dagfile.py --ignore python/httpinterface.py only: - pushes - schedules test:gstlal-inspiral: image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14 stage: test-inspiral dependencies: - level2:gstlal-inspiral script: - export GSTLAL_FIR_WHITEN=0 - cd gstlal-inspiral - python -m pytest -v --doctest-modules --ignore gst/python --ignore tests --ignore python/lloidplots.py --ignore python/llweb.py --ignore python/plotsegments.py --ignore python/plotsensitivity.py --ignore python/snglinspiraltable.py --ignore python/spawaveform.py --ignore python/spiirparts.py --ignore python/webpage.py --ignore python/imr_utils.py --ignore python/stats/inspiral_extrinsics.py --ignore python/templates.py --ignore python/inspiral_pipe.py only: - pushes - schedules allow_failure: true test:gstlal-burst: image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14 stage: test-burst dependencies: - level2:gstlal-burst script: - cd gstlal-burst - python -m pytest -v --doctest-modules --ignore python/excesspower --ignore tests/trigger_test_01.py only: - pushes - schedules allow_failure: true test:offline: image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14 stage: test-offline dependencies: - level1:gstlal-ugly - level2:gstlal-inspiral script: # Export variables for the offline tutorial - export GSTLAL_FIR_WHITEN=0 - export GSTLAL_WEBVIS_DIR=../../gstlal-ugly/share/vis/ - export LAL_PATH=${GSTLAL_DIR} - export USER=gstlal_CI_test # Get documentation packages, and download lalsuite-extra data: #- yum -y install texlive-base texlive-dvipng #- yum -y install texlive-latex texlive-latex-base-doc texlive-latex-fonts texlive-latex-bin texlive-latex-bin-bin #- yum -y install texlive-pictures texlive-pstricks texlive-pstricks-doc # Get the necessary ROM data: - git clone https://git.ligo.org/alexander-pace/gstlal-testing-data.git ${GSTLAL_DIR}/gstlal-testing-data - export LAL_DATA_PATH=${GSTLAL_DIR}/gstlal-testing-data/ - cd gstlal-inspiral/tests # Patch gstlal_inspiral to disable servicediscovery/avahi: - patch ${GSTLAL_DIR}/bin/gstlal_inspiral ./disable_service_discovery.patch # Run the makefile: - make -f Makefile.offline_tutorial_test # Unpatch gstlal_inspiral to bring it back to normal: - patch -R ${GSTLAL_DIR}/bin/gstlal_inspiral ./disable_service_discovery.patch - cp -rf ./WEBDIR/gstlal_offline_tutorial ../../public/ artifacts: expire_in: 24h paths: - gstlal-inspiral/tests - public when: always only: - pushes - schedules allow_failure: true pages: #image: aepace/gstlal-dev:el7-mkl-1.14 image: aepace/gstlal-dev:stretch-mkl stage: nightly-pages script: - echo "Building Documentation" # Download and install sphinx, texlive, etc. I'm installing these here # since they don't need to be part of the dev container for running, only # for building documentation. This shaves ~600MB off the size of the gstlal-dev # container: #- yum -y install texlive-base texlive-dvipng texlive-ucs texlive-scheme-full texlive-amsmath texlive-amscls texlive-amsfonts texlive-collection-latexrecommended texlive-collection-basic #- yum -y install texlive-latex texlive-latex-base-doc texlive-latex-fonts texlive-latex-bin texlive-latex-bin-bin #- yum -y install texlive-pictures texlive-pstricks texlive-pstricks-doc texlive-collection-xetex #- yum -y install texlive* # Download and install phython-sphinx. The version available for SL7 (1.1) # is too old (see errors in previous piplines). But newer versions won't # install on SL7 because setuptools is too old. I (Alex) recurred to find # the newest version that would actually install. #- mkdir -p ${GSTLAL_DIR}/lib/python2.7/site-packages #- wget https://github.com/sphinx-doc/sphinx/archive/1.5.zip #- unzip 1.5.zip #- cd sphinx-1.5/ #- python setup.py install --prefix=${GSTLAL_DIR} #- cd .. - export GSTLAL_FIR_WHITEN=0 - export TMPDIR=tmp/ - cd doc; make html - cd ..; cp -rf doc/_build/* public/ dependencies: - level2:gstlal-inspiral - level2:gstlal-calibration - level2:gstlal-burst artifacts: paths: - public only: - master@lscsoft/gstlal - schedules except: - web - pushes