-
Notifications
You must be signed in to change notification settings - Fork 35
134 lines (118 loc) · 4.49 KB
/
integration.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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
name: Integration tests
on:
pull_request:
push:
branches:
- main
- master
- stable*
env:
APP_NAME: user_oidc
jobs:
integration:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php-versions: ['8.0']
databases: ['sqlite', 'mysql', 'pgsql']
server-versions: ['master']
include:
- php-versions: 7.4
databases: mysql
server-versions: stable21
- php-versions: 8.0
databases: mysql
server-versions: stable22
- php-versions: 8.0
databases: mysql
server-versions: stable23
- php-versions: 8.1
databases: mysql
server-versions: stable24
- php-versions: 8.1
databases: mysql
server-versions: stable25
- php-versions: 8.1
databases: mysql
server-versions: stable26
- php-versions: 8.1
databases: mysql
server-versions: stable27
- php-versions: 8.1
databases: mysql
server-versions: master
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
services:
postgres:
image: postgres:14
ports:
- 4445:5432/tcp
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: rootpassword
POSTGRES_DB: nextcloud
options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
mysql:
image: mariadb:10.5
ports:
- 4444:3306/tcp
env:
MYSQL_ROOT_PASSWORD: rootpassword
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 5
steps:
- name: Checkout server
uses: actions/[email protected]
with:
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
- name: Checkout submodules
shell: bash
run: |
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
- name: Checkout app
uses: actions/[email protected]
with:
path: apps/${{ env.APP_NAME }}
- name: Start keycloak
run: docker-compose -f "docker-compose.integration.yml" up -d --build
working-directory: apps/${{ env.APP_NAME }}/tests/
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/[email protected]
with:
php-version: ${{ matrix.php-versions }}
tools: phpunit
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql,
coverage: none
- name: Set up PHPUnit
working-directory: apps/${{ env.APP_NAME }}
run: composer i
- name: Set up Nextcloud
run: |
if [ "${{ matrix.databases }}" = "mysql" ]; then
export DB_PORT=4444
elif [ "${{ matrix.databases }}" = "pgsql" ]; then
export DB_PORT=4445
fi
mkdir data
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
cat config/config.php
./occ user:list
./occ app:enable --force ${{ env.APP_NAME }}
./occ config:system:set allow_local_remote_servers --value true --type bool
./occ config:system:set debug --value true --type bool
./occ user_oidc:provider nextcloudci -c nextcloud -s ff75b7c7-20f9-460b-b27c-16bd5d9b4cd0 -d http:/127.0.0.1:8999/auth/realms/nextcloudci/.well-known/openid-configuration
php -S localhost:8080 &
curl -v http://127.0.0.1:8999/auth/realms/nextcloudci/.well-known/openid-configuration
- name: Run integration tests
working-directory: apps/${{ env.APP_NAME }}
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.integration.xml
- name: Dump nextcloud.log
if: always()
run: cat data/nextcloud.log
- name: Stop containers
if: always()
run: docker-compose -f "docker-compose.integration.yml" down
working-directory: apps/${{ env.APP_NAME }}/tests/