From d7fa7108a6512e026697fa8942099307e6425d52 Mon Sep 17 00:00:00 2001 From: Brandon Shipley Date: Mon, 26 Jan 2026 23:41:25 -0800 Subject: [PATCH] CI, read me update, php composer version min = 8.2 --- .gitea/workflows/ci.yaml | 133 ++++++++++++++++++++++++++++++++++ .gitea/workflows/release.yaml | 17 +++++ .gitea/workflows/status.yaml | 31 ++++++++ .github/workflows/ci.yml | 127 ++++++++++++++++++++++++++++++++ README.md | 2 +- composer.json | 2 +- 6 files changed, 310 insertions(+), 2 deletions(-) create mode 100644 .gitea/workflows/ci.yaml create mode 100644 .gitea/workflows/release.yaml create mode 100644 .gitea/workflows/status.yaml create mode 100644 .github/workflows/ci.yml diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml new file mode 100644 index 0000000..0c48d65 --- /dev/null +++ b/.gitea/workflows/ci.yaml @@ -0,0 +1,133 @@ +name: CI + +on: + push: + pull_request: + workflow_dispatch: + +jobs: + testsuite: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + php-version: ['8.2', '8.4'] +# db-type: ['mysql'] + db-type: ['sqlite', 'mysql', 'pgsql'] + prefer-lowest: [''] + include: + - php-version: '8.2' + db-type: 'sqlite' + prefer-lowest: 'prefer-lowest' + + services: + mysql8: + image: mysql:8.0 + env: + MYSQL_ALLOW_EMPTY_PASSWORD: yes + MYSQL_DATABASE: cakephp +# services: +# postgres: +# image: postgres +# ports: +# - 5432:5432 +# env: +# POSTGRES_PASSWORD: postgres + + steps: + - uses: actions/checkout@v4 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: mbstring, intl, sqlite, pdo_${{ matrix.db-type }} + coverage: pcov + + - name: Get composer cache directory + id: composercache + run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - name: Cache dependencies + uses: actions/cache@v4 + with: + path: ${{ steps.composercache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ steps.key-date.outputs.date }}-${{ hashFiles('composer.json') }}-${{ matrix.prefer-lowest }} + + - name: Composer install + run: | + composer --version + if ${{ matrix.prefer-lowest == 'prefer-lowest' }} + then + composer update --prefer-lowest --prefer-stable + composer require --dev dereuromark/composer-prefer-lowest:dev-master + else + composer install --no-progress --prefer-dist --optimize-autoloader + fi + + - name: Setup problem matchers for PHPUnit + if: matrix.db-type == 'mysql' + run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + + + - name: Run PHPUnit tests + env: + TEST_MYSQL_HOST: mysql8 + TEST_MYSQL_CHARSET: utf8mb4 + TEST_MYSQL_DBNAME: cakephp + TEST_MYSQL_USERNAME: root + TEST_MYSQL_PASSWORD: + run: | + if [[ ${{ matrix.php-version }} == '8.2' ]]; then + vendor/bin/phpunit --coverage-clover=coverage.xml + else + vendor/bin/phpunit + fi + + - name: Validate prefer-lowest + if: matrix.prefer-lowest == 'prefer-lowest' + run: vendor/bin/validate-prefer-lowest -m + +# - name: Upload coverage reports to Codecov +# if: success() && matrix.php-version == '8.2' +# uses: codecov/codecov-action@v4 +# with: +# token: ${{ secrets.CODECOV_TOKEN }} + + validation: + name: Coding Standard & Static Analysis + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.2' + extensions: mbstring, intl, sqlite + coverage: none + + - name: Get composer cache directory + id: composercache + run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - name: Cache dependencies + uses: actions/cache@v4 + with: + path: ${{ steps.composercache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ steps.key-date.outputs.date }}-${{ hashFiles('composer.json') }}-${{ matrix.prefer-lowest }} + + - name: Composer install + run: | + composer --version + if ${{ matrix.prefer-lowest == 'prefer-lowest' }} + then + composer update --prefer-lowest --prefer-stable + composer require --dev dereuromark/composer-prefer-lowest:dev-master + else + composer install --no-progress --prefer-dist --optimize-autoloader + fi + + - name: Run phpstan + run: vendor/bin/phpstan analyse src --error-format=github + + - name: Run phpcs + run: composer cs-check diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml new file mode 100644 index 0000000..77787fb --- /dev/null +++ b/.gitea/workflows/release.yaml @@ -0,0 +1,17 @@ +name: Release + +on: + push: + tags: + - "v*.*.*" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Release + uses: softprops/action-gh-release@v2 + + diff --git a/.gitea/workflows/status.yaml b/.gitea/workflows/status.yaml new file mode 100644 index 0000000..c703766 --- /dev/null +++ b/.gitea/workflows/status.yaml @@ -0,0 +1,31 @@ +--- +name: CI Build Status + +on: + workflow_run: + workflows: + - CI + types: + - completed +jobs: + on-success: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} + steps: + - name: Webhook + uses: zzzze/webhook-trigger@master + with: + data: "{\"text\":\"${{ gitea.repository }} build succeeded 🎉\"}" + webhook_url: ${{ secrets.BUILD_STATUS_NOTIFY_WEBHOOK_URL }} + options: "-H \"Content-Type: application/json\"" + + on-failure: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'failure' }} + steps: + - name: Webhook + uses: zzzze/webhook-trigger@master + with: + data: "{\"text\":\"${{ gitea.repository }} build failed 🔎\"}" + webhook_url: ${{ secrets.BUILD_STATUS_NOTIFY_WEBHOOK_URL }} + options: "-H \"Content-Type: application/json\"" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..84a1672 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,127 @@ +name: CI + +on: + push: + pull_request: + workflow_dispatch: + +jobs: + testsuite: + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + php-version: ['8.1', '8.4'] + db-type: ['sqlite', 'mysql', 'pgsql'] + prefer-lowest: [''] + include: + - php-version: '8.1' + db-type: 'sqlite' + prefer-lowest: 'prefer-lowest' + + services: + postgres: + image: postgres + ports: + - 5432:5432 + env: + POSTGRES_PASSWORD: postgres + + steps: + - uses: actions/checkout@v4 + + - name: Setup Service + if: matrix.db-type == 'mysql' + run: | + sudo service mysql start + mysql -h 127.0.0.1 -u root -proot -e 'CREATE DATABASE cakephp;' + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: mbstring, intl, bcmath, pdo_${{ matrix.db-type }} + coverage: pcov + + - name: Get composer cache directory + id: composercache + run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - name: Cache dependencies + uses: actions/cache@v4 + with: + path: ${{ steps.composercache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ steps.key-date.outputs.date }}-${{ hashFiles('composer.json') }}-${{ matrix.prefer-lowest }} + + - name: Composer install + run: | + composer --version + if ${{ matrix.prefer-lowest == 'prefer-lowest' }} + then + composer update --prefer-lowest --prefer-stable + composer require --dev dereuromark/composer-prefer-lowest:dev-master + else + composer install --no-progress --prefer-dist --optimize-autoloader + fi + + - name: Setup problem matchers for PHPUnit + if: matrix.db-type == 'mysql' + run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + + - name: Wait for MySQL + if: matrix.db-type == 'mysql' + run: while ! `mysqladmin ping -h 127.0.0.1 --silent`; do printf 'Waiting for MySQL...\n'; sleep 2; done; + + - name: Run PHPUnit + run: | + if [[ ${{ matrix.db-type }} == 'sqlite' ]]; then export DB_URL='sqlite:///:memory:'; fi + if [[ ${{ matrix.db-type }} == 'mysql' ]]; then export DB_URL='mysql://root:root@127.0.0.1/cakephp?encoding=utf8'; fi + if [[ ${{ matrix.db-type }} == 'pgsql' ]]; then export DB_URL='postgres://postgres:postgres@127.0.0.1/postgres'; fi + if [[ ${{ matrix.php-version }} == '8.1' ]]; then + vendor/bin/phpunit --coverage-clover=coverage.xml + else + vendor/bin/phpunit + fi + + - name: Validate prefer-lowest + if: matrix.prefer-lowest == 'prefer-lowest' + run: vendor/bin/validate-prefer-lowest -m + +# - name: Upload coverage reports to Codecov +# if: success() && matrix.php-version == '8.1' +# uses: codecov/codecov-action@v4 +# with: +# token: ${{ secrets.CODECOV_TOKEN }} + + validation: + name: Coding Standard & Static Analysis + runs-on: ubuntu-22.04 + + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.1' + extensions: mbstring, intl + coverage: none + + - name: Get composer cache directory + id: composercache + run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - name: Cache dependencies + uses: actions/cache@v4 + with: + path: ${{ steps.composercache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ steps.key-date.outputs.date }}-${{ hashFiles('composer.json') }}-${{ matrix.prefer-lowest }} + + - name: Composer phpstan setup + run: composer stan-setup + + - name: Run phpstan + run: vendor/bin/phpstan analyse --error-format=github + + - name: Run phpcs + run: composer cs-check \ No newline at end of file diff --git a/README.md b/README.md index afd50e3..9d73642 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,6 @@ You can install this plugin into your CakePHP application using [composer](https The recommended way to install composer packages is: ``` -composer require hi-powereddev/cake-contact-us +composer require hi-powered-dev/cake-contact-us ``` diff --git a/composer.json b/composer.json index 16e4384..c2d719c 100644 --- a/composer.json +++ b/composer.json @@ -4,7 +4,7 @@ "type": "cakephp-plugin", "license": "MIT", "require": { - "php": ">=8.1", + "php": ">=8.2", "cakephp/cakephp": "^5.0.1" }, "require-dev": {