Skip to content

2829: Feed source operations and data validation #1174

2829: Feed source operations and data validation

2829: Feed source operations and data validation #1174

Workflow file for this run

on: pull_request
name: Pull Request Review
jobs:
test-composer-install:
runs-on: ubuntu-latest
env:
COMPOSER_ALLOW_SUPERUSER: 1
strategy:
fail-fast: false
matrix:
php: ["8.3"]
name: Validate composer (PHP ${{ matrix.php}})
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php}}
extensions: apcu, ctype, iconv, imagick, json, redis, soap, xmlreader, zip
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache composer dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ matrix.php }}-composer-
- name: Validate composer files
run: composer validate composer.json --strict
- name: '[prod] Composer install with exported .env variables'
run: |
set -a && source .env && set +a
APP_ENV=prod composer install --no-dev -o
- name: Reset composer install
run: rm -rf ./vendor
- name: '[dev] Composer install with exported .env variables'
run: |
set -a && source .env && set +a
APP_ENV=dev composer install
- name: Normalize composer files
run: composer normalize --dry-run
validate-doctrine-shema:
runs-on: ubuntu-latest
env:
DATABASE_URL: mysql://db:db@127.0.0.1:3306/db?serverVersion=mariadb-10.5.13
strategy:
fail-fast: false
matrix:
php: ["8.3"]
name: Validate Doctrine Schema (PHP ${{ matrix.php}})
services:
mariadb:
image: mariadb:10.5.13
env:
MYSQL_USER: db
MYSQL_PASSWORD: db
MYSQL_DATABASE: db
MYSQL_ROOT_PASSWORD: db
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php}}
extensions: apcu, ctype, iconv, imagick, json, redis, soap, xmlreader, zip
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache composer dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ matrix.php }}-composer-
- name: 'Composer install with exported .env variables'
run: |
set -a && source .env && set +a
APP_ENV=prod composer install --no-dev -o
- name: Run Doctrine Migrations
run: APP_ENV=prod php bin/console doctrine:migrations:migrate --no-interaction
- name: Validate Doctrine schema
run: APP_ENV=prod php bin/console doctrine:schema:validate
php-cs-fixer:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: ["8.3"]
name: PHP Coding Standards Fixer (PHP ${{ matrix.php }})
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php}}
extensions: apcu, ctype, iconv, imagick, json, redis, soap, xmlreader, zip
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache composer dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ matrix.php }}-composer-
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: php-cs-fixer
run: phpdbg -qrr ./vendor/bin/php-cs-fixer fix --dry-run
psalm:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: ["8.3"]
name: Psalm (PHP ${{ matrix.php }})
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php}}
extensions: apcu, ctype, iconv, imagick, json, redis, soap, xmlreader, zip
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache composer dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ matrix.php }}-composer-
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: Psalm
run: phpdbg -qrr ./vendor/bin/psalm
rector:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: ["8.3"]
name: Rector (PHP ${{ matrix.php }})
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php}}
extensions: apcu, ctype, iconv, imagick, json, redis, soap, xmlreader, zip
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache composer dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ matrix.php }}-composer-
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: Rector
run: phpdbg -qrr ./vendor/bin/rector --dry-run
phpunit:
runs-on: ubuntu-latest
services:
mariadb:
image: mariadb:lts
ports:
- 3306
env:
MYSQL_USER: db
MYSQL_PASSWORD: db
MYSQL_DATABASE: db_test
MYSQL_ROOT_PASSWORD: password
# https://mariadb.org/mariadb-server-docker-official-images-healthcheck-without-mysqladmin/
options: >-
--health-cmd="healthcheck.sh --connect --innodb_initialized"
--health-interval=5s
--health-timeout=2s
--health-retries=3
strategy:
fail-fast: false
matrix:
php: ["8.3"]
name: PHP Unit tests (PHP ${{ matrix.php }})
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php}}
extensions: apcu, ctype, iconv, imagick, json, redis, soap, xmlreader, zip
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache composer dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ matrix.php }}-composer-
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: PHP Unit - Test setup
env:
PORT: ${{ job.services.mariadb.ports[3306] }}
run: DATABASE_URL="mysql://db:db@127.0.0.1:$PORT/db_test" composer run test-setup
- name: PHP Unit - Test
env:
PORT: ${{ job.services.mariadb.ports[3306] }}
run: DATABASE_URL="mysql://db:db@127.0.0.1:$PORT/db_test" composer run test
markdownlint:
runs-on: ubuntu-latest
name: markdownlint
strategy:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Install
run: docker run --rm -v .:/app --workdir=/app node:18 npm install
- name: Markdown lint
run: docker run --rm -v .:/app --workdir=/app node:18 npm run coding-standards-check
apispec:
runs-on: ubuntu-latest
name: API Specification validation
strategy:
fail-fast: false
matrix:
php: ["8.3"]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php}}
extensions: apcu, ctype, iconv, imagick, json, redis, soap, xmlreader, zip
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache composer dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ matrix.php }}-composer-
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: Export specifications (yaml)
run: bin/console api:openapi:export --yaml --output=public/api-spec-v2.yaml --no-interaction
- name: Check for changes in specifications (yaml)
run: git diff --diff-filter=ACMRT --exit-code public/api-spec-v2.yaml
- name: Export specifications (json)
run: bin/console api:openapi:export --output=public/api-spec-v2.json --no-interaction
- name: Check for changes in specifications (json)
run: git diff --diff-filter=ACMRT --exit-code public/api-spec-v2.json
changelog:
runs-on: ubuntu-latest
name: Changelog should be updated
strategy:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Git fetch
run: git fetch
- name: Check that changelog has been updated.
run: git diff --exit-code origin/${{ github.base_ref }} -- CHANGELOG.md && exit 1 || exit 0
yamllint-api-resources:
runs-on: ubuntu-latest
name: yamllint (API resources)
strategy:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Check API resources YAML
run: docker run --volume ${PWD}:/code --rm pipelinecomponents/yamllint yamllint config/api_platform