Skip to content

chore(workflow): simplify Psalm invocation by removing vendor/bin p… #799

chore(workflow): simplify Psalm invocation by removing vendor/bin p…

chore(workflow): simplify Psalm invocation by removing vendor/bin p… #799

Workflow file for this run

# This file is part of the Phalcon Kit.
#
# (c) Phalcon Kit Team
#
# For the full copyright and license information, please view the LICENSE.txt
# file that was distributed with this source code.
name: Phalcon Kit 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:
# PHP extensions required by Composer
EXTENSIONS: apcu, gettext, gd, igbinary, imagick, intl, json, mbstring, msgpack, memcached, sqlite3, yaml, redis, openssl, phalcon5, swoole, :memcache, :psr
EXTENSIONS_CACHE_KEY: php-ext-v1
permissions: { }
jobs:
# PHP SETUP
setup:
runs-on: ubuntu-latest
strategy:
matrix:
php:
- "8.4"
dependencies:
- "highest"
outputs:
cache-key: ${{ steps.composer-cache.outputs.key }}
steps:
- uses: actions/checkout@v5
- name: Setup cache environment
id: extcache
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ matrix.php }}
extensions: ${{ env.EXTENSIONS }}
key: ${{ env.EXTENSIONS_CACHE_KEY }}
- name: Cache PHP extensions
uses: actions/cache@v4
with:
path: ${{ steps.extcache.outputs.dir }}
key: ${{ steps.extcache.outputs.key }}
restore-keys: ${{ steps.extcache.outputs.key }}
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: ${{ env.EXTENSIONS }}
tools: composer, cs2pr
- name: Cache global Composer packages
uses: actions/cache@v4
with:
path: ~/.composer
key: composer-global-${{ runner.os }}-${{ hashFiles('**/composer.json') }}
- uses: ramsey/composer-install@v3
with:
dependency-versions: ${{ matrix.dependencies }}
composer-options: ${{ matrix.composer-options }}
custom-cache-suffix: phalcon-kit-composer
# PHP CODE SNIFFER
code-sniffer:
needs: setup
runs-on: ubuntu-latest
strategy:
matrix:
php:
- "8.4"
dependencies:
- "highest"
steps:
- uses: actions/checkout@v5
- name: Setup cache environment
id: extcache
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ matrix.php }}
extensions: ${{ env.EXTENSIONS }}
key: ${{ env.EXTENSIONS_CACHE_KEY }}
- name: Cache PHP extensions
uses: actions/cache@v4
with:
path: ${{ steps.extcache.outputs.dir }}
key: ${{ steps.extcache.outputs.key }}
restore-keys: ${{ steps.extcache.outputs.key }}
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: ${{ env.EXTENSIONS }}
tools: composer, cs2pr, phpcs
- uses: ramsey/composer-install@v3
with:
dependency-versions: ${{ matrix.dependencies }}
composer-options: ${{ matrix.composer-options }}
custom-cache-suffix: phalcon-kit-composer
- name: PHP Code Sniffer
run: phpcs --standard=phpcs.xml -q --report=checkstyle | cs2pr --graceful-warnings
# PHP STATIC ANALYSIS
static-analysis:
needs: setup
runs-on: ubuntu-latest
strategy:
matrix:
php:
- "8.4"
dependencies:
- "highest"
steps:
- uses: actions/checkout@v5
- name: Setup cache environment
id: extcache
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ matrix.php }}
extensions: ${{ env.EXTENSIONS }}
key: ${{ env.EXTENSIONS_CACHE_KEY }}
- name: Cache PHP extensions
uses: actions/cache@v4
with:
path: ${{ steps.extcache.outputs.dir }}
key: ${{ steps.extcache.outputs.key }}
restore-keys: ${{ steps.extcache.outputs.key }}
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: ${{ env.EXTENSIONS }}
tools: composer, cs2pr, phpstan
- uses: ramsey/composer-install@v3
with:
dependency-versions: ${{ matrix.dependencies }}
composer-options: ${{ matrix.composer-options }}
custom-cache-suffix: phalcon-kit-composer
- name: PHP Stan
run: phpstan
# PHP PSALM
php-security:
needs: setup
runs-on: ubuntu-latest
strategy:
matrix:
php:
- "8.4"
dependencies:
- "highest"
permissions:
security-events: write
contents: read
actions: read
steps:
- name: Checkout code
uses: actions/checkout@v5
- name: Setup cache environment
id: extcache
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ matrix.php }}
extensions: ${{ env.EXTENSIONS }}
key: ${{ env.EXTENSIONS_CACHE_KEY }}
- name: Cache PHP extensions
uses: actions/cache@v4
with:
path: ${{ steps.extcache.outputs.dir }}
key: ${{ steps.extcache.outputs.key }}
restore-keys: ${{ steps.extcache.outputs.key }}
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: ${{ env.EXTENSIONS }}
tools: composer, psalm
- uses: ramsey/composer-install@v3
with:
dependency-versions: ${{ matrix.dependencies }}
composer-options: ${{ matrix.composer-options }}
custom-cache-suffix: phalcon-kit-composer
- name: Dump Composer autoloader
run: composer dump-autoload -a
- name: Clear Psalm Cache
run: rm -rf ~/.cache/psalm psalm-results.sarif .psalm.cache
- name: Run Psalm Security Scan
run: |
psalm --output-format=github --no-progress --no-cache --threads=4
# - name: Run Psalm Security Scan
# run: |
# psalm --config=psalm.xml \
# --output-format=sarif \
# --no-progress \
# --no-cache \
# --stats \
# --show-info=false \
# --threads=4 2>&1 | tee psalm-results.sarif
#
# - name: Upload Psalm report to GitHub Code Scanning
# uses: github/codeql-action/upload-sarif@v4
# with:
# sarif_file: psalm-results.sarif
# PHP UNIT TEST
unit-tests:
needs: setup
strategy:
matrix:
php:
- "8.4"
dependencies:
- "highest"
services:
mysql:
image: mysql:8.0
env:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_DATABASE: phalcon_kit
ports:
- 3306:3306
options: >-
--health-cmd="mysqladmin ping -h 127.0.0.1"
--health-interval=10s
--health-timeout=5s
--health-retries=3
redis:
image: redis:latest
ports:
- 6379:6379
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Prepare Locale
run: |
sudo locale-gen en_IN.UTF-8
sudo update-locale LANG=en_IN.UTF-8
sudo locale-gen en_CA.UTF-8
sudo update-locale LANG=en_CA.UTF-8
sudo locale-gen fr_CA.UTF-8
sudo update-locale LANG=fr_CA.UTF-8
- name: Setup cache environment
id: extcache
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ matrix.php }}
extensions: ${{ env.EXTENSIONS }}
key: ${{ env.EXTENSIONS_CACHE_KEY }}
- name: Cache PHP extensions
uses: actions/cache@v4
with:
path: ${{ steps.extcache.outputs.dir }}
key: ${{ steps.extcache.outputs.key }}
restore-keys: ${{ steps.extcache.outputs.key }}
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: ${{ env.EXTENSIONS }}
tools: composer, cs2pr, phpunit
- uses: ramsey/composer-install@v3
with:
dependency-versions: ${{ matrix.dependencies }}
composer-options: ${{ matrix.composer-options }}
custom-cache-suffix: phalcon-kit-composer
- name: Install Phalcon DevTools
run: |
composer global config minimum-stability dev
composer global config prefer-stable true
composer global require phalcon/devtools:^5.0 --no-interaction --no-progress
echo "$(composer global config home)/vendor/bin" >> $GITHUB_PATH
- name: Set permissions and environment
run: |
chmod +x ./bin/* ./vendor/bin/* ./phalcon-kit
mkdir .phalcon
touch .env
cp .env.github .env
- name: Run migrations
run: |
./bin/migration-list.sh
./bin/migration-run.sh
- name: PHP Unit
run: phpunit