diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bd555b5..b10a117 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,13 +1,14 @@ # https://help.github.com/en/categories/automating-your-workflow-with-github-actions on: - - "pull_request" - - "push" + - pull_request + - push -name: "CI" +name: CI env: - COMPOSER_ROOT_VERSION: "6.3.x-dev" + COMPOSER_ROOT_VERSION: 6.3.x-dev + PHP_VERSION: 8.4 permissions: contents: read @@ -17,16 +18,29 @@ jobs: name: Coding Guidelines runs-on: ubuntu-latest + timeout-minutes: 5 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 + with: + fetch-depth: 1 + ref: ${{ github.event.pull_request.head.sha || github.sha }} + + - name: Use local branch + shell: bash + run: | + BRANCH=$([ "${{ github.event_name }}" == "pull_request" ] && echo "${{ github.head_ref }}" || echo "${{ github.ref_name }}") + git branch -D $BRANCH 2>/dev/null || true + git branch $BRANCH HEAD + git checkout $BRANCH - name: Install PHP uses: shivammathur/setup-php@v2 with: - php-version: 8.3 + php-version: ${{ env.PHP_VERSION }} coverage: none + tools: none - name: Run PHP-CS-Fixer run: ./tools/php-cs-fixer fix --dry-run --show-progress=dots --using-cache=no --verbose @@ -35,16 +49,29 @@ jobs: name: Static Analysis runs-on: ubuntu-latest + timeout-minutes: 5 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 + with: + fetch-depth: 1 + ref: ${{ github.event.pull_request.head.sha || github.sha }} + + - name: Use local branch + shell: bash + run: | + BRANCH=$([ "${{ github.event_name }}" == "pull_request" ] && echo "${{ github.head_ref }}" || echo "${{ github.ref_name }}") + git branch -D $BRANCH 2>/dev/null || true + git branch $BRANCH HEAD + git checkout $BRANCH - name: Install PHP uses: shivammathur/setup-php@v2 with: - php-version: 8.3 + php-version: ${{ env.PHP_VERSION }} coverage: none + tools: none - name: Install dependencies with Composer run: ./tools/composer update --no-interaction --no-ansi --no-progress @@ -56,39 +83,120 @@ jobs: name: Tests runs-on: ubuntu-latest + timeout-minutes: 5 strategy: fail-fast: false matrix: php-version: - - "8.2" - - "8.3" - - "8.4" - - "8.5" + - 8.2 + - 8.3 + - 8.4 + - 8.5 + - 8.6 steps: - - name: "Checkout" - uses: "actions/checkout@v4" - - - name: "Install PHP with extensions" - uses: "shivammathur/setup-php@v2" + - name: Checkout + uses: actions/checkout@v5 with: - php-version: "${{ matrix.php-version }}" - coverage: "xdebug" + fetch-depth: 1 + ref: ${{ github.event.pull_request.head.sha || github.sha }} - - name: "Install dependencies with Composer" - run: "./tools/composer update --no-ansi --no-interaction --no-progress" + - name: Use local branch + shell: bash + run: | + BRANCH=$([ "${{ github.event_name }}" == "pull_request" ] && echo "${{ github.head_ref }}" || echo "${{ github.ref_name }}") + git branch -D $BRANCH 2>/dev/null || true + git branch $BRANCH HEAD + git checkout $BRANCH - - name: "Run tests with PHPUnit" - run: "vendor/bin/phpunit --log-junit junit.xml --coverage-clover=coverage.xml" + - name: Install PHP with extensions + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + coverage: none + tools: none + + - name: Get Composer cache directory + id: composer-cache + shell: bash + run: | + echo "dir=$(composer config cache-files-dir)" >> "$GITHUB_OUTPUT" + + - name: Cache Composer cache directory + uses: actions/cache@v4 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: ${{ runner.os }}-composer- + + - name: Install dependencies with Composer + run: ./tools/composer update --no-ansi --no-interaction --no-progress + + - name: Run tests with PHPUnit + run: vendor/bin/phpunit + + code-coverage: + name: Code Coverage + + needs: + - tests + + runs-on: ubuntu-latest + timeout-minutes: 5 + + steps: + - name: Checkout + uses: actions/checkout@v5 + with: + fetch-depth: 1 + ref: ${{ github.event.pull_request.head.sha || github.sha }} + + - name: Use local branch + shell: bash + run: | + BRANCH=$([ "${{ github.event_name }}" == "pull_request" ] && echo "${{ github.head_ref }}" || echo "${{ github.ref_name }}") + git branch -D $BRANCH 2>/dev/null || true + git branch $BRANCH HEAD + git checkout $BRANCH + + - name: Install PHP with extensions + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + coverage: xdebug + tools: none + + - name: Get Composer cache directory + id: composer-cache + shell: bash + run: | + echo "dir=$(composer config cache-files-dir)" >> "$GITHUB_OUTPUT" + + - name: Cache Composer cache directory + uses: actions/cache@v4 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: ${{ runner.os }}-composer- + + - name: Install dependencies with Composer + run: ./tools/composer update --no-ansi --no-interaction --no-progress + + - name: Collect code coverage with PHPUnit + run: vendor/bin/phpunit --log-junit test-results.xml --coverage-clover=code-coverage.xml - name: Upload test results to Codecov.io if: ${{ !cancelled() }} uses: codecov/test-results-action@v1 with: token: ${{ secrets.CODECOV_TOKEN }} + disable_search: true + files: ./test-results.xml - name: Upload code coverage data to Codecov.io uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} + disable_search: true + files: ./code-coverage.xml diff --git a/.phive/phars.xml b/.phive/phars.xml index b33300c..6e5a5c7 100644 --- a/.phive/phars.xml +++ b/.phive/phars.xml @@ -1,7 +1,7 @@ - + - + diff --git a/tools/php-cs-fixer b/tools/php-cs-fixer index d33fbe1..e5b2c20 100755 Binary files a/tools/php-cs-fixer and b/tools/php-cs-fixer differ diff --git a/tools/phpstan b/tools/phpstan index 8b62631..f0a9cc3 100755 Binary files a/tools/phpstan and b/tools/phpstan differ