Skip to content

GitHub actions restructure #7

GitHub actions restructure

GitHub actions restructure #7

Workflow file for this run

on: pull_request
name: Upload API review
jobs:
test-composer-install:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: [ '8.1' ]
name: Validate composer (${{ matrix.php}})
defaults:
run:
working-directory: upload-api
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 2
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php}}
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}-${{ matrix.dependency-version }}-
restore-keys: ${{ runner.os }}-composer-${{ matrix.dependency-version }}-
- name: Validate composer files
run: composer validate composer.json --strict
- name: Composer install with exported .env variables
run: |
set -a && source .env && set +a
APP_ENV=prod composer install --no-dev -o
validate-doctrine-shema:
runs-on: ubuntu-20.04
env:
DATABASE_URL: mysql://db:[email protected]:3306/db?serverVersion=mariadb-10.5.13
strategy:
fail-fast: false
matrix:
php: ['8.1' ]
name: Validate Doctrine Schema (PHP ${{ matrix.php}})
defaults:
run:
working-directory: upload-api
services:
mariadb:
image: mariadb:10.6
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@v2
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php}}
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache composer dependencies
uses: actions/cache@v2
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
test-suite:
name: Test suite (${{ matrix.php }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: ['8.1' ]
services:
mariadb:
image: mariadb:10.6
env:
MYSQL_USER: db
MYSQL_PASSWORD: db
MYSQL_DATABASE: db_test
MYSQL_ROOT_PASSWORD: db
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
defaults:
run:
working-directory: upload-api
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 2
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php}}
coverage: xdebug
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}-${{ matrix.dependency-version }}-
restore-keys: ${{ runner.os }}-composer-${{ matrix.dependency-version }}-
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: PhpUnit tests
run: |
DATABASE_URL="mysql://db:[email protected]:$PORT/db_test" bin/console --env=test doctrine:migrations:migrate --no-interaction --quiet
SYMFONY_DEPRECATIONS_HELPER=disabled DATABASE_URL="mysql://db:[email protected]:$PORT/db_test" ./vendor/bin/simple-phpunit --coverage-clover=coverage/unit.xml
- name: Upload coverage to Codecov test
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage/unit.xml
flags: unittests, ${{ matrix.php }}
fail_ci_if_error: false
verbose: true
phpcsfixer:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: [ '8.1' ]
name: PHP Coding Standards Fixer (${{ matrix.php}})
defaults:
run:
working-directory: upload-api
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 2
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php}}
extensions: ctype, iconv, imagick, json, redis, soap, xmlreader, zip
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}-${{ matrix.dependency-version }}-
restore-keys: ${{ runner.os }}-composer-${{ matrix.dependency-version }}-
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: phpcsfixerr
run: composer coding-standards-check
psalm:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: [ '8.1' ]
name: Psalm static analysis (${{ matrix.php}})
defaults:
run:
working-directory: upload-api
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 2
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php}}
extensions: ctype, iconv, imagick, json, redis, soap, xmlreader, zip
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}-${{ matrix.dependency-version }}-
restore-keys: ${{ runner.os }}-composer-${{ matrix.dependency-version }}-
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: Psalm
run: ./vendor/bin/psalm
markdownlint:
name: Markdown Lint
runs-on: ubuntu-latest
defaults:
run:
working-directory: upload-api
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 2
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Cache yarn packages
uses: actions/cache@v2
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Yarn install
uses: actions/setup-node@v2
with:
node-version: '16'
- run: yarn install
- name: markdownlint
run: yarn markdownlint README.md CHANGELOG.md
apispec:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: ['8.1']
name: API Specification validation
defaults:
run:
working-directory: upload-api
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 2
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php}}
extensions: ctype, iconv, imagick, json, redis, soap, xmlreader, zip
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}-${{ matrix.dependency-version }}-
restore-keys: ${{ runner.os }}-composer-${{ matrix.dependency-version }}-
- 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-v1.yaml --no-interaction
- name: Check for changes in specifications (yaml)
run: git diff --diff-filter=ACMRT --exit-code public/api-spec-v1.yaml
helm:
name: Helm
runs-on: ubuntu-latest
defaults:
run:
working-directory: upload-api
steps:
- uses: actions/checkout@v1
- uses: azure/setup-helm@v1
name: Install helm
with:
version: v3.1.2
- name: Lint helm
run: helm lint infrastructure/cover-service-upload --set hpa.enabled=true --set ingress.enableTLS=true --set [email protected] --set ingress.domain=upload-cover.dandigbib.org