1# We use our own Perl setup (language "generic" uses a stripped-down TravisCI image)
2language: generic
3virt: lxd
4# TravisCI does not support lxd (containers) with amd64
5arch: arm64
6os: linux
7# Ubuntu 18.04 "Bionic" (Debian Buster equivalent)
8dist: bionic
9
10env:
11    global:
12        # assume the Git submodule is cloned into config/ according to .gitmodules
13        - OXI_TEST_SAMPLECONFIG_DIR=$TRAVIS_BUILD_DIR/config
14        - OXI_TEST_DB_MYSQL_NAME=openxpki
15        - OXI_TEST_DB_MYSQL_USER=openxpki
16        - OXI_TEST_DB_MYSQL_PASSWORD=openxpki
17        - OXI_TEST_DB_MYSQL_DBUSER=root
18        - OXI_TEST_DB_MYSQL_DBPASSWORD=
19    jobs:
20        - OXI_TEST_RUN=unit_coverage
21        - OXI_TEST_RUN=api2
22        - OXI_TEST_RUN=webui
23        - OXI_TEST_RUN=client
24
25cache:
26    directories:
27        - $HOME/perl5/lib/perl5
28
29before_cache:
30    - |
31      while read -d : path; do
32        test $path == "." && continue;
33        echo "Purging $path/OpenXPKI*";
34        rm -rf $path/OpenXPKI*;
35        rm -rf $path/auto/OpenXPKI*;
36      done <<< $(perl -e 'print "$_:" for @INC')
37
38#  - rm -Rf $HOME/perl5/lib/perl5/x86_64-linux-gnu-thread-multi/OpenXPKI
39
40#
41# OS packages
42#
43addons:
44  apt:
45    packages:
46    - openssl
47    - libssl-dev
48    - pkg-config
49    - cpanminus
50    - figlet
51#  mariadb: '10.1'
52#  ... doesn't work, throws apt error messages because it conflicts with MySQL
53
54#
55# Service setup
56#
57before_install:
58    - sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xf1656f24c74cd1d8
59    - sudo apt-get -q update
60    - sudo apt-get -y purge mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7
61    # we need to prevent invoke-rc.d from starting MariaDB as this would make
62    # the TravisCI LXD container hang forever. So we pretend it's runlevel 1
63    # where most services aren't started: (https://askubuntu.com/a/221938)
64    - sudo echo -e '#!/bin/sh\nexit 101' | sudo install -m 755 /dev/stdin /usr/sbin/policy-rc.d && sudo apt-get -y install mariadb-server-10.1 libmariadbclient-dev && sudo rm -f /usr/sbin/policy-rc.d
65    # now start MariaDB in background
66    - sudo /usr/bin/mysqld_safe 2>&1 >/dev/null &
67    # create database
68    - sudo ./tools/testenv/mysql-wait-for-db.sh
69    - sudo ./tools/testenv/mysql-create-db.sh
70    - sudo ./tools/testenv/mysql-create-user.sh
71    - sudo ./tools/testenv/mysql-create-schema.sh
72    # setup cpanm
73    - cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
74
75#
76# Dependencies / modules
77#
78install:
79    - cpanm --quiet --notest PPI
80    - ./tools/scripts/makefile2cpanfile.pl > ./cpanfile
81    - cpanm --quiet --notest --installdeps ./
82    # We need to reinstall Devel::Cover because we told TravisCI to cache
83    # ~/perl5/lib/perl5 but not ~/perl5/bin - so on next run the "cover"
84    # script will be gone
85    - cpanm --quiet --notest --reinstall Devel::Cover
86    - cpanm --quiet --notest Devel::Cover::Report::Coveralls
87
88#
89# Build
90#
91# (must be specified if "language" is "generic")
92script:
93    - which perl
94    - perl -v
95    - ./tools/scripts/travis-install-and-test.sh
96