diff options
-rw-r--r-- | .github/workflows/lint-and-analyse-php.yml | 186 | ||||
-rw-r--r-- | .github/workflows/lint-docs.yml | 22 | ||||
-rw-r--r-- | .github/workflows/other-tools.yml | 126 | ||||
-rw-r--r-- | .github/workflows/test-selenium.yml | 250 | ||||
-rw-r--r-- | .github/workflows/tests.yml | 362 |
5 files changed, 473 insertions, 473 deletions
diff --git a/.github/workflows/lint-and-analyse-php.yml b/.github/workflows/lint-and-analyse-php.yml index 1b0aa68ae1..39f4fa8fdb 100644 --- a/.github/workflows/lint-and-analyse-php.yml +++ b/.github/workflows/lint-and-analyse-php.yml @@ -9,104 +9,104 @@ on: - QA_** jobs: - lint-node: - runs-on: ubuntu-latest - if: "!contains(github.event.head_commit.message, '[ci skip]')" - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 12 - - name: Get yarn cache directory path - id: yarn-cache-dir-path - run: echo "::set-output name=dir::$(yarn cache dir)" - - name: yarn cache - uses: actions/cache@v2 - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - name: Install modules - run: yarn install --non-interactive - - name: Lint JS files - run: yarn run js-lint --quiet - - name: Lint CSS files - run: yarn run css-lint + lint-node: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]')" + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: 12 + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - name: yarn cache + uses: actions/cache@v2 + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install modules + run: yarn install --non-interactive + - name: Lint JS files + run: yarn run js-lint --quiet + - name: Lint CSS files + run: yarn run css-lint - lint-php-files: - runs-on: ubuntu-latest - if: "!contains(github.event.head_commit.message, '[ci skip]')" - strategy: - matrix: - php-version: ["7.2"] - steps: - - uses: actions/checkout@v2 - - name: Use PHP ${{ matrix.php-version }} - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - - name: Validate composer.json and composer.lock - run: composer validate + lint-php-files: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]')" + strategy: + matrix: + php-version: ["7.2"] + steps: + - uses: actions/checkout@v2 + - name: Use PHP ${{ matrix.php-version }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + - name: Validate composer.json and composer.lock + run: composer validate - - name: Get Composer cache directory - id: composer-cache - run: | - echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Get Composer cache directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" - - name: Cache dependencies - uses: actions/cache@v2 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }} - restore-keys: | - composer-${{ runner.os }}-${{ matrix.php-version }}- + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}- - - name: Cache coding-standard - uses: actions/cache@v2 - with: - path: .phpcs-cache - key: phpcs-cache - - name: Install dependencies - # Ignore zip for php-webdriver/webdriver - run: composer install --ignore-platform-req=ext-zip - - name: Lint PHP files - run: ./test/ci-phplint - - name: Check coding-standard - run: composer phpcs - - name: Check twig templates - run: composer run twig-lint + - name: Cache coding-standard + uses: actions/cache@v2 + with: + path: .phpcs-cache + key: phpcs-cache + - name: Install dependencies + # Ignore zip for php-webdriver/webdriver + run: composer install --ignore-platform-req=ext-zip + - name: Lint PHP files + run: ./test/ci-phplint + - name: Check coding-standard + run: composer phpcs + - name: Check twig templates + run: composer run twig-lint - analyse-php: - runs-on: ubuntu-latest - if: "!contains(github.event.head_commit.message, '[ci skip]')" - strategy: - matrix: - php-version: ["7.2"] - steps: - - uses: actions/checkout@v2 - - name: Use PHP ${{ matrix.php-version }} - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - extensions: mbstring, iconv, mysqli, zip, gd, bz2 + analyse-php: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]')" + strategy: + matrix: + php-version: ["7.2"] + steps: + - uses: actions/checkout@v2 + - name: Use PHP ${{ matrix.php-version }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: mbstring, iconv, mysqli, zip, gd, bz2 - - name: Get Composer cache directory - id: composer-cache - run: | - echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Get Composer cache directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" - - name: Cache dependencies - uses: actions/cache@v2 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }} - restore-keys: | - composer-${{ runner.os }}-${{ matrix.php-version }}- + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}- - - name: Install dependencies - run: composer install - - name: Analyse files with phpstan - run: composer phpstan -- --memory-limit 2G - - name: Analyse files with psalm - run: composer psalm -- --shepherd + - name: Install dependencies + run: composer install + - name: Analyse files with phpstan + run: composer phpstan -- --memory-limit 2G + - name: Analyse files with psalm + run: composer psalm -- --shepherd diff --git a/.github/workflows/lint-docs.yml b/.github/workflows/lint-docs.yml index 36c706f435..15320e2e09 100644 --- a/.github/workflows/lint-docs.yml +++ b/.github/workflows/lint-docs.yml @@ -9,14 +9,14 @@ on: - QA_** jobs: - lint-docs: - runs-on: ubuntu-latest - if: "!contains(github.event.head_commit.message, '[ci skip]')" - steps: - - uses: actions/checkout@v2 - - name: Lint phpdoc blocks - uses: sudo-bot/action-doctum@v5 - with: - config-file: test/doctum-config.php - method: "parse" - cli-args: "--output-format=github --no-ansi --no-progress -v --ignore-parse-errors" + lint-docs: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]')" + steps: + - uses: actions/checkout@v2 + - name: Lint phpdoc blocks + uses: sudo-bot/action-doctum@v5 + with: + config-file: test/doctum-config.php + method: "parse" + cli-args: "--output-format=github --no-ansi --no-progress -v --ignore-parse-errors" diff --git a/.github/workflows/other-tools.yml b/.github/workflows/other-tools.yml index b5c0b6243d..1256440978 100644 --- a/.github/workflows/other-tools.yml +++ b/.github/workflows/other-tools.yml @@ -9,70 +9,70 @@ on: - QA_** jobs: - build-documentation: - runs-on: ubuntu-latest - if: "!contains(github.event.head_commit.message, '[ci skip]')" - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: '3.6' - - name: Install Sphinx for the documentation build - run: pip install 'Sphinx' - - name: Build the documentation - run: make -C doc html SPHINXOPTS='-n -W -a' + build-documentation: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]')" + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.6' + - name: Install Sphinx for the documentation build + run: pip install 'Sphinx' + - name: Build the documentation + run: make -C doc html SPHINXOPTS='-n -W -a' - build-release: - runs-on: ubuntu-latest - if: "!contains(github.event.head_commit.message, '[ci skip]')" - strategy: - matrix: - php-version: ["7.2"] - steps: - - uses: actions/checkout@v2 - - name: Use PHP ${{ matrix.php-version }} - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - extensions: mbstring, iconv, mysqli, zip, gd - tools: composer:v2 + build-release: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]')" + strategy: + matrix: + php-version: ["7.2"] + steps: + - uses: actions/checkout@v2 + - name: Use PHP ${{ matrix.php-version }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: mbstring, iconv, mysqli, zip, gd + tools: composer:v2 - - name: Get Composer cache directory - id: composer-cache - run: | - echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Get Composer cache directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" - - name: Cache dependencies - uses: actions/cache@v2 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }} - restore-keys: | - composer-${{ runner.os }}-${{ matrix.php-version }}- + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}- - - name: Install dependencies - run: composer install - - uses: actions/setup-node@v1 - with: - node-version: 12 - - name: Get yarn cache directory path - id: yarn-cache-dir-path - run: echo "::set-output name=dir::$(yarn cache dir)" - - name: yarn cache - uses: actions/cache@v2 - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - name: Install modules - run: yarn install --non-interactive - - uses: actions/setup-python@v2 - with: - python-version: '3.6' - - name: Install gettext - run: sudo apt-get install -y gettext - - name: Install Sphinx for the documentation build - run: pip install 'Sphinx' - - name: Build the release - run: ./scripts/create-release.sh --ci + - name: Install dependencies + run: composer install + - uses: actions/setup-node@v1 + with: + node-version: 12 + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - name: yarn cache + uses: actions/cache@v2 + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install modules + run: yarn install --non-interactive + - uses: actions/setup-python@v2 + with: + python-version: '3.6' + - name: Install gettext + run: sudo apt-get install -y gettext + - name: Install Sphinx for the documentation build + run: pip install 'Sphinx' + - name: Build the release + run: ./scripts/create-release.sh --ci diff --git a/.github/workflows/test-selenium.yml b/.github/workflows/test-selenium.yml index 4dfa8a4342..fb1400f2ef 100644 --- a/.github/workflows/test-selenium.yml +++ b/.github/workflows/test-selenium.yml @@ -9,131 +9,131 @@ on: - QA_** jobs: - test-selenium: - name: Selenium tests on php ${{ matrix.php-version }} and ${{ matrix.os }} - if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[ci selenium skip]')" - runs-on: ${{ matrix.os }} - services: - database-server: - image: ${{ matrix.db-server }} - env: - MYSQL_ROOT_PASSWORD: testbench - ports: - - "3306:3306" - options: >- - --health-cmd="mysqladmin ping" - --health-interval=10s - --health-timeout=5s - --health-retries=3 - selenium-server: - image: selenium/standalone-chrome:3.141.59 - volumes: - - /dev/shm:/dev/shm - options: >- - --health-cmd "/opt/bin/check-grid.sh" - env: - SCREEN_WIDTH: 1920 - SCREEN_HEIGHT: 1080 - ports: - - "4444:4444" - docker-host-bridge: - # Allow accessing localhost ports from docker containers. - # See https://github.com/qoomon/docker-host - image: qoomon/docker-host - options: >- - --name docker-host-bridge - --hostname docker-host-bridge - --add-host docker-host-bridge:127.0.0.1 - --cap-add=NET_ADMIN - --cap-add=NET_RAW - --restart on-failure - strategy: - matrix: - php-version: ["7.2"] - os: [ubuntu-latest] - db-server: ["mysql:5.7"] - steps: - - uses: actions/checkout@v2 - - name: Refresh apt cache - run: sudo apt-get update - - name: Install gettext - run: sudo apt-get install -y gettext - - name: Generate mo files - run: ./scripts/generate-mo --quiet - - name: Use php ${{ matrix.php-version }} - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - extensions: mbstring, iconv, mysqli, zip, gd, bz2 + test-selenium: + name: Selenium tests on php ${{ matrix.php-version }} and ${{ matrix.os }} + if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[ci selenium skip]')" + runs-on: ${{ matrix.os }} + services: + database-server: + image: ${{ matrix.db-server }} + env: + MYSQL_ROOT_PASSWORD: testbench + ports: + - "3306:3306" + options: >- + --health-cmd="mysqladmin ping" + --health-interval=10s + --health-timeout=5s + --health-retries=3 + selenium-server: + image: selenium/standalone-chrome:3.141.59 + volumes: + - /dev/shm:/dev/shm + options: >- + --health-cmd "/opt/bin/check-grid.sh" + env: + SCREEN_WIDTH: 1920 + SCREEN_HEIGHT: 1080 + ports: + - "4444:4444" + docker-host-bridge: + # Allow accessing localhost ports from docker containers. + # See https://github.com/qoomon/docker-host + image: qoomon/docker-host + options: >- + --name docker-host-bridge + --hostname docker-host-bridge + --add-host docker-host-bridge:127.0.0.1 + --cap-add=NET_ADMIN + --cap-add=NET_RAW + --restart on-failure + strategy: + matrix: + php-version: ["7.2"] + os: [ubuntu-latest] + db-server: ["mysql:5.7"] + steps: + - uses: actions/checkout@v2 + - name: Refresh apt cache + run: sudo apt-get update + - name: Install gettext + run: sudo apt-get install -y gettext + - name: Generate mo files + run: ./scripts/generate-mo --quiet + - name: Use php ${{ matrix.php-version }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: mbstring, iconv, mysqli, zip, gd, bz2 - - name: Get Composer cache directory - id: composer-cache - run: | - echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Get Composer cache directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" - - name: Cache dependencies - uses: actions/cache@v2 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }} - restore-keys: | - composer-${{ runner.os }}-${{ matrix.php-version }}- + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}- - - name: Install dependencies - run: composer install --no-interaction - - uses: actions/setup-node@v1 - with: - node-version: 12 - - name: Get yarn cache directory path - id: yarn-cache-dir-path - run: echo "::set-output name=dir::$(yarn cache dir)" - - name: yarn cache - uses: actions/cache@v2 - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - name: Install modules - run: yarn install --non-interactive --production - - name: Install nginx and php-fpm - run: sudo apt-get install -y nginx php7.2-fpm - - name: Copy the config - run: cp test/config.e2e.inc.php config.inc.php - - name: Start server - env: - CI_MODE: selenium - FPM_PATH: php-fpm7.2 - SKIP_STANDALONE: 1 - run: | - ./test/start-local-server - echo ::set-output name=SELENIUM_TEMPDIR::"$(cat /tmp/last_temp_dir_phpMyAdminTests)" - id: start-local-server - - name: Run selenium tests - env: - CI_MODE: selenium - TESTSUITE_SELENIUM_BROWSER: chrome - TESTSUITE_USER: root - TESTSUITE_PASSWORD: testbench - # Port defined in test/nginx.conf - TESTSUITE_URL: http://docker-host-bridge:8000 - TESTSUITE_DATABASE_PREFIX: "selenium" - TESTSUITE_SELENIUM_HOST: "127.0.0.1" - TESTSUITE_SELENIUM_PORT: "4444" - run: ./vendor/bin/phpunit --testsuite selenium --verbose --debug --no-coverage --stop-on-skipped - - name: Output logs and stop server - env: - CI_MODE: selenium - SELENIUM_TEMPDIR: ${{ steps.start-local-server.outputs.SELENIUM_TEMPDIR }} - if: ${{ success() || failure() }} - run: | - if [ -f "${SELENIUM_TEMPDIR}/php.log" ] ; then cat "${SELENIUM_TEMPDIR}/php.log" ; fi - if [ -f "${SELENIUM_TEMPDIR}/nginx-error.log" ] ; then cat "${SELENIUM_TEMPDIR}/nginx-error.log" ; fi - ./test/stop-local-server - - name: 'Upload screenshots' - uses: actions/upload-artifact@v2 - if: ${{ success() || failure() }} - with: - name: selenium-screenshots - path: ${{ github.workspace }}/build/selenium/**/* - retention-days: 1 + - name: Install dependencies + run: composer install --no-interaction + - uses: actions/setup-node@v1 + with: + node-version: 12 + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - name: yarn cache + uses: actions/cache@v2 + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install modules + run: yarn install --non-interactive --production + - name: Install nginx and php-fpm + run: sudo apt-get install -y nginx php7.2-fpm + - name: Copy the config + run: cp test/config.e2e.inc.php config.inc.php + - name: Start server + env: + CI_MODE: selenium + FPM_PATH: php-fpm7.2 + SKIP_STANDALONE: 1 + run: | + ./test/start-local-server + echo ::set-output name=SELENIUM_TEMPDIR::"$(cat /tmp/last_temp_dir_phpMyAdminTests)" + id: start-local-server + - name: Run selenium tests + env: + CI_MODE: selenium + TESTSUITE_SELENIUM_BROWSER: chrome + TESTSUITE_USER: root + TESTSUITE_PASSWORD: testbench + # Port defined in test/nginx.conf + TESTSUITE_URL: http://docker-host-bridge:8000 + TESTSUITE_DATABASE_PREFIX: "selenium" + TESTSUITE_SELENIUM_HOST: "127.0.0.1" + TESTSUITE_SELENIUM_PORT: "4444" + run: ./vendor/bin/phpunit --testsuite selenium --verbose --debug --no-coverage --stop-on-skipped + - name: Output logs and stop server + env: + CI_MODE: selenium + SELENIUM_TEMPDIR: ${{ steps.start-local-server.outputs.SELENIUM_TEMPDIR }} + if: ${{ success() || failure() }} + run: | + if [ -f "${SELENIUM_TEMPDIR}/php.log" ] ; then cat "${SELENIUM_TEMPDIR}/php.log" ; fi + if [ -f "${SELENIUM_TEMPDIR}/nginx-error.log" ] ; then cat "${SELENIUM_TEMPDIR}/nginx-error.log" ; fi + ./test/stop-local-server + - name: 'Upload screenshots' + uses: actions/upload-artifact@v2 + if: ${{ success() || failure() }} + with: + name: selenium-screenshots + path: ${{ github.workspace }}/build/selenium/**/* + retention-days: 1 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 16a1a6ddd2..5b3270d4cc 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -9,192 +9,192 @@ on: - QA_** jobs: - multi-arch-tests-php: - name: Test on php ${{ matrix.php-version }} (${{ matrix.arch }}) - if: "!contains(github.event.head_commit.message, '[ci skip]')" - runs-on: ubuntu-latest - continue-on-error: ${{ matrix.experimental }} - strategy: - fail-fast: false - matrix: - include: - - { php-version: '7', experimental: false, arch: 'amd64', exclude-phpunit-groups: 'extension-iconv' } - - { php-version: '7', experimental: false, arch: 'arm64v8', exclude-phpunit-groups: 'extension-iconv' } - - { php-version: '7', experimental: false, arch: 'arm32v7', exclude-phpunit-groups: 'extension-iconv,32bit-incompatible' } - - { php-version: '7', experimental: false, arch: 'arm32v6', exclude-phpunit-groups: 'extension-iconv,32bit-incompatible' } - - { php-version: '7', experimental: false, arch: 'i386', exclude-phpunit-groups: 'extension-iconv,32bit-incompatible' } - - { php-version: '7', experimental: true, arch: 'ppc64le', exclude-phpunit-groups: 'extension-iconv' } - - { php-version: '7', experimental: false, arch: 's390x', exclude-phpunit-groups: 'extension-iconv,32bit-incompatible' } - steps: - - uses: actions/checkout@v2 - - name: Write script - # tcpdf allowed memory exhausted needs the memory_limit workaround - # musl-locales and musl-locales-lang are needed to run some locale specific tests - # gettext is needed to run generate-mo - # git is needed to workaround a version detection issue with composer, see: https://github.com/Roave/SecurityAdvisories/issues/76 - run: | - printf "set -exu && \ - export V='%s' && \ - apk add --update --no-cache \ - php\$V-cli php\$V-mysqli php\$V-session php\$V-mbstring php\$V-ctype \ - php\$V-iconv php\$V-xml php\$V-tokenizer php\$V-xmlwriter php\$V-simplexml \ - php\$V-dom php\$V-json php\$V-bz2 php\$V-curl php\$V-gd php\$V-zip \ - musl-locales musl-locales-lang \ - gettext composer git && \ - composer update && \ - ./scripts/generate-mo && \ - php -d memory_limit=512M ./vendor/bin/phpunit --no-coverage --testsuite unit --exclude-group=%s" \ - "${{ matrix.php-version }}" "${{ matrix.exclude-phpunit-groups }}" > ./do-tests.sh - - name: Setup multi arch support - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - - name: Print arch - run: docker run --rm ${{ matrix.arch }}/alpine:3.14 uname -a - - name: Run tests on php ${{ matrix.php-version }} - run: docker run -v $PWD:/app --workdir /app --rm ${{ matrix.arch }}/alpine:3.14 sh /app/do-tests.sh - test-php: - name: Test on php ${{ matrix.php-version }} and ${{ matrix.os }} - if: "!contains(github.event.head_commit.message, '[ci skip]')" - runs-on: ${{ matrix.os }} - continue-on-error: ${{ matrix.experimental }} - strategy: - matrix: - php-version: ["7.2", "7.3", "7.4", "8.0"] - experimental: [false] - os: [ubuntu-latest] - phpunit-options: ['--testsuite unit'] - include: - - php-version: '8.1' - experimental: true - os: ubuntu-latest - phpunit-options: '--configuration test/phpunit-php-nightly.xml' - composer-options: '--ignore-platform-req=php' - steps: - - uses: actions/checkout@v2 - - name: Install gettext - run: sudo apt-get install -y gettext - - name: Generate mo files - run: ./scripts/generate-mo --quiet - - name: Use php ${{ matrix.php-version }} - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - extensions: mbstring, iconv, mysqli, zip, gd, bz2 - coverage: xdebug + multi-arch-tests-php: + name: Test on php ${{ matrix.php-version }} (${{ matrix.arch }}) + if: "!contains(github.event.head_commit.message, '[ci skip]')" + runs-on: ubuntu-latest + continue-on-error: ${{ matrix.experimental }} + strategy: + fail-fast: false + matrix: + include: + - { php-version: '7', experimental: false, arch: 'amd64', exclude-phpunit-groups: 'extension-iconv' } + - { php-version: '7', experimental: false, arch: 'arm64v8', exclude-phpunit-groups: 'extension-iconv' } + - { php-version: '7', experimental: false, arch: 'arm32v7', exclude-phpunit-groups: 'extension-iconv,32bit-incompatible' } + - { php-version: '7', experimental: false, arch: 'arm32v6', exclude-phpunit-groups: 'extension-iconv,32bit-incompatible' } + - { php-version: '7', experimental: false, arch: 'i386', exclude-phpunit-groups: 'extension-iconv,32bit-incompatible' } + - { php-version: '7', experimental: true, arch: 'ppc64le', exclude-phpunit-groups: 'extension-iconv' } + - { php-version: '7', experimental: false, arch: 's390x', exclude-phpunit-groups: 'extension-iconv,32bit-incompatible' } + steps: + - uses: actions/checkout@v2 + - name: Write script + # tcpdf allowed memory exhausted needs the memory_limit workaround + # musl-locales and musl-locales-lang are needed to run some locale specific tests + # gettext is needed to run generate-mo + # git is needed to workaround a version detection issue with composer, see: https://github.com/Roave/SecurityAdvisories/issues/76 + run: | + printf "set -exu && \ + export V='%s' && \ + apk add --update --no-cache \ + php\$V-cli php\$V-mysqli php\$V-session php\$V-mbstring php\$V-ctype \ + php\$V-iconv php\$V-xml php\$V-tokenizer php\$V-xmlwriter php\$V-simplexml \ + php\$V-dom php\$V-json php\$V-bz2 php\$V-curl php\$V-gd php\$V-zip \ + musl-locales musl-locales-lang \ + gettext composer git && \ + composer update && \ + ./scripts/generate-mo && \ + php -d memory_limit=512M ./vendor/bin/phpunit --no-coverage --testsuite unit --exclude-group=%s" \ + "${{ matrix.php-version }}" "${{ matrix.exclude-phpunit-groups }}" > ./do-tests.sh + - name: Setup multi arch support + run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + - name: Print arch + run: docker run --rm ${{ matrix.arch }}/alpine:3.14 uname -a + - name: Run tests on php ${{ matrix.php-version }} + run: docker run -v $PWD:/app --workdir /app --rm ${{ matrix.arch }}/alpine:3.14 sh /app/do-tests.sh + test-php: + name: Test on php ${{ matrix.php-version }} and ${{ matrix.os }} + if: "!contains(github.event.head_commit.message, '[ci skip]')" + runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.experimental }} + strategy: + matrix: + php-version: ["7.2", "7.3", "7.4", "8.0"] + experimental: [false] + os: [ubuntu-latest] + phpunit-options: ['--testsuite unit'] + include: + - php-version: '8.1' + experimental: true + os: ubuntu-latest + phpunit-options: '--configuration test/phpunit-php-nightly.xml' + composer-options: '--ignore-platform-req=php' + steps: + - uses: actions/checkout@v2 + - name: Install gettext + run: sudo apt-get install -y gettext + - name: Generate mo files + run: ./scripts/generate-mo --quiet + - name: Use php ${{ matrix.php-version }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: mbstring, iconv, mysqli, zip, gd, bz2 + coverage: xdebug - - name: Get Composer cache directory - id: composer-cache - run: | - echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Get Composer cache directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" - - name: Cache dependencies - uses: actions/cache@v2 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }} - restore-keys: | - composer-${{ runner.os }}-${{ matrix.php-version }}- + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}- - - name: Install dependencies - run: composer install --no-interaction ${{ matrix.composer-options }} - - name: Run php tests - run: composer run phpunit -- ${{ matrix.phpunit-options }} - - name: Send coverage - uses: codecov/codecov-action@v1 - with: - flags: unit-${{ matrix.php-version }}-${{ matrix.os }} - name: phpunit-${{ matrix.php-version }}-${{ matrix.os }} - - name: Send coverage to Scrutinizer - uses: sudo-bot/action-scrutinizer@latest - # Upload can fail on forks - continue-on-error: true - with: - cli-args: "--format=php-clover build/logs/clover.xml" - - name: Send coverage to Codacy - # Upload can fail on forks or if the secret is missing - continue-on-error: true - uses: codacy/codacy-coverage-reporter-action@master - with: - project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} - coverage-reports: build/logs/clover.xml + - name: Install dependencies + run: composer install --no-interaction ${{ matrix.composer-options }} + - name: Run php tests + run: composer run phpunit -- ${{ matrix.phpunit-options }} + - name: Send coverage + uses: codecov/codecov-action@v1 + with: + flags: unit-${{ matrix.php-version }}-${{ matrix.os }} + name: phpunit-${{ matrix.php-version }}-${{ matrix.os }} + - name: Send coverage to Scrutinizer + uses: sudo-bot/action-scrutinizer@latest + # Upload can fail on forks + continue-on-error: true + with: + cli-args: "--format=php-clover build/logs/clover.xml" + - name: Send coverage to Codacy + # Upload can fail on forks or if the secret is missing + continue-on-error: true + uses: codacy/codacy-coverage-reporter-action@master + with: + project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} + coverage-reports: build/logs/clover.xml - test-php-optional-extensions: - name: Test on php (+ ext-${{ matrix.extension }}) ${{ matrix.php-version }} and ${{ matrix.os }} - runs-on: ${{ matrix.os }} - if: "!contains(github.event.head_commit.message, '[ci skip]')" - strategy: - matrix: - php-version: ["7.2"] - os: [ubuntu-latest] - extension: ["dbase", "recode"] - steps: - - uses: actions/checkout@v2 - - name: Install gettext - run: sudo apt-get install -y gettext - - name: Generate mo files - run: ./scripts/generate-mo --quiet - - name: Use php ${{ matrix.php-version }} - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - extensions: ${{ matrix.extension }}, mbstring, iconv, mysqli, zip, gd - coverage: xdebug + test-php-optional-extensions: + name: Test on php (+ ext-${{ matrix.extension }}) ${{ matrix.php-version }} and ${{ matrix.os }} + runs-on: ${{ matrix.os }} + if: "!contains(github.event.head_commit.message, '[ci skip]')" + strategy: + matrix: + php-version: ["7.2"] + os: [ubuntu-latest] + extension: ["dbase", "recode"] + steps: + - uses: actions/checkout@v2 + - name: Install gettext + run: sudo apt-get install -y gettext + - name: Generate mo files + run: ./scripts/generate-mo --quiet + - name: Use php ${{ matrix.php-version }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: ${{ matrix.extension }}, mbstring, iconv, mysqli, zip, gd + coverage: xdebug - - name: Get Composer cache directory - id: composer-cache - run: | - echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Get Composer cache directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" - - name: Cache dependencies - uses: actions/cache@v2 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }} - restore-keys: | - composer-${{ runner.os }}-${{ matrix.php-version }}- + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}- - - name: Install dependencies - run: composer install - - name: Run php tests - run: composer run phpunit -- --testsuite unit - - name: Send coverage - uses: codecov/codecov-action@v1 - with: - flags: ${{ matrix.extension }}-extension - name: php-7.2-${{ matrix.extension }}-enabled - - name: Send coverage to Scrutinizer - uses: sudo-bot/action-scrutinizer@latest - # Upload can fail on forks - continue-on-error: true - with: - cli-args: "--format=php-clover build/logs/clover.xml" - - name: Send coverage to Codacy - # Upload can fail on forks or if the secret is missing - continue-on-error: true - uses: codacy/codacy-coverage-reporter-action@master - with: - project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} - coverage-reports: build/logs/clover.xml + - name: Install dependencies + run: composer install + - name: Run php tests + run: composer run phpunit -- --testsuite unit + - name: Send coverage + uses: codecov/codecov-action@v1 + with: + flags: ${{ matrix.extension }}-extension + name: php-7.2-${{ matrix.extension }}-enabled + - name: Send coverage to Scrutinizer + uses: sudo-bot/action-scrutinizer@latest + # Upload can fail on forks + continue-on-error: true + with: + cli-args: "--format=php-clover build/logs/clover.xml" + - name: Send coverage to Codacy + # Upload can fail on forks or if the secret is missing + continue-on-error: true + uses: codacy/codacy-coverage-reporter-action@master + with: + project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} + coverage-reports: build/logs/clover.xml - test-js: - name: Test javascript files - runs-on: ubuntu-latest - if: "!contains(github.event.head_commit.message, '[ci skip]')" - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 12 - - name: Get yarn cache directory path - id: yarn-cache-dir-path - run: echo "::set-output name=dir::$(yarn cache dir)" - - name: yarn cache - uses: actions/cache@v2 - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - name: Install modules - run: yarn install --non-interactive - - name: Run tests - run: yarn test + test-js: + name: Test javascript files + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]')" + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: 12 + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - name: yarn cache + uses: actions/cache@v2 + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install modules + run: yarn install --non-interactive + - name: Run tests + run: yarn test |