summaryrefslogtreecommitdiffstats
path: root/.github/workflows/php.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/php.yml')
-rw-r--r--.github/workflows/php.yml95
1 files changed, 95 insertions, 0 deletions
diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml
new file mode 100644
index 0000000..37078bb
--- /dev/null
+++ b/.github/workflows/php.yml
@@ -0,0 +1,95 @@
+name: PHP Tests
+
+on:
+ push:
+ branches:
+ - main
+ - release/*
+ pull_request:
+ branches:
+ - main
+
+jobs:
+ lint:
+ name: Static analysis for php ${{ matrix.php }} on ${{ matrix.os }}
+ runs-on: ${{ matrix.os }}
+
+ strategy:
+ fail-fast: false
+ matrix:
+ php: ['7.2', '7.3', '7.4', '8.0', '8.1', '8.2']
+ os: ['ubuntu-latest']
+
+ steps:
+ - name: Checkout code base
+ uses: actions/checkout@v3
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php }}
+ tools: phpcs
+
+ - name: Setup dependencies
+ run: |
+ composer require -n --no-progress overtrue/phplint
+ git clone --depth 1 https://github.com/Icinga/icingaweb2.git vendor/icingaweb2
+ git clone --depth 1 https://github.com/Icinga/icingadb-web.git vendor/icingadb-web
+ git clone --depth 1 https://github.com/Icinga/icingaweb2-module-director.git vendor/icingaweb2-module-director
+ git clone --depth 1 -b snapshot/nightly https://github.com/Icinga/icinga-php-library.git vendor/icinga-php-library
+ git clone --depth 1 -b snapshot/nightly https://github.com/Icinga/icinga-php-thirdparty.git vendor/icinga-php-thirdparty
+
+ - name: PHP Lint
+ if: ${{ ! cancelled() }}
+ run: ./vendor/bin/phplint -n --exclude={^vendor/.*} -- .
+
+ - name: PHP CodeSniffer
+ if: ${{ ! cancelled() }}
+ run: phpcs
+
+ - name: PHPStan
+ if: ${{ ! cancelled() }}
+ uses: php-actions/phpstan@v3
+
+ test:
+ name: Unit tests with php ${{ matrix.php }} on ${{ matrix.os }}
+ runs-on: ${{ matrix.os }}
+
+ env:
+ phpunit-version: 8.5
+
+ strategy:
+ fail-fast: false
+ matrix:
+ php: ['7.2', '7.3', '7.4', '8.0', '8.1', '8.2']
+ os: ['ubuntu-latest']
+
+ steps:
+ - name: Checkout code base
+ uses: actions/checkout@v3
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php }}
+ tools: phpunit:${{ matrix.phpunit-version || env.phpunit-version }}
+
+ - name: Setup Icinga Web
+ run: |
+ git clone --depth 1 https://github.com/Icinga/icingaweb2.git _icingaweb2
+ ln -s `pwd` _icingaweb2/modules/businessprocess
+
+ - name: Setup Libraries
+ run: |
+ mkdir _libraries
+ git clone --depth 1 -b snapshot/nightly https://github.com/Icinga/icinga-php-library.git _libraries/ipl
+ git clone --depth 1 -b snapshot/nightly https://github.com/Icinga/icinga-php-thirdparty.git _libraries/vendor
+
+ - name: Setup dependencies
+ run: composer require -d _icingaweb2 -n --no-progress mockery/mockery
+
+ - name: PHPUnit
+ env:
+ ICINGAWEB_LIBDIR: _libraries
+ ICINGAWEB_CONFIGDIR: test/config
+ run: phpunit --verbose --bootstrap _icingaweb2/test/php/bootstrap.php