1
+ name : phpList REST API Build
2
+ on : [push, pull_request]
3
+ jobs :
4
+ main :
5
+ name : phpList Base Dist on PHP ${{ matrix.php-versions }}, with dist ${{ matrix.dependencies }} [Build, Test]
6
+ runs-on : ubuntu-20.04
7
+ env :
8
+ DB_DATABASE : phplist
9
+ DB_USERNAME : root
10
+ DB_PASSWORD : phplist
11
+ BROADCAST_DRIVER : log
12
+ services :
13
+ mysql :
14
+ image : mysql:5.7
15
+ env :
16
+ MYSQL_ALLOW_EMPTY_PASSWORD : false
17
+ MYSQL_ROOT_PASSWORD : ${{ env.DB_PASSWORD }}
18
+ MYSQL_DATABASE : ${{ env.DB_DATABASE }}
19
+ ports :
20
+ - 3306/tcp
21
+ options : --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
22
+ strategy :
23
+ fail-fast : false
24
+ matrix :
25
+ php-versions : ['7.0', '7.1', '7.2', '7.3', '7.4', '8.0']
26
+ dependencies : ['latest', 'oldest']
27
+ steps :
28
+ - name : Checkout
29
+ uses : actions/checkout@v2
30
+ - name : Setup PHP, with composer and extensions
31
+ uses : shivammathur/setup-php@v2 # https://github.com/shivammathur/setup-php
32
+ with :
33
+ php-version : ${{ matrix.php-versions }}
34
+ extensions : mbstring, dom, fileinfo, mysql
35
+ coverage : xdebug # optional
36
+ - name : Start mysql service
37
+ run : sudo /etc/init.d/mysql start
38
+ - name : Verify MySQL connection on host
39
+ run : mysql --host 127.0.0.1 --port ${{ job.services.mysql.ports['3306'] }} -u${{ env.DB_USERNAME }} -p${{ env.DB_PASSWORD }} -e "SHOW DATABASES"
40
+ - name : Get composer cache directory
41
+ id : composer-cache
42
+ run : echo "::set-output name=dir::$(composer config cache-files-dir)"
43
+ - name : Cache composer dependencies
44
+ uses : actions/cache@v2
45
+ with :
46
+ path : ${{ steps.composer-cache.outputs.dir }}
47
+ # Use composer.json for key, if composer.lock is not committed.
48
+ # key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
49
+ key : ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
50
+ restore-keys : ${{ runner.os }}-composer-
51
+ - name : Install the lowest dependencies
52
+ run : composer update --with-dependencies --prefer-stable --prefer-dist --prefer-lowest
53
+ if : ${{ matrix.dependencies }} == "latest"
54
+ - name : Install current dependencies from composer.lock
55
+ run : composer install
56
+ if : ${{ matrix.dependencies }} == "oldest"
57
+ - name : Set up database schema
58
+ run : mysql --host 127.0.0.1 --port ${{ job.services.mysql.ports['3306'] }} -u${{ env.DB_USERNAME }} -p${{ env.DB_PASSWORD }} ${{ env.DB_DATABASE }} < vendor/phplist/core/resources/Database/Schema.sql
59
+ - name : Validating composer.json
60
+ run : composer validate --no-check-all --no-check-lock --strict;
61
+ - name : Linting all php files
62
+ run : find src/ tests/ public/ -name ''*.php'' -print0 | xargs -0 -n 1 -P 4 php -l; php -l;
63
+ - name : Run integration tests with phpunit
64
+ run : vendor/bin/phpunit tests/Integration/
65
+ - name : Running the system tests
66
+ run : vendor/bin/phpunit tests/Integration/;
67
+ - name : Running static analysis
68
+ run : vendor/bin/phpstan analyse -l 5 src/ tests/;
69
+ - name : Running PHPMD
70
+ run : vendor/bin/phpmd src/ text vendor/phplist/core/config/PHPMD/rules.xml;
71
+ - name : Running PHP_CodeSniffer
72
+ run : vendor/bin/phpcs --standard=vendor/phplist/core/config/PhpCodeSniffer/ src/ tests/;
0 commit comments