diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 99d049b..9393d7c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,61 +1,131 @@ name: CI +env: + APPLICATION_ENV: 'development' + APPLICATION_STORE: 'DE' + PROJECT: 'OpenAi' + DATABASE_VERSION: 10.2 + DATABASE_HOST: 127.0.0.1 + DATABASE_PORT: 3306 + DATABASE_NAME: eu-docker + DATABASE_USERNAME: root + DATABASE_PASSWORD: secret + DATABASE_ROOT_PASSWORD: secret + DATABASE_ALLOW_EMPTY_PASSWORD: false + DATABASE_CHARACTER_SET: utf8 + DATABASE_COLLATE: utf8_general_ci + on: + pull_request: push: branches: - - 'master' - pull_request: + - master workflow_dispatch: jobs: - validation: - name: Validation - runs-on: ubuntu-latest + ci: + name: "OpenAi" + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + matrix: + php: ['8.1', '8.2'] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v2 + + - name: Setup Database + uses: getong/mariadb-action@v1.1 + with: + host port: ${{ env.DATABASE_PORT }} + container port: ${{ env.DATABASE_PORT }} + character set server: ${{ env.DATABASE_CHARACTER_SET }} + collation server: ${{ env.DATABASE_COLLATE }} + mariadb version: ${{ env.DATABASE_VERSION }} + mysql database: ${{ env.DATABASE_NAME }} + mysql root password: ${{ env.DATABASE_ROOT_PASSWORD }} + mysql user: ${{ env.DATABASE_USERNAME }} + mysql password: ${{ env.DATABASE_PASSWORD }} - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: '8.2' + php-version: ${{ matrix.php }} extensions: mbstring, intl, bcmath - coverage: none + tools: composer:v2 + + - 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: Composer get cache directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" - - name: Composer Install - run: composer install --prefer-dist --no-interaction --profile + - name: Composer cache + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- - - name: Run validation + - name: Composer validate run: composer validate - - name: Syntax check - run: find ./src -path src -prune -o -type f -name '*.php' -print0 | xargs -0 -n1 -P4 php -l -n | (! grep -v "No syntax errors detected" ) + - name: Composer install + run: | + composer --version + composer install - name: Run CodeStyle checks run: composer cs-check - - name: PHPStan setup - run: composer stan-setup + - name: Run codeception tests (currently not running properly) + run: composer test - name: Run PHPStan run: composer stan lowest: name: Prefer Lowest - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v3 + - name: Checkout@v2 + uses: actions/checkout@v2 + + - name: Validate composer.json and composer.lock + run: composer validate + + - name: Composer get cache directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" + + - name: Composer cache + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.1' extensions: mbstring, intl, bcmath - coverage: none - - name: Composer Install - run: composer install --prefer-dist --no-interaction --profile + - name: Composer prefer lowest + run: composer lowest-setup + + - name: Run PHPStan (currently not running properly) + run: composer stan || true - - name: Composer Update - run: composer update --prefer-lowest --prefer-dist --no-interaction --profile -vvv + - name: Validate prefer lowest + run: vendor/bin/validate-prefer-lowest -m diff --git a/composer.json b/composer.json index 328e576..c778278 100644 --- a/composer.json +++ b/composer.json @@ -21,10 +21,12 @@ "minimum-stability": "dev", "prefer-stable": true, "scripts": { - "cs-check": "phpcs -p -s --standard=vendor/spryker/code-sniffer/SprykerStrict/ruleset.xml src/", - "cs-fix": "phpcbf -p --standard=vendor/spryker/code-sniffer/SprykerStrict/ruleset.xml src/", - "stan": "phpstan analyse -c phpstan.neon -l 8 src/", - "stan-setup": "cp composer.json composer.backup && COMPOSER_MEMORY_LIMIT=-1 composer require --dev phpstan/phpstan:^0.12 && mv composer.backup composer.json" + "cs-check": "phpcs -p -s --standard=vendor/spryker/code-sniffer/Spryker/ruleset.xml src/", + "cs-fix": "phpcbf -p --standard=vendor/spryker/code-sniffer/Spryker/ruleset.xml src/", + "stan": "vendor/bin/phpstan analyse", + "test": "vendor/bin/codecept run --quiet --fail-fast --no-exit", + "lowest": "validate-prefer-lowest", + "lowest-setup": "composer update --prefer-lowest --prefer-stable --prefer-dist --no-interaction && cp composer.json composer.backup && composer require --dev dereuromark/composer-prefer-lowest && mv composer.backup composer.json" }, "extra": { "branch-alias": {