Skip to content
Snippets Groups Projects
.gitlab-ci.yml 13 KiB
Newer Older

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"
    # 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"
Alexander Pace's avatar
Alexander Pace committed
    - export TMPDIR=/tmp
    
    - test-gstlal
    - test-inspiral
    - test-burst
    - test-offline

#
# 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

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

  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
  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
  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
  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
  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}
Alexander Pace's avatar
Alexander Pace committed
    when: always
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

  image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14
    - 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/
    - 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
  image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14
  dependencies:
    - level2:gstlal-inspiral
  script:
    - export GSTLAL_FIR_WHITEN=0
    - 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 --ignore python/plotsnr.py
  allow_failure: true
  image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14
  dependencies:
    - level2:gstlal-burst
  script:
    - cd gstlal-burst
    - python -m pytest -v --doctest-modules --ignore python/excesspower --ignore tests/trigger_test_01.py
  allow_failure: true
  image: containers.ligo.org/alexander-pace/gstlal-dev/gstlal-dev:el7-mkl-1.14
    # Export variables for the offline tutorial
    - export GSTLAL_FIR_WHITEN=0
    - export GSTLAL_WEBVIS_DIR=../../gstlal-ugly/share/vis/
    - 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
    - yum -y install bc
    - 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/

    # 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/
    when: always
  #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
    
    
    # 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 ..
    - cd ..; cp -rf doc/_build/* public/
  dependencies:
    - level2:gstlal-inspiral
    - level2:gstlal-calibration
    - master@lscsoft/gstlal
    - schedules