From db05e9e3e9328f2bb75219f6a7c2e7589a08a0dc Mon Sep 17 00:00:00 2001 From: Meritoo Date: Sat, 16 Nov 2024 10:53:50 +0100 Subject: [PATCH] Implement GitHub actions --- .github/workflows/verify-stability.yaml | 195 ++++++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 .github/workflows/verify-stability.yaml diff --git a/.github/workflows/verify-stability.yaml b/.github/workflows/verify-stability.yaml new file mode 100644 index 0000000..23327ed --- /dev/null +++ b/.github/workflows/verify-stability.yaml @@ -0,0 +1,195 @@ +name: Verify stability + +on: + push: + branches: + - master + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + Validate: + runs-on: ubuntu-latest + strategy: + matrix: + php-versions: [ '8.0', '8.1', '8.2' ] + env: + extensions: dom, fileinfo, intl, json, pcre, simplexml + key: cache-v1 # can be any string, change to clear the extension cache. + steps: + - name: Hello + run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." + - name: Checkout branch + uses: actions/checkout@v4 + - name: Setup cache environment + id: extcache + uses: shivammathur/cache-extensions@v1 + with: + php-version: ${{ matrix.php-versions }} + extensions: ${{ env.extensions }} + key: ${{ env.key }} + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + extensions: ${{ env.extensions }} + - name: Validate Composer (composer.json and composer.lock) + uses: php-actions/composer@v6 + with: + php_version: ${{ matrix.php-versions }} + php_extensions: intl + command: validate --strict --no-check-publish + - name: Cache Composer dependencies + id: composer-cache + uses: actions/cache@v4 + with: + path: /tmp/composer-cache + key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-php- + - name: Install Composer dependencies + uses: php-actions/composer@v6 + with: + php_version: ${{ matrix.php-versions }} + php_extensions: intl + dev: no + PHPStan: + runs-on: ubuntu-latest + strategy: + matrix: + php-versions: [ '8.0', '8.1', '8.2' ] + env: + extensions: dom, fileinfo, intl, json, pcre, simplexml + key: cache-v1 # can be any string, change to clear the extension cache. + needs: [ Validate ] + if: needs.Validate.result == 'success' + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup cache environment + id: extcache + uses: shivammathur/cache-extensions@v1 + with: + php-version: ${{ matrix.php-versions }} + extensions: ${{ env.extensions }} + key: ${{ env.key }} + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + extensions: ${{ env.extensions }} + - name: Install Composer dependencies + uses: php-actions/composer@v6 + with: + php_version: ${{ matrix.php-versions }} + php_extensions: intl + - name: Analyse code with PHPStan + run: vendor/bin/phpstan analyse --memory-limit 256M + PHPUnit: + runs-on: ubuntu-latest + strategy: + matrix: + php-versions: [ '8.0', '8.1', '8.2' ] + env: + extensions: dom, fileinfo, intl, json, pcre, simplexml + key: cache-v1 # can be any string, change to clear the extension cache. + needs: [ PHPStan ] + if: needs.PHPStan.result == 'success' + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup cache environment + id: extcache + uses: shivammathur/cache-extensions@v1 + with: + php-version: ${{ matrix.php-versions }} + extensions: ${{ env.extensions }} + key: ${{ env.key }} + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + extensions: ${{ env.extensions }} + - name: Install locales + run: | + sudo apt-get update \ + && sudo apt-get install -y --no-install-recommends --fix-missing \ + locales + - name: Generate locales + run: | + sudo sed -i "s/^# de_DE/de_DE/g; \ + s/^# es_ES/es_ES/g; \ + s/^# en_GB/en_GB/g; \ + s/^# en_US/en_US/g; \ + s/^# fr_FR/fr_FR/g; \ + s/^# it_IT/it_IT/g; \ + s/^# pl_PL/pl_PL/g; \ + s/^# ru_RU/ru_RU/g;" /etc/locale.gen \ + && sudo locale-gen + - name: Install Composer dependencies + uses: php-actions/composer@v6 + with: + php_version: ${{ matrix.php-versions }} + php_extensions: intl + - name: Run PHPUnit tests + run: vendor/bin/phpunit --no-coverage + - name: Bye 👋 + run: echo "🍏 This job's status is ${{ job.status }}." + +# TODO (kn) Remove me +# +# tests: +# runs-on: ubuntu-latest +# strategy: +# matrix: +# php-versions: [ '7.4', '8.0' ] +# # php-versions: [ '7.4', '8.0', '8.1', '8.2' ] +# steps: +# - name: Hello +# run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." +# - name: Setup PHP +# uses: shivammathur/setup-php@v2 +# with: +# php-version: ${{ matrix.php-versions }} +# extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, mysql, mysqli, pdo_mysql, bcmath, soap, intl, gd, exif, iconv, imagick +# ini-values: date.timezone=Europe/London +# - name: Install locales +# run: | +# sudo apt-get update \ +# && sudo apt-get install -y --no-install-recommends --fix-missing \ +# locales +# - name: Generate locales +# run: | +# sudo sed -i "s/^# de_DE/de_DE/g; \ +# s/^# es_ES/es_ES/g; \ +# s/^# en_GB/en_GB/g; \ +# s/^# en_US/en_US/g; \ +# s/^# fr_FR/fr_FR/g; \ +# s/^# it_IT/it_IT/g; \ +# s/^# pl_PL/pl_PL/g; \ +# s/^# ru_RU/ru_RU/g;" /etc/locale.gen \ +# && sudo locale-gen +# - name: Checkout branch +# uses: actions/checkout@v3 +# - name: Validate composer.json and composer.lock +# run: composer validate --strict +# - name: Cache Composer packages +# id: composer-cache +# uses: actions/cache@v3 +# with: +# path: vendor +# key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} +# restore-keys: | +# ${{ runner.os }}-php- +# - name: Install Composer dependencies +# run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --no-plugins --prefer-dist +# - name: Run PHPUnit tests +# run: vendor/bin/phpunit --no-coverage +# - name: Bye 👋 +# run: echo "🍏 This job's status is ${{ job.status }}."