223 lines
7.5 KiB
YAML
223 lines
7.5 KiB
YAML
variables:
|
||
GIT_SUBMODULE_STRATEGY: recursive
|
||
TERM: linux
|
||
MATLAB_VERSION: R2021b
|
||
OLD_MATLAB_VERSION: R2014a
|
||
OCTAVE_VERSION: 6.4.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/
|
||
- dynare++/parser/cc/*_tab.cc
|
||
- dynare++/parser/cc/*_tab.hh
|
||
- dynare++/parser/cc/*_ll.cc
|
||
- dynare++/src/*_tab.cc
|
||
- dynare++/src/*_tab.hh
|
||
- dynare++/src/*_ll.cc
|
||
- dynare++/**/*.o
|
||
- dynare++/**/*.a
|
||
- dynare++/integ/src/quadrature-points
|
||
- dynare++/src/dynare++
|
||
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
|
||
- dynare++/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
|
||
|
||
test_dynare++:
|
||
stage: test
|
||
script:
|
||
- autoreconf -si
|
||
- ./configure --disable-matlab --disable-octave
|
||
- touch dynare++/parser/cc/*_tab.cc dynare++/parser/cc/*_tab.hh dynare++/parser/cc/*_ll.cc dynare++/src/*_tab.cc dynare++/src/*_tab.hh dynare++/src/*_ll.cc
|
||
- touch dynare++/*/*.o dynare++/*/*/*.o
|
||
- touch dynare++/*/*.a dynare++/*/*/*.a
|
||
- touch dynare++/integ/src/quadrature-points dynare++/src/dynare++
|
||
- make -C dynare++ check
|
||
needs: [ "build_binaries" ]
|
||
artifacts:
|
||
paths:
|
||
- dynare++/kord/out.txt
|
||
- dynare++/tests/*.jnl
|
||
- dynare++/tests/*.m
|
||
- dynare++/tests/*.mat
|
||
- dynare++/tests/*.dump
|
||
|
||
# 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
|