wip github actions CI
[plcapi.git] / .github / workflows / ci.yml
index 0c8a9e8..021d7db 100644 (file)
@@ -4,7 +4,7 @@ on: [push]
 
 jobs:
     test:
-        runs-on: ubuntu-latest
+        runs-on: ${{ matrix.operating-system }}
         env:
             HTTPSERVER: localhost
             URI: /demo/server/server.php
@@ -20,17 +20,57 @@ jobs:
         strategy:
             fail-fast: false
             matrix:
-                php: ['8.1', '8.0', '7.4', '7.3', '7.2', '7.1', '7.0', '5.6', '5.5', '5.4', '5.3']
+                operating-system: ['ubuntu-latest'] # @todo add 'windows-latest'
+                # @todo use an older version of phpunit to enable testing on php 5.3 - 5.5
+                php: ['8.1', '8.0', '7.4', '7.3', '7.2', '7.1', '7.0', '5.6']
         steps:
             -
                 uses: shivammathur/setup-php@v2
                 with:
                     php-version: ${{ matrix.php }}
-                    extensions: curl
-                    #tools: phpunit
+                    extensions: curl, dom, mbstring, xsl
+                    ini-values: 'cgi.fix_pathinfo=1, always_populate_raw_post_data=-1'
+                    #tools: phpunit/phpunit:a_version_compatible_with_php_5.3-5.5
+                    # NB: this disables xdebug completely
+                    coverage: none
             #-
             #    run: 'php -v && env'
             -
                 uses: actions/checkout@v2
             -
-                run: 'chmod 755 ./tests/ci/setup/*.sh && sudo ./tests/ci/setup/setup_perl.sh && sudo ./tests/ci/setup/setup_apache.sh && sudo ./tests/ci/setup/setup_privoxy.sh'
+                # @todo add config setup scripts for windows
+                run: 'chmod 755 ./tests/ci/setup/*.sh && sudo ./tests/ci/setup/setup_perl.sh && sudo ./tests/ci/setup/setup_apache.sh && sudo ./tests/ci/setup/setup_privoxy.sh && sudo ./tests/ci/setup/setup_php_github.sh'
+            # Avoid downloading composer deps on every workflow. Is this useful for us?
+            #-
+            #    uses: actions/cache@v2
+            #    with:
+            #        path: /tmp/composer-cache
+            #        key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }}
+            -
+                # simpler alternative ? Atm, php-actions/composer also fails because of missing php xsl extension!
+                #uses: php-actions/composer@v6
+                run: 'composer install'
+            -
+                if: ${{ matrix.php == '7.4' }}
+                run: './tests/ci/setup/setup_code_coverage.sh enable'
+            -
+                # @todo bring back $PHPUNIT_OPTS to trigger code coverage
+                run: './vendor/bin/phpunit -v tests'
+            -
+                run: 'python3 demo/client/python/test.py'
+            -
+                run: 'perl demo/client/perl/test.pl'
+            -
+                if: ${{ failure() }}
+                run: |
+                    systemctl status apache2.service
+                    ls -la /etc/apache2/mods-enabled
+                    ls -la /etc/apache2/conf-enabled
+                    ls -la /etc/apache2/mods-available
+                    ls -la /etc/apache2/conf-available
+                    sudo cat /var/log/apache2/error.log
+                    sudo cat /var/log/apache2/other_vhosts_access.log
+                    #env
+                    #php -i
+                    #sudo cat /var/log/privoxy/*
+                    #sudo cat /var/log/php*.log