eid-mw/.ci/builds-linux.yml
2023-02-09 13:33:28 +01:00

442 lines
13 KiB
YAML

.distcheck:
tags:
- docker
- x86
image: $CI_REGISTRY_IMAGE/deb-build:$CI_COMMIT_REF_SLUG
retry: 2
variables:
GIT_DEPTH: 0
before_script:
- if [ ! -z "$ACNG" ]; then sed -i -e "s,http://,$ACNG/," /etc/apt/sources.list; else echo "no proxy configured"; fi
- apt-get update
- apt-get -y install --no-install-recommends autoconf autoconf-archive automake libtool libpcsclite-dev libp11-kit-dev libgtk-3-dev libassuan-dev libgpg-error-dev libssl-dev libxml2-dev libcurl4-openssl-dev libproxy-dev plantuml zip gettext build-essential g++ git graphviz
- pushd $LINUX_BASEDIR
- git fetch --tags
- FORCE_VERSION=1 scripts/build-aux/genver.sh
- autoreconf -f -i
- popd
- rm -rf products
- rm -rf $LINUX_BASEDIR/eid-mw-*.tar.gz $LINUX_BASEDIR/eid-mw-*.zip
script:
- pushd $LINUX_BASEDIR
- ./configure
- make -j distcheck
- grep -qv unknown .version
- popd
after_script:
- mkdir -p products/source
- cp $LINUX_BASEDIR/eid-mw-*.tar.gz $LINUX_BASEDIR/eid-mw-*.zip products/source/
- cp $LINUX_BASEDIR/.version products/source/version
- cp $LINUX_BASEDIR/scripts/build-aux/deb-cl.pl products/source/
- pushd $LINUX_BASEDIR
- COMMIT_DATE=$(git log --date=rfc HEAD^..HEAD|grep ^Date|cut -d ' ' -f 2-|sed -e 's/^\s*//')
- popd
- echo $COMMIT_DATE > products/source/date
artifacts:
when:
on_success
paths:
- products/source
.gtk4:
tags:
- docker
- x86
image: $CI_REGISTRY_IMAGE/gtk4-build:$CI_COMMIT_REF_SLUG
before_script:
- pushd $LINUX_BASEDIR
- autoreconf -f -i
- popd
script:
- pushd $LINUX_BASEDIR
- ./configure --with-gtkvers=4
- make -j distcheck
- popd
allow_failure: true
.nogtk:
tags:
- docker
- x86
image: $CI_REGISTRY_IMAGE/deb-build:$CI_COMMIT_REF_SLUG
before_script:
- pushd $LINUX_BASEDIR
- autoreconf -f -i
- popd
script:
- pushd $LINUX_BASEDIR
- ./configure --without-gtkvers
- make check
.nodialogs:
tags:
- docker
- x86
image: $CI_REGISTRY_IMAGE/deb-build:$CI_COMMIT_REF_SLUG
before_script:
- pushd $LINUX_BASEDIR
- autoreconf -f -i
- popd
script:
- pushd $LINUX_BASEDIR
- ./configure --disable-dialogs
- make check
.robot:linux:
variables:
EID_ROBOT_STYLE: zetes:/dev/TB3-CARD:/dev/TB3-USB
EID_DIALOGS_STYLE: nopin
CFLAGS: "-O0 -g -Wall -fprofile-arcs -ftest-coverage"
CXXFLAGS: "-O0 -g -Wall -fprofile-arcs -ftest-coverage"
dependencies: []
tags:
- robot
- linux
before_script:
- pushd $LINUX_BASEDIR
- autoreconf -f -i
- rm -f tests/unit/junit.xml
- popd
script:
- pushd $LINUX_BASEDIR
- ./configure --libexecdir=$(pwd)/scripts/linux/hackbin --disable-pinentry CFLAGS='-g -O0 --coverage' CXXFLAGS='-g -O0 --coverage'
- ulimit -c unlimited
- make check
- mkdir -p products/reports
- gcovr --xml > products/reports/coverage.xml
- lcov -c -d cardcomm/pkcs11/src --no-external -o cardcomm.info
- lcov -c -d tests/unit --no-external -o tests.info
- lcov -c -d plugins_tools/eid-viewer --no-external -o viewer.info
- lcov -a tests.info -a cardcomm.info -a viewer.info -o coverage.info
- genhtml coverage.info -o products/reports/lcov
- popd
allow_failure: true
artifacts:
paths:
- products/reports
reports:
coverage_report:
path: products/reports/coverage.xml
coverage_format: cobertura
junit: tests/unit/junit.xml
when: always
.validation:linux:firefox:
tags:
- robot
- linux
before_script:
- killall Xvfb || true
script:
- export PIN=1234
- cd $CI_PROJECT_DIR/tests/browsertests/Linux/
- xvfb-run actiona -e -x $CI_PROJECT_DIR/tests/browsertests/Linux/firefoxTest.ascr
.validation:linux:google:
tags:
- robot
- linux
before_script:
- killall Xvfb || true
script:
- export PIN=1234
- cd $CI_PROJECT_DIR/tests/browsertests/Linux/
- xvfb-run actiona -e -x $CI_PROJECT_DIR/tests/browsertests/Linux/googleTest.ascr
.repro:debian:
tags:
- docker
- x86
image: $CI_REGISTRY_IMAGE/deb-repro:$CI_COMMIT_REF_SLUG
dependencies: []
before_script:
- if [ ! -z "$ACNG" ]; then sed -i -e "s,http://,$ACNG/," /etc/apt/sources.list; else echo "no proxy configured"; fi
- apt-get update
- apt-get -y install reprotest diffoscope equivs devscripts faketime disorderfs sudo
- mk-build-deps -r -i -t "apt-get -y -o Debug::pkgProblemResolver=yes --no-install-recommends"
- autoreconf -f -i
- pushd $LINUX_BASEDIR
- ./configure
- make dist
- popd
script:
- reprotest $LINUX_BASEDIR
artifacts:
when: on_failure
paths:
- configure
.scan-build:
tags:
- docker
- x86
image: $CI_REGISTRY_IMAGE/deb-scan-build:$CI_COMMIT_REF_SLUG
before_script:
- if [ ! -z "$ACNG" ]; then sed -i -e "s,http://,$ACNG/," /etc/apt/sources.list; else echo "no proxy configured"; fi
- apt-get update
- apt-get -y install --no-install-recommends clang-tools autoconf autoconf-archive automake libtool libassuan-dev libgpg-error-dev libpcsclite-dev libp11-kit-dev libgtk-3-dev libssl-dev libxml2-dev libcurl4-openssl-dev libproxy-dev plantuml zip gettext build-essential git g++ graphviz curl
- pushd $LINUX_BASEDIR
- autoreconf -f -i
- ./configure
- popd
script:
- pushd $LINUX_BASEDIR
- scan-build -disable-checker deadcode.DeadStores --status-bugs -o public make -j $(nproc)
- popd
artifacts:
when: on_failure
paths:
- public
.gcc-analyzer:
tags:
- docker
- x86
image: $CI_REGISTRY_IMAGE/deb-testing:$CI_COMMIT_REF_SLUG
before_script:
- if [ ! -z "$ACNG" ]; then sed -i -e "s,http://,$ACNG/," /etc/apt/sources.list; else echo "no proxy configured"; fi
- apt-get update
- apt-get -y install --no-install-recommends gcc-12 g++-12
- pushd $LINUX_BASEDIR
- autoreconf -f -i
- ./configure CC=gcc-12 CXX=g++-12 CFLAGS='-g -O2 -Wall -Werror -fanalyzer' CXXFLAGS='-g -O2 -Wall -fanalyzer -Werror'
- popd
script:
- pushd $LINUX_BASEDIR
- make -j $(nproc)
- popd
allow_failure: true
artifacts:
when: on_failure
untracked: true
.srpm:
variables:
GIT_STRATEGY: none
tags:
- docker
- x86
image: $CI_REGISTRY_IMAGE/fed-build:$CI_COMMIT_REF_SLUG
before_script:
- dnf -y install rpm-build git rpmdevtools
- rpmdev-setuptree
- VER=$(cat products/source/version)
- VERSHORT=${VER#*-}
- mv products/source/eid-mw-$VER.tar.gz $HOME/rpmbuild/SOURCES/
- tar --extract --file=$HOME/rpmbuild/SOURCES/eid-mw-$VER.tar.gz -C $HOME/rpmbuild/SPECS/ --strip-components=2 eid-mw-$VER/rpm/eid-mw.spec
- tar --extract --file=$HOME/rpmbuild/SOURCES/eid-mw-$VER.tar.gz -C $HOME/rpmbuild/SOURCES/ --strip-components=2 eid-mw-$VER/rpm/baselibs.conf
script:
- rpmbuild --define "revision $VERSHORT" -bs $HOME/rpmbuild/SPECS/eid-mw.spec
after_script:
- VER=$(cat products/source/version)
- VERSHORT=${VER#*-}
- VERFULL=${VER%-*}-0.$VERSHORT
- mkdir -p products/srpm/
- cp $HOME/rpmbuild/SRPMS/eid-mw-$VERFULL.*.src.rpm products/srpm/
- cp products/source/version products/srpm/
artifacts:
paths:
- products/srpm
.build-freebsd-base:
variables:
GIT_STRATEGY: none
tags:
- freebsd
before_script:
- VER=$(cat products/source/version)
- VERSHORT=${VER#*-}
- COMMITDATE=$(cat products/source/date)
- mkdir -p build
- pushd build
- tar xvf ../products/source/eid-mw-${VER}.tar.gz --strip-components=1
- ./configure --disable-dependency-tracking --disable-nls
- popd
script:
- pushd build
- gmake
- gmake check
- popd
.build-deb-base:
before_script:
- VER=$(cat products/source/version)
- VERSHORT=${VER#*-}
- COMMITDATE=$(cat products/source/date)
- mkdir -p build
- cd build && tar xvf ../products/source/eid-mw-${VER}.tar.gz --strip-components=1
- setup-chroot.sh $CODE $ARCH $DIST
- if [ $CANDIDATEBRANCH = $CI_COMMIT_REF_NAME ]; then TARGET=candidate; fi
- if [ ! -z "$CI_COMMIT_TAG" ]; then TARGET=proposed; fi
- if [ -z "$TARGET" ]; then TARGET=continuous; fi
- export TARGET
- if [ $ARCH = "i386" ]; then DASHA="-A -s"; else DASHA="--no-arch-all --no-source"; fi
- export DASHA
- if [ ! -z "$TARGET" ]; then dist="$TARGET-$CODE"; else dist=$CODE; fi
- ../products/source/deb-cl.pl debian/changelog "$COMMITDATE" "$VER"
script:
- sbuild -n $DASHA -d $dist -c $CODE-$ARCH-sbuild --arch=$ARCH
after_script:
- mkdir -p products/deb/
- dcmd cp eid-mw_*.changes products/deb/
artifacts:
paths:
- products/deb
when:
on_success
.build-deb-base-arm:
extends: .build-deb-base
tags:
- docker
- arm
image: $CI_REGISTRY_IMAGE/deb-sbuild:$CI_COMMIT_REF_SLUG
.build-deb-base-x86:
extends: .build-deb-base
tags:
- docker
- x86
image: $CI_REGISTRY_IMAGE/deb-sbuild:$CI_COMMIT_REF_SLUG
.build-fed-base:
retry: 2
before_script:
- dnf -y install mock git
- VER=$(cat products/srpm/version)
- VERSHORT=${VER#*-}
- mkdir -p products/$DIST-$DVER-$ARCH
script:
- mock --dnf --old-chroot --verbose -r $DIST-$DVER-$ARCH --rebuild products/srpm/eid-mw-*.src.rpm --resultdir $CI_PROJECT_DIR/products/$DIST-$DVER-$ARCH --define "revision $VERSHORT"
artifacts:
paths:
- products/$DIST-$DVER-$ARCH
when:
on_success
.build-fed-base-arm:
extends: .build-fed-base
tags:
- docker
- arm
image: $CI_REGISTRY_IMAGE/fed-build:$CI_COMMIT_REF_SLUG
.build-fed-base-x86:
extends: .build-fed-base
tags:
- docker
- x86
image: $CI_REGISTRY_IMAGE/fed-build:$CI_COMMIT_REF_SLUG
.build-suse-base:
dependencies:
- src:srpm
stage: binary-package
retry: 2
before_script:
- VER=$(cat products/srpm/version)
- VERSHORT=${VER#*-}
script:
- http_proxy="$ACNG" build --no-checks --clean -debug --dist sl$DVER --repo http://download.opensuse.org/distribution/leap/$DVER/repo/oss --define "revision $VERSHORT" products/srpm/eid-mw-*.src.rpm
after_script:
- mkdir -p products/$DIST-$DVER-$ARCH
- mv /var/tmp/build-root/home/abuild/rpmbuild/RPMS/*/*rpm products/$DIST-$DVER-$ARCH/
artifacts:
paths:
- products/$DIST-$DVER-$ARCH
when:
on_success
.build-suse-base-arm:
extends: .build-suse-base
tags:
- docker
- arm
image: $CI_REGISTRY_IMAGE/suse-build:$CI_COMMIT_REF_SLUG
.build-suse-base-x86:
extends: .build-suse-base
tags:
- docker
- x86
image: $CI_REGISTRY_IMAGE/suse-build:$CI_COMMIT_REF_SLUG
.inject-debs:
tags:
- repobuilder
before_script:
- $LINUX_BASEDIR/scripts/build-aux/ensure-reprepro-config
- dcmd cp products/deb/*ges $REPREPRO_BASE_DIR/incoming
script:
- reprepro processincoming incoming
after_script:
- rm -f $REPREPRO_BASE_DIR/incoming/*
.inject-fed:
tags:
- repobuilder
script:
- if [ $CANDIDATEBRANCH = $CI_COMMIT_REF_NAME ]; then TARGET=candidate; fi
- if [ ! -z "$CI_COMMIT_TAG" ]; then TARGET=candidate; fi
- if [ -z "$TARGET" ]; then TARGET=continuous; fi
- export TARGET
- bash -x $LINUX_BASEDIR/scripts/build-aux/fed-rel.sh
.inject-suse:
tags:
- repobuilder
script:
- if [ $CANDIDATEBRANCH = $CI_COMMIT_REF_NAME ]; then TARGET=candidate; fi
- if [ ! -z "$CI_COMMIT_TAG" ]; then TARGET=candidate; fi
- if [ -z "$TARGET" ]; then TARGET=continuous; fi
- export TARGET
- bash -x $LINUX_BASEDIR/scripts/build-aux/suse-rel.sh
.inject-source:
tags:
- repobuilder
script:
- VER=$(cat products/source/version)
- SOURCETGZ=products/source/eid-mw-${VER}.tar.gz
- SOURCEZIP=products/source/eid-mw-${VER}.zip
- cp $SOURCETGZ $SOURCEZIP $DIST_LOC/continuous/sources/
- cd $DIST_LOC/continuous/sources
- gpg --yes --batch --passphrase "" --default-key $GPG_TEST_KEY_ID --no-tty -b --armor $(basename $SOURCETGZ)
variables:
GIT_STRATEGY: none
.coverity:linux:
variables:
PATH: /opt/coverity/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
image: $COVERITY_BUILD_IMAGE
tags:
- docker
- x86
before_script:
- pushd $LINUX_BASEDIR
- autoreconf -f -i
- popd
script:
- pushd $LINUX_BASEDIR
- ./configure --libexecdir=$(pwd)/scripts/linux/hackbin --disable-pinentry
- cov-build --dir=cov-int make
- cov-build --dir=cov-int make check
- tar cvaf eid-mw-coverity.tar.gz cov-int
- curl --form token=$COVERITY_TOKEN --form email=w@uter.be --form 'file=@"eid-mw-coverity.tar.gz"' --form version=$CI_COMMIT_SHA --form description="automatic submission by GitLab CI" https://scan.coverity.com/builds?project=eID+middleware
- popd
.check-translations:
tags:
- docker
image: $CI_REGISTRY_IMAGE/deb-build:$CI_COMMIT_REF_SLUG
before_script:
- if [ ! -z "$ACNG" ]; then sed -i -e "s,http://,$ACNG/," /etc/apt/sources.list; else echo "no proxy configured"; fi
- apt-get update
- apt-get -y install --no-install-recommends libxml-simpleobject-perl libjson-perl
script:
- perl -I $LINUX_BASEDIR/plugins_tools/eid-viewer/localization $LINUX_BASEDIR/plugins_tools/eid-viewer/localization/compare-translations -l $LINUX_BASEDIR/plugins_tools/eid-viewer/gtk/po -m $MACOS_BASEDIR/beidmw_l10n -w $LINUX_BASEDIR/plugins_tools/eid-viewer/Windows/eIDViewer/Resources > translation-report.json
artifacts:
when: always
paths:
- translation-report.json