Skip to content

CI

CI #1213

Workflow file for this run

#
# JBZoo Toolbox - Csv-Blueprint.
#
# This file is part of the JBZoo Toolbox project.
# For the full copyright and license information, please view the LICENSE
# file that was distributed with this source code.
#
# @license MIT
# @copyright Copyright (C) JBZoo.com, All rights reserved.
# @see https://github.com/JBZoo/Csv-Blueprint
#
name: CI
on:
pull_request:
branches:
- '*'
push:
branches:
- 'master'
schedule:
- cron: '0 0 * * *'
# To avoid copy-pasting the same commands and add control over the environment
env:
COLUMNS: 300
BLUEPRINT: time ./csv-blueprint
BLUEPRINT_PHAR: time ./build/csv-blueprint.phar
BLUEPRINT_DOCKER: time docker run --rm --workdir=/parent-host -v .:/parent-host jbzoo/csv-blueprint:local
CMD_VALIDATE: validate-csv --ansi -vvv
VALID_TEST: --csv=./tests/fixtures/batch/*.csv --schema=./tests/schemas/demo_valid.yml
INVALID_TEST: --csv=./tests/fixtures/batch/*.csv --schema=./tests/schemas/demo_*.yml --schema=./tests/schemas/invalid_schema.yml
jobs:
test-current-versions:
name: Tests
runs-on: ubuntu-latest
strategy:
matrix:
ext-parallel: [ '', 'parallel' ]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup PHP
uses: shivammathur/setup-php@v2
id: setup-php
with:
php-version: 8.3
coverage: xdebug
extensions: ast, ${{ matrix.ext-parallel }}
env:
phpts: zts
- name: Build project
run: make build --no-print-directory
- name: 🧪 PHPUnit Tests
run: make test --no-print-directory
- name: SonarCloud Scan
uses: SonarSource/sonarcloud-github-action@master
continue-on-error: true
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- name: 👍 Code Quality
run: make codestyle --no-print-directory
test-lowest-versions:
name: Tests - Lowest
runs-on: ubuntu-latest
env:
JBZOO_COMPOSER_UPDATE_FLAGS: '--prefer-lowest'
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
coverage: none
extensions: ast
- name: Install project
run: make build --no-print-directory
## To see the difference between the current and the lowest versions
- name: Downgrade dependencies
run: make update --no-print-directory
- name: 🧪 PHPUnit Tests
run: make test --no-print-directory
- name: 👍 Code Quality
run: make codestyle --no-print-directory
test-latest-libs:
name: Tests - Latest
runs-on: ubuntu-latest
env:
JBZOO_COMPOSER_UPDATE_FLAGS: '--with-all-dependencies'
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: highest
coverage: none
extensions: ast
- name: Install project
run: make build --no-print-directory
## To see the difference between the current and the latest versions
- name: Upgrade dependencies
run: make update --no-print-directory
- name: 🧪 PHPUnit Tests
run: make test --no-print-directory
- name: 👍 Code Quality
run: make codestyle --no-print-directory
markdown-lint:
name: Markdown Lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: 👍 Markdown Lint
uses: articulate/actions-markdownlint@v1
with:
config: .markdownlint.yml
files: '*.md'
verify-php-binary:
name: Verify PHP binary
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.ref }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.3
- name: Build project in production mode
run: make build-prod --no-print-directory
- name: 🎨 Test help and logo
run: $BLUEPRINT --ansi -vvv
- name: 👍 Valid CSV files
run: $BLUEPRINT $CMD_VALIDATE $VALID_TEST
- name: 👎 Invalid CSV files
run: |
! $BLUEPRINT $CMD_VALIDATE $INVALID_TEST
- name: Test as composer package
if: github.ref != 'refs/heads/master'
run: |
mkdir -pv ./build/composer-test
cd ./build/composer-test
composer init --no-interaction --name="test/test"
composer require jbzoo/csv-blueprint:dev-${{ github.event.pull_request.head.ref }}
./vendor/bin/csv-blueprint
./vendor/bin/csv-blueprint validate-csv --ansi -vvv --csv="../../tests/fixtures/batch/*.csv" --schema="../../tests/schemas/demo_valid.yml"
verify-phar-binary:
name: Verify Phar
runs-on: ubuntu-latest
strategy:
matrix:
php-version: [ 8.2, 8.3 ]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.ref }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
- name: Build project in production mode
run: make build-prod build-phar-file --no-print-directory
- name: 🎨 Test help and logo
run: $BLUEPRINT_PHAR --ansi -vvv
- name: 👍 Valid CSV files
run: $BLUEPRINT_PHAR $CMD_VALIDATE $VALID_TEST
- name: 👎 Invalid CSV files
run: |
! $BLUEPRINT_PHAR $CMD_VALIDATE $INVALID_TEST
- name: Upload Artifacts
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: PHAR - PHP v${{ matrix.php-version }}
path: ./build/csv-blueprint.phar
compression-level: 0
verify-docker:
name: Verify Docker
runs-on: ubuntu-latest
env:
BENCH_COLS: 1
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.ref }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: 🐳 Building Docker Image
uses: docker/build-push-action@v5
with:
context: .
push: false
tags: jbzoo/csv-blueprint:local
- name: 🎨 Test help and logo
run: $BLUEPRINT_DOCKER --ansi -vvv
- name: 👍 Valid CSV files
run: $BLUEPRINT_DOCKER $CMD_VALIDATE $VALID_TEST
- name: 👎 Invalid CSV files
run: |
! $BLUEPRINT_DOCKER $CMD_VALIDATE $INVALID_TEST
- name: 👍 Valid CSV files (Parallel)
run: $BLUEPRINT_DOCKER $CMD_VALIDATE $VALID_TEST --parallel
- name: 👎 Invalid CSV files (Parallel)
run: |
! $BLUEPRINT_DOCKER $CMD_VALIDATE $INVALID_TEST --parallel
- name: Prepare Benchmark
run: |
make build --no-print-directory
make bench-create-csv --no-print-directory
- name: 🔥 Benchmark (single thread)
run: |
! make bench-docker-quick --no-print-directory
- name: 🔥 Benchmark (multi threads)
run: |
! make bench-docker-quick-parallel --no-print-directory
- name: Push Docker Image (master)
uses: docker/build-push-action@v5
if: github.ref == 'refs/heads/master'
with:
context: .
push: true
tags: jbzoo/csv-blueprint:master
verify-ga:
name: Verify GitHub Actions
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.ref }}
- name: 👍 Valid CSV files
uses: ./
with:
csv: ./tests/fixtures/batch/*.csv
schema: ./tests/schemas/demo_valid.yml
- name: 👎 Invalid CSV files
uses: ./
with:
csv: ./tests/fixtures/batch/*.csv
schema: ./tests/schemas/demo_*.yml
continue-on-error: true
reports:
name: Reports
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.3
coverage: xdebug
extensions: ast
- name: Install project
run: make build --no-print-directory
- name: 📝 Build Reports
run: make report-all --no-print-directory
- name: Upload Artifacts
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: Reports
path: build/