Skip to content

Phalcon CI

Phalcon CI #235

Workflow file for this run

# This file is part of Phalcon.
#
# (c) Phalcon Team <team@phalcon.io>
#
# For the full copyright and license information, please view
# the LICENSE file that was distributed with this source code.
name: Phalcon CI
on:
schedule:
- cron: '0 2 * * *' # Daily at 02:00 runs only on default branch
push:
paths-ignore:
- '**.md'
- '**.txt'
pull_request:
workflow_dispatch:
env:
# All versions should be declared here
PHALCON_VERSION: 5.6.0
# For tests
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
LC_ALL: en_US.UTF-8
# PHP extensions required by Composer
# (adding phalcon version here until I figure out how to use the variable above)
EXTENSIONS: apcu, phalcon-5.6.0
jobs:
# Quality Tools
quality:
name: Quality Tests
runs-on: ubuntu-latest
permissions:
contents: read # to fetch code (actions/checkout)
steps:
- uses: actions/checkout@v3
# - uses: php-actions/composer@v6
- name: Run PHP CodeSniffer
run: docker run --rm -v $(pwd):/data cytopia/phpcs --standard=./phpcs.xml
# - name: Get PHPStan PHAR
# run: |
# curl --silent -H "User-agent: cURL (https://github.com/php-actions)" -L \
# "https://www.getrelease.download/phpstan/phpstan/1.8.11/phar" > custom-phpstan.phar
#
# - name: Run PHPStan
# uses: php-actions/phpstan@v3
# with:
# php_version: 8.0
# path: src/
# vendored_phpstan_path: custom-phpstan.phar
# level: max
# autoload_file: ./vendor/autoload.php
# Running Tests
build-and-test:
name: tests / PHP-${{ matrix.php }}
runs-on: ubuntu-latest
permissions:
contents: read # to fetch code (actions/checkout)
strategy:
fail-fast: false
matrix:
php: [ '8.0', '8.1', '8.2', '8.3' ]
steps:
- uses: actions/checkout@v3
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: ${{ env.EXTENSIONS }}
ini-values: apc.enable_cli=on, session.save_path=${{ env.SESSION_SAVE_PATH }}
tools: pecl, composer:v2
coverage: xdebug
env:
COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: "Validate composer"
run: composer validate --no-check-all --no-check-publish
- name: "Install development dependencies with Composer"
uses: "ramsey/composer-install@v2"
with:
composer-options: "--prefer-dist"
- name: Setup Tests
shell: bash
run: |
cp config/.env.default .env
- name: Run Unit Tests
if: always()
run: |
vendor/bin/phpunit tests/unit --testdox --process-isolation -v
# Qodana
qodana:
name: Qodana
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
checks: write
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit
fetch-depth: 0 # a full history is required for pull request analysis
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.0
extensions: ${{ env.EXTENSIONS }}
ini-values: apc.enable_cli=on, session.save_path=${{ env.SESSION_SAVE_PATH }}
tools: pecl, composer:v2
coverage: xdebug
env:
COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: "Validate composer"
run: composer validate --no-check-all --no-check-publish
- name: "Install development dependencies with Composer"
uses: "ramsey/composer-install@v2"
with:
composer-options: "--prefer-dist"
- name: Setup Tests
shell: bash
run: |
cp config/.env.default .env
- name: Run Unit Tests
if: always()
run: |
vendor/bin/phpunit tests/unit \
--process-isolation \
-v \
--coverage-php tests/support/output/coverage.xml
- name: 'Qodana Scan'
uses: JetBrains/qodana-action@v2023.2
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
with:
args: --baseline,qodana.sarif.json
- name: "Upload to Qodana"
run: |
docker run \
-v $(pwd):/data/project/ \
-v ./tests/support/output/:/data/coverage \
-e QODANA_TOKEN="${{ secrets.QODANA_TOKEN }}" \
jetbrains/qodana-php