Skip to content

Health check

Health check #19

Workflow file for this run

on:
pull_request:
paths:
- "cover-api/**"
name: Cover API review
jobs:
test-composer-install:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: [ '8.1', '8.2' ]
name: Validate composer (${{ matrix.php}})
defaults:
run:
working-directory: cover-api
steps:
- uses: actions/checkout@v3
- 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 "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- 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
test-suite:
name: Test suite (${{ matrix.php }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: [ '8.1', '8.2' ]
defaults:
run:
working-directory: cover-api
steps:
- uses: actions/checkout@v3
- 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 "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
# Setup ElasticSearch
# @see https://github.com/elastic/elastic-github-actions/tree/master/elasticsearch
- name: Configure sysctl limits
run: |
sudo swapoff -a
sudo sysctl -w vm.swappiness=1
sudo sysctl -w fs.file-max=262144
sudo sysctl -w vm.max_map_count=262144
- name: Runs Elasticsearch
uses: elastic/elastic-github-actions/elasticsearch@master
with:
stack-version: 8.5.2
security-enabled: false
- name: Wait for ES to be ready
run: |
while ! curl -s -X GET http://127.0.0.1:9200/_cluster/health\?wait_for_status\=green\&timeout\=60s | grep -q '"status":"green"'
do
echo "==> Waiting for ElasticSearch cluster green status" && sleep 1
done
- name: Test suite
run: INDEXING_URL=http://localhost:9200 ./vendor/bin/phpunit --coverage-clover=coverage/unit.xml
- name: Upload coverage to Codecov test
uses: codecov/codecov-action@v3
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', '8.2' ]
name: Coding style (${{ matrix.php }})
defaults:
run:
working-directory: cover-api
steps:
- uses: actions/checkout@v3
- 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 "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-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: PHP_CS_FIXER_IGNORE_ENV=1 composer check-coding-standards/php-cs-fixer
- name: Twig CS
run: composer check-coding-standards/twigcs
psalm:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: [ '8.1', '8.2' ]
name: Psalm static analysis (${{ matrix.php}})
defaults:
run:
working-directory: cover-api
steps:
- uses: actions/checkout@v3
- 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 "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- 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: cover-api
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Yarn install
uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'yarn'
cache-dependency-path: 'cover-api'
- run: yarn install
- name: markdownlint
run: yarn markdownlint README.md CHANGELOG.md
helm:
name: Helm
runs-on: ubuntu-latest
defaults:
run:
working-directory: cover-api
steps:
- uses: actions/checkout@v3
- uses: azure/setup-helm@v3
name: Install helm
with:
version: v3.1.2
- name: Lint helm (CoverService)
run: helm lint infrastructure/cover-service --set hpa.enabled=true --set ingress.enableTLS=true --set [email protected] --set ingress.domain=cover.dandigbib.org
- name: Lint helm (Shared config)
run: helm lint infrastructure/shared-config
apispec:
runs-on: ubuntu-20.04
name: API Specification validation
strategy:
fail-fast: false
matrix:
php: [ '8.1', '8.2' ]
defaults:
run:
working-directory: cover-api
steps:
- name: Checkout
uses: actions/checkout@v3
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 "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: Export specifications
run: bin/console api:openapi:export --yaml --output=public/spec.yaml --no-interaction
- name: Check for changes in specifications
run: git diff --diff-filter=ACMRT --exit-code public/spec.yaml