wip github actions CI
[plcapi.git] / .github / workflows / ci.yml
index 13cf9cc..7a804b6 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,40 +20,61 @@ 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
-            #-
-            #    run: 'php -v && env'
             -
                 uses: actions/checkout@v2
+            # Although this action is useful, we prefer to use the same script to set up php that we use for the
+            # docker image used for local testing. This allows us to make sure that script is always in good shape
+            #-
+            #    uses: shivammathur/setup-php@v2
+            #    with:
+            #        php-version: ${{ matrix.php }}
+            #        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: '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'
-            # Avoid downloading composer deps on every workflow. Is this useful for us?
+                # @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.sh ${{ matrix.php }}
+                    sudo ./setup_composer.sh
+            # Avoid downloading composer deps on every workflow. Is this useful/working for us?
             #-
             #    uses: actions/cache@v2
             #    with:
             #        path: /tmp/composer-cache
             #        key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }}
             -
-                uses: php-actions/composer@v6
-                # simpler alternative ?
-                #run: 'composer install'
+                run: 'composer install'
             -
                 if: ${{ matrix.php == '7.4' }}
                 run: './tests/ci/setup/setup_code_coverage.sh enable'
             -
-                # @todo bring back $PHPUNIT_OPTS
+                # @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; env; php -i; sudo cat /var/log/privoxy/*; sudo cat /var/log/apache2/error.log; sudo cat /var/log/apache2/other_vhosts_access.log; sudo cat /var/log/php*.log'
+                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