# This script sets up a Continuous Reproducibility system for GNSS-SDR at GitLab # # Useful links: # Website: https://gnss-sdr.org # Upstream repository: https://github.com/gnss-sdr/gnss-sdr.git # Dockerfile at https://github.com/carlesfernandez/docker-gnsssdr # Docker cloud image: carlesfernandez/docker-gnsssdr # # In order to use this system and be able to make changes, you will need: # - A GitHub account https://github.com # - A GitLab account https://gitlab.com # - A Docker Hub account https://hub.docker.com # - A repository at Docker Hub. # # In order to use this system, please fork at GitHub the upstream # repository; import that forked repo at GitLab; then add, commit and push to # your GitLab repo this .gitlab-ci.yml file; and finally go to your project page # at GitLab and set up the following secret variables. In the left panel: # Settings > CI / CD > Secret variables # # DOCKER_HUB_USER # DOCKER_HUB_REPO # DOCKER_HUB_PASSWORD # # You will need either to protect your branch, or to leave those variables # unproctected. # # For instance, my settings are: # DOCKER_HUB_USER = carlesfernandez # DOCKER_HUB_REPO = docker-gnsssdr # DOCKER_HUB_PASSWORD = ******************** # # If you want to make changes in the source code, branch-off from the 'next' # branch of your forked repository and, if needed, add new jobs in this # file at the 'deploy' and 'experiment' stages. Please do not use the next # branch for your changes, always open a new branch from next and work there. # # Feel free to delete the docker-gnsssdr and docker-pybombs-gnsssdr jobs, # they are for developers' team only. Actually, this is their CI/CD system. # # More info about how to contribute to GNSS-SDR at # https://github.com/gnss-sdr/gnss-sdr/blob/master/CONTRIBUTING.md # # (C) Carles Fernandez-Prades, 2018 cfernandez@cttc.cat # This is performed before the scripts in the stages step before_script: - source /etc/profile # Defines stages which are to be executed stages: - build - test # Stage "build" crosscompile: image: ubuntu:xenial stage: build tags: - kepler script: - apt-get update - apt-get install -y build-essential xz-utils curl gawk wget git-core diffstat unzip texinfo gcc-multilib chrpath socat cpio python python3 python3-pip python3-pexpect debianutils iputils-ping - curl -k https://sites.cttc.es/gnss_files/SDK/Thud/oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh --output oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh - echo "4f74d9ab0f076e59215be2d1cb674a52 oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh" > sdk.md5 - md5sum -c sdk.md5 - chmod +x ./oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh - sh ./oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh -y - . /usr/local/oecore-x86_64/environment-setup-armv7ahf-neon-oe-linux-gnueabi - cd build - cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchains/oe-sdk_cross.cmake -DENABLE_OSMOSDR=ON -DENABLE_UNIT_TESTING_EXTRA=ON -DENABLE_SYSTEM_TESTING_EXTRA=ON -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_FMCOMMS2=ON -DENABLE_AD9361=ON -DENABLE_RAW_UDP=ON -DENABLE_INSTALL_TESTS=ON -DCMAKE_C_FLAGS_RELEASE="-s" -DCMAKE_CXX_FLAGS_RELEASE="-s" -DENABLE_PACKAGING=ON -DENABLE_FPGA=ON .. - make -j - mkdir local_install - make install DESTDIR=./local_install - rm ./local_install/usr/bin/front-end-cal - rm ./local_install/usr/bin/ttff - cd .. - mkdir binaries - mkdir binaries/bin - mkdir binaries/share - cp build/local_install/usr/bin/* binaries/bin/ - cp build/local_install/usr/share/gnss-sim/* binaries/share/ allow_failure: true artifacts: paths: - binaries/* <<<<<<< HEAD ======= debian8: image: debian:jessie-slim stage: build script: - apt-get update - apt-get install -y --no-install-recommends build-essential libtool automake libhdf5-dev cmake git ca-certificates libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libboost-chrono-dev libboost-serialization-dev liblog4cpp5-dev gnuradio-dev gr-osmosdr libpugixml-dev libpcap-dev libblas-dev liblapack-dev libgfortran-4.9-dev libgflags-dev libgoogle-glog-dev libgnutls-openssl-dev python-mako python-six libgtest-dev - cd build - cmake -DENABLE_OSMOSDR=ON -DENABLE_RAW_UDP=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install allow_failure: true debian9: image: debian:stretch-slim stage: build script: - apt-get update - apt-get install -y --no-install-recommends build-essential cmake git libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libboost-chrono-dev libboost-serialization-dev liblog4cpp5-dev gnuradio-dev gr-osmosdr libpugixml-dev libpcap-dev libblas-dev liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev libgnutls-openssl-dev python-mako python-six libmatio-dev googletest - cd build - cmake -DENABLE_OSMOSDR=ON -DENABLE_RAW_UDP=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install debian10: image: debian:buster-slim stage: build script: - apt-get update - apt-get upgrade -y - apt-get install -y --no-install-recommends build-essential cmake git libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libboost-chrono-dev libboost-serialization-dev liblog4cpp5-dev gnuradio-dev gr-osmosdr libiio-dev gr-iio libpugixml-dev libpcap-dev libblas-dev liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev libgnutls-openssl-dev python-mako python-six libmatio-dev libgtest-dev - cd build - cmake -DENABLE_OSMOSDR=ON -DENABLE_RAW_UDP=ON -DENABLE_FMCOMMS2=ON -DENABLE_AD9361=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install allow_failure: true fedora26: image: fedora:26 stage: build before_script: - source ~/.bash_profile script: - yum install -y make automake gcc gcc-c++ kernel-devel cmake git boost-devel boost-date-time boost-system boost-filesystem boost-thread boost-chrono boost-serialization log4cpp-devel gnuradio-devel gr-osmosdr-devel pugixml-devel libpcap-devel blas-devel lapack-devel armadillo-devel gflags-devel glog-devel openssl-devel python-mako python-six matio-devel - cd build - cmake -DENABLE_OSMOSDR=ON -DENABLE_RAW_UDP=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install allow_failure: true fedora28: image: fedora:28 stage: build before_script: - source ~/.bash_profile script: - yum install -y make automake gcc gcc-c++ kernel-devel cmake git boost-devel boost-date-time boost-system boost-filesystem boost-thread boost-chrono boost-serialization log4cpp-devel gnuradio-devel gr-osmosdr-devel pugixml-devel libpcap-devel blas-devel lapack-devel armadillo-devel gflags-devel glog-devel openssl-devel python-mako python-six matio-devel - cd build - cmake -DENABLE_OSMOSDR=ON -DENABLE_RAW_UDP=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install fedora29: image: fedora:29 stage: build before_script: - source ~/.bash_profile script: - yum install -y make gcc gcc-c++ kernel-devel cmake git boost-devel boost-date-time boost-system boost-filesystem boost-thread boost-chrono boost-serialization log4cpp-devel gnuradio-devel pugixml-devel libpcap-devel blas-devel lapack-devel armadillo-devel gflags-devel glog-devel openssl-devel python3-mako python3-six matio-devel - cd build - cmake -DENABLE_RAW_UDP=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install allow_failure: true fedora-rawhide: image: fedora:rawhide stage: build before_script: - source ~/.bash_profile script: - dnf upgrade -y --nogpgcheck - yum install -y automake gcc gcc-c++ kernel-devel make cmake git boost-devel boost-date-time boost-system boost-filesystem boost-thread boost-chrono boost-serialization log4cpp-devel gnuradio-devel gr-osmosdr-devel pugixml-devel libpcap-devel blas-devel lapack-devel armadillo-devel gflags-devel glog-devel openssl-devel python-mako python-six matio-devel - cd build - cmake -DENABLE_OSMOSDR=ON -DENABLE_RAW_UDP=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install allow_failure: true opensuse42.3: image: opensuse/leap:42.3 stage: build before_script: - pwd script: - zypper -n up - zypper -n install cmake git gcc-c++ boost-devel log4cpp-devel gnuradio-devel pugixml-devel libpcap-devel armadillo-devel libtool automake hdf5-devel openssl-devel python-Mako python-six - cd build - cmake -DENABLE_PACKAGING=ON -DENABLE_RAW_UDP=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install allow_failure: true opensuse-leap15.0: image: opensuse/leap:15.0 stage: build before_script: - pwd script: - zypper -n up - zypper -n install cmake git gcc-c++ boost-devel libboost_atomic-devel libboost_system-devel libboost_filesystem-devel libboost_date_time-devel libboost_thread-devel libboost_chrono-devel libboost_serialization-devel log4cpp-devel gtest gnuradio-devel pugixml-devel libpcap-devel armadillo-devel libtool automake hdf5-devel libopenssl-devel python-Mako python-six - cd build - cmake -DENABLE_PACKAGING=ON -DENABLE_RAW_UDP=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install allow_failure: true opensuse-tumbleweed: image: opensuse/tumbleweed stage: build before_script: - pwd script: - zypper -n dup - zypper -n install cmake git gcc-c++ boost-devel libboost_atomic-devel libboost_system-devel libboost_filesystem-devel libboost_date_time-devel libboost_thread-devel libboost_chrono-devel libboost_serialization-devel log4cpp-devel gtest gnuradio-devel pugixml-devel libpcap-devel armadillo-devel libtool automake hdf5-devel libopenssl-devel python3-Mako python3-six - cd build - cmake -DENABLE_RAW_UDP=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install allow_failure: true ubuntu14.04: image: ubuntu:trusty stage: build script: - apt-get update - apt-get install -y apt-file - apt-file update - apt-get install -y software-properties-common - add-apt-repository -y ppa:myriadrf/gnuradio - add-apt-repository -y ppa:myriadrf/drivers - apt-get update - apt-get install -y --no-install-recommends build-essential libtool automake libhdf5-dev cmake git libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libboost-chrono-dev libboost-serialization-dev liblog4cpp5-dev gnuradio-dev libpugixml-dev libpcap-dev libblas-dev liblapack-dev libgfortran-4.7-dev libgflags-dev libgoogle-glog-dev libgnutls-openssl-dev python-mako python-six libgtest-dev - cd build - cmake -DENABLE_RAW_UDP=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install allow_failure: true ubuntu16.04: image: ubuntu:xenial stage: build script: - apt-get update - apt-get install -y --no-install-recommends build-essential cmake git libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libboost-chrono-dev libboost-serialization-dev liblog4cpp5-dev gnuradio-dev gr-osmosdr libpugixml-dev libpcap-dev libblas-dev liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev libgnutls-openssl-dev python-mako python-six libmatio-dev libgtest-dev - cd build - cmake -DENABLE_OSMOSDR=ON -DENABLE_RAW_UDP=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install allow_failure: true ubuntu18.04: image: ubuntu:bionic stage: build script: - apt-get update - apt-get install -y --no-install-recommends build-essential cmake git libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libboost-chrono-dev libboost-serialization-dev liblog4cpp5-dev gnuradio-dev gr-osmosdr libpugixml-dev libpcap-dev libblas-dev liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev libgnutls-openssl-dev python-mako python-six libmatio-dev googletest - cd build - cmake -DENABLE_OSMOSDR=ON -DENABLE_RAW_UDP=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install ubuntu18.10: image: ubuntu:cosmic stage: build script: - apt-get update - apt-get install -y --no-install-recommends build-essential cmake git libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libboost-chrono-dev libboost-serialization-dev liblog4cpp5-dev gnuradio-dev gr-osmosdr libpugixml-dev libpcap-dev libblas-dev liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev libgnutls-openssl-dev python-mako python-six libmatio-dev libgtest-dev - cd build - cmake -DENABLE_OSMOSDR=ON -DENABLE_RAW_UDP=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install allow_failure: true ubuntu19.04: image: ubuntu:disco stage: build script: - apt-get update - apt-get install -y --no-install-recommends build-essential cmake git libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libboost-chrono-dev libboost-serialization-dev liblog4cpp5-dev gnuradio-dev gr-osmosdr libpugixml-dev libpcap-dev libblas-dev liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev libgnutls-openssl-dev python3-mako python3-six libmatio-dev libgtest-dev - cd build - cmake -DENABLE_OSMOSDR=ON -DENABLE_RAW_UDP=ON .. - NPROC=$(grep -c ^processor /proc/cpuinfo) - make -j$(($NPROC+1)) - make check - make install allow_failure: true >>>>>>> f04e63f4de169d363141d09d384f5f68c131cf86 # Stage "test" run-tests-armhf: image: carlesfernandez/gnsssdr-dev-arm32v7:thud stage: test tags: - arm when: manual dependencies: - crosscompile script: - cp binaries/bin/* /usr/bin/ - mkdir /usr/share/gnss-sim/ - cp -f binaries/share/* /usr/share/gnss-sim/ - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib - ldconfig - volk_profile -v 8111 - volk_gnsssdr_profile - position_test - run_tests --gtest_filter=Matio* - run_tests --gtest_filter=HybridObservablesTest* --PLL_bw_hz_start=25.0 --DLL_bw_hz_start=1.5 --PLL_narrow_bw_hz=10.0 --DLL_narrow_bw_hz=0.75 --disable_generator=1 --enable_external_signal_file=1 --signal_file=/captures/gitlab_test_signals/static/180417100529.A_L1E1_12500000Hz_ichar.dat --fs_gen_sps=12500000 --skip_samples=125000000 --external_signal_acquisition_threshold=4.0 --extend_correlation_symbols=5 --external_signal_acquisition_doppler_step_hz=10 --trk_test_implementation=GPS_L1_CA_DLL_PLL_Tracking --show_plots=0 --filename_rinex_obs=/captures/gitlab_test_signals/static/true_data_180417100529/rinex_obs/rinex-obs_V1_A1-static_vehicle.txt --skip_trk_transitory_s=30 --gtest_output=xml:test_results.xml allow_failure: true