forked from julien-nc/phonetrack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
94 lines (86 loc) · 2.93 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
image: ubuntu:20.04
stages:
- test
- deploy
- build
before_script:
- bash ci/docker_install.sh
services:
- mariadb:latest
- postgres:14
variables:
MYSQL_DATABASE: nextcloud
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: mysql
POSTGRES_DB: nextcloud
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
# test and produce coverage report
phpunit_tests:
parallel:
matrix:
- PHP_VERSION: ['7.4', '8.0', '8.1']
SERVER_VERSION: ['stable25', 'master']
DATABASE: ['pgsql', 'mysql', 'sqlite']
image: php:$PHP_VERSION
stage: test
only:
refs:
- master
- test
artifacts:
paths:
- coverage
coverage: '/^\s*Lines:\s*(\d+.\d+)\%/'
script:
- if [[ "$DATABASE" == "mysql" ]]; then docker-php-ext-install pdo_mysql; DB_HOST="mariadb"; DB_USER=$MYSQL_USER; DB_PASSWORD=$MYSQL_ROOT_PASSWORD; fi
- if [[ "$DATABASE" == "pgsql" ]]; then docker-php-ext-install pdo_pgsql; DB_HOST="postgres"; DB_USER=$POSTGRES_USER; DB_PASSWORD=$POSTGRES_PASSWORD; fi
- cp -r . /tmp/phonetrack
- mkdir -p /var/www/html ; pushd /var/www/html
- git clone https://github.com/nextcloud/server.git --recursive --depth 1 -b $SERVER_VERSION nextcloud
# temporary fix of autoloader.php
- sed -i $'s|if (substr($fullPath, 0, strlen($root) + 1) === $root . \'/\')|if (is_string($root) and substr($fullPath, 0, strlen($root) + 1) === $root . \'/\')|g' nextcloud/lib/autoloader.php
- chown -R www-data:www-data nextcloud && pushd nextcloud/apps && mv /tmp/phonetrack ./
- php /var/www/html/nextcloud/occ maintenance:install --database "$DATABASE" --database-host "$DB_HOST" --database-name "nextcloud" --database-user "$DB_USER" --database-pass="$DB_PASSWORD" --admin-user "admin" --admin-pass "password"
- php /var/www/html/nextcloud/occ app:enable phonetrack
- php /var/www/html/nextcloud/occ maintenance:mode --off
- |
if [[ "$DATABASE" == "sqlite" ]] && [[ "$SERVER_VERSION" == "master" ]] && [[ "$PHP_VERSION" == "8.1" ]]; then
popd ; popd ; mkdir coverage
pecl install xdebug
docker-php-ext-enable xdebug
phpunit --configuration /var/www/html/nextcloud/apps/phonetrack/phpunit.xml --coverage-text --color=never --coverage-html coverage
else
phpunit --configuration /var/www/html/nextcloud/apps/phonetrack/phpunit.xml
fi
pages:
stage: deploy
dependencies:
# TODO depend on the only one producing the coverage artifact
- phpunit_tests
before_script:
- echo 'nothing to install for pages jobs'
only:
refs:
- master
artifacts:
paths:
- public
script:
- sleep 5
- mkdir public
- mv coverage public/
build_nightly:
stage: build
only:
refs:
- build
artifacts:
paths:
- phonetrack-nightly.tar.gz
script:
- apt-get install rsync npm nodejs wget make
- npm install -g npm@^8.0.0
- make
- version=nightly make appstore
- mv /tmp/build/phonetrack-nightly.tar.gz ./