Your IP : 216.73.216.81


Current Path : /srv/web/sites/trentinoplant.it/httpdocs/vendor1/phpgt/dom/.github/workflows/
Upload File :
Current File : /srv/web/sites/trentinoplant.it/httpdocs/vendor1/phpgt/dom/.github/workflows/ci.yml

name: CI

on: [push]

jobs:
  composer:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php: [ 8.1, 8.2, 8.3 ]

    steps:
      - uses: actions/checkout@v3

      - name: Cache Composer dependencies
        uses: actions/cache@v3
        with:
          path: /tmp/composer-cache
          key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }}

      - name: Composer install
        uses: php-actions/composer@v6
        with:
          php_version: ${{ matrix.php }}

      - name: Archive build
        run: mkdir /tmp/github-actions/ && tar -cvf /tmp/github-actions/build.tar ./

      - name: Upload build archive for test runners
        uses: actions/upload-artifact@v3
        with:
          name: build-artifact
          path: /tmp/github-actions

  phpunit:
    runs-on: ubuntu-latest
    needs: [ composer ]
    strategy:
      matrix:
        php: [ 8.1, 8.2, 8.3 ]

    outputs:
      coverage: ${{ steps.store-coverage.outputs.coverage_text }}

    steps:
      - uses: actions/download-artifact@v3
        with:
          name: build-artifact
          path: /tmp/github-actions

      - name: Extract build archive
        run: tar -xvf /tmp/github-actions/build.tar ./

      - name: PHP Unit tests
        uses: php-actions/phpunit@v3
        env:
          XDEBUG_MODE: cover
        with:
          php_version: ${{ matrix.php }}
          php_extensions: xdebug
          coverage_text: _coverage/coverage.txt
          coverage_clover: _coverage/clover.xml

      - name: Store coverage data
        uses: actions/upload-artifact@v3
        with:
          name: code-coverage
          path: _coverage

  coverage:
    runs-on: ubuntu-latest
    needs: [ phpunit ]

    steps:
      - uses: actions/checkout@v3

      - uses: actions/download-artifact@v3
        with:
          name: code-coverage
          path: _coverage

      - name: Output coverage
        run: cat "_coverage/coverage.txt"

      - name: Upload to Codecov
        uses: codecov/codecov-action@v3

  phpstan:
    runs-on: ubuntu-latest
    needs: [ composer ]
    strategy:
      matrix:
        php: [ 8.1, 8.2, 8.3 ]

    steps:
      - uses: actions/download-artifact@v3
        with:
          name: build-artifact
          path: /tmp/github-actions

      - name: Extract build archive
        run: tar -xvf /tmp/github-actions/build.tar ./

      - name: PHP Static Analysis
        uses: php-actions/phpstan@v3
        with:
          php_version: ${{ matrix.php }}
          path: src/

  phpmd:
    runs-on: ubuntu-latest
    needs: [ composer ]
    strategy:
      matrix:
        php: [ 8.1, 8.2, 8.3 ]

    steps:
      - uses: actions/download-artifact@v3
        with:
          name: build-artifact
          path: /tmp/github-actions

      - name: Extract build archive
        run: tar -xvf /tmp/github-actions/build.tar ./

      - name: PHP Mess Detector
        uses: php-actions/phpmd@v1
        with:
          php_version: ${{ matrix.php }}
          path: src/
          output: text
          ruleset: phpmd.xml

  phpcs:
    runs-on: ubuntu-latest
    needs: [ composer ]
    strategy:
      matrix:
        php: [ 8.1, 8.2, 8.3 ]

    steps:
      - uses: actions/download-artifact@v3
        with:
          name: build-artifact
          path: /tmp/github-actions

      - name: Extract build archive
        run: tar -xvf /tmp/github-actions/build.tar ./

      - name: PHP Code Sniffer
        uses: php-actions/phpcs@v1
        with:
          php_version: ${{ matrix.php }}
          path: src/
          standard: phpcs.xml

  remove_old_artifacts:
    runs-on: ubuntu-latest

    steps:
      - name: Remove old artifacts for prior workflow runs on this repository
        env:
          GH_TOKEN: ${{ github.token }}
        run: |
          gh api "/repos/${{ github.repository }}/actions/artifacts?name=build-artifact" | jq ".artifacts[] | select(.name == \"build-artifact\") | .id" > artifact-id-list.txt
          while read id
          do
            echo -n "Deleting artifact ID $id ... "
            gh api --method DELETE /repos/${{ github.repository }}/actions/artifacts/$id && echo "Done"
          done <artifact-id-list.txt