variables: GIT_SUBMODULE_STRATEGY: recursive TERM: linux MATLAB_VERSION: R2022b OLD_MATLAB_VERSION: R2014a OCTAVE_VERSION: 7.3.0 # The next stanza creates the version number used for the source tarball and the # binary packages. Here are the following possible cases: # - if VERSION was already set (when manually running a pipeline), use it # - if we are in the official Dynare repository: # + if on a tag: use the tag # + if on master: use 6-unstable-$TIMESTAMP-$COMMIT # + on another branch: use $BRANCH-$TIMESTAMP-$COMMIT # - if in a personal repository: use $USER-$TIMESTAMP-$COMMIT before_script: - '[[ -z $VERSION ]] && [[ $CI_PROJECT_NAMESPACE == Dynare ]] && [[ -n $CI_COMMIT_TAG ]] && export VERSION=$CI_COMMIT_TAG' - '[[ -z $VERSION ]] && [[ $CI_PROJECT_NAMESPACE == Dynare ]] && [[ $CI_COMMIT_REF_NAME == master ]] && export VERSION=6-unstable-$(date +%F-%H%M)-$CI_COMMIT_SHORT_SHA' - '[[ -z $VERSION ]] && [[ $CI_PROJECT_NAMESPACE == Dynare ]] && export VERSION=$CI_COMMIT_REF_NAME-$(date +%F-%H%M)-$CI_COMMIT_SHORT_SHA' - '[[ -z $VERSION ]] && export VERSION=$CI_PROJECT_NAMESPACE-$(date +%F-%H%M)-$CI_COMMIT_SHORT_SHA' stages: - build - test - pkg - deploy build_binaries: stage: build script: - autoreconf -si - ./configure --with-matlab=/usr/local/MATLAB/$MATLAB_VERSION --with-octave=/usr/local/octave/$OCTAVE_VERSION PACKAGE_VERSION=$VERSION PACKAGE_STRING="dynare $VERSION" - make -j $(nproc) LN_S="cp -p" artifacts: paths: - preprocessor/dynare-preprocessor - mex/octave/ - mex/matlab/ expire_in: 3 days build_doc: stage: build script: - autoreconf -si - ./configure --disable-matlab --disable-octave PACKAGE_VERSION=$VERSION PACKAGE_STRING="dynare $VERSION" - make -j $(nproc) pdf html artifacts: paths: - doc/manual/build/ - doc/**/*.pdf - preprocessor/doc/*/*.pdf expire_in: 3 days pkg_source: stage: pkg script: - rm doc/manual/source/_static/mathjax && sed -i "/^mathjax_path *=/d" doc/manual/source/conf.py - 'for f in configure.ac preprocessor/configure.ac mex/build/matlab/configure.ac mex/build/octave/configure.ac; do sed -i "s/^AC_INIT(\[\(.*\)\],\s*\[\(.*\)\])/AC_INIT([\1], [$VERSION])/" $f; done' - autoreconf -si - ./configure --with-matlab=/usr/local/MATLAB/$MATLAB_VERSION --with-octave=/usr/local/octave/$OCTAVE_VERSION - make dist artifacts: paths: - dynare-*.tar.xz expire_in: 3 days needs: [] pkg_windows: stage: pkg script: - ln -s ~/tarballs windows/deps/ - make -C windows cache: key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" paths: - windows/deps/sources64/ - windows/deps/lib64/ # We do not cache lib64-msys2, mingw64, octave64 and # matlab64, because those are simply extracted from a tarball. It # would be a waste of space and of (re-compression) time. artifacts: paths: - windows/exe/* - windows/7z/* - windows/zip/* expire_in: 3 days needs: [ "build_doc" ] pkg_macOS: stage: pkg script: - ln -s ~/tarballs macOS/deps/ - make -C macOS cache: key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" paths: - macOS/deps/sources64/ - macOS/deps/lib64/ tags: - macOS artifacts: paths: - macOS/pkg/* expire_in: 3 days needs: [ "build_doc" ] .test_matlab_template: stage: test artifacts: paths: - tests/**/*.m.log - tests/**/*.m.trs - tests/**/*.jnl - tests/run_test_matlab_output.txt when: always needs: [ "build_binaries" ] test_matlab: extends: .test_matlab_template script: - autoreconf -si - ./configure --disable-octave --with-matlab=/usr/local/MATLAB/$MATLAB_VERSION - make -j $(($(nproc) * 3 / 4)) -C tests check-matlab test_old_matlab: extends: .test_matlab_template script: - autoreconf -si - ./configure --disable-octave --with-matlab=/usr/local/MATLAB/$OLD_MATLAB_VERSION - make -C mex/build/matlab clean - make -j $(nproc) -C mex/build/matlab - make -j $(($(nproc) * 3 / 4)) -C tests check-matlab when: manual test_octave: stage: test variables: OPENBLAS_NUM_THREADS: 1 script: - autoreconf -si - ./configure --disable-matlab --with-octave=/usr/local/octave/$OCTAVE_VERSION - make -j $(nproc) -C tests check-octave artifacts: paths: - tests/**/*.o.log - tests/**/*.o.trs - tests/**/*.jnl - tests/run_test_octave_output.txt when: always needs: [ "build_binaries" ] when: manual # For the deploy jobs, we don’t use the “needs” keyword, since we don’t want # those jobs to start before the “test” and “pkg” stages have succeeded. Hence # we stick to the “dependencies” keyword. deploy_manual_unstable: stage: deploy rules: - if: '$CI_PROJECT_NAMESPACE == "Dynare" && $CI_COMMIT_REF_NAME == "master"' when: on_success - when: never tags: - restricted dependencies: - build_doc script: - rm -rf doc/manual/build/html/_static/mathjax - ln -s /usr/share/javascript/mathjax doc/manual/build/html/_static/mathjax - rsync --recursive --links --delete doc/manual/build/html/ /srv/www.dynare.org/manual-unstable/ deploy_snapshot_unstable: stage: deploy rules: - if: '$CI_PROJECT_NAMESPACE == "Dynare" && $CI_COMMIT_REF_NAME == "master"' when: on_success - when: never tags: - restricted dependencies: - pkg_source - pkg_windows - pkg_macOS script: - f=(windows/exe/*) && osslsigncode sign -pkcs12 ~/cepremap-comodo-sectigo-code-signing.p12 -n Dynare -i https://www.dynare.org -t http://timestamp.comodoca.com -in ${f[0]} -out ${f[0]}.signed && mv ${f[0]}.signed ${f[0]} - cp *.tar.xz /srv/www.dynare.org/snapshot/source/ && ln -sf *.tar.xz /srv/www.dynare.org/snapshot/source/dynare-latest-src.tar.xz - f=(windows/exe/*) && cp ${f[0]} /srv/www.dynare.org/snapshot/windows/ && ln -sf ${f[0]##*/} /srv/www.dynare.org/snapshot/windows/dynare-latest-win.exe - f=(windows/7z/*) && cp ${f[0]} /srv/www.dynare.org/snapshot/windows-7z/ && ln -sf ${f[0]##*/} /srv/www.dynare.org/snapshot/windows-7z/dynare-latest-win.7z - f=(windows/zip/*) && cp ${f[0]} /srv/www.dynare.org/snapshot/windows-zip/ && ln -sf ${f[0]##*/} /srv/www.dynare.org/snapshot/windows-zip/dynare-latest-win.zip - f=(macOS/pkg/*) && cp ${f[0]} /srv/www.dynare.org/snapshot/macos/ && ln -sf ${f[0]##*/} /srv/www.dynare.org/snapshot/macos/dynare-latest-macos.pkg - ~/update-snapshot-list.sh - curl -X POST -F token="$WEBSITE_PIPELINE_TRIGGER_TOKEN" -F ref=master https://git.dynare.org/api/v4/projects/40/trigger/pipeline