diff --git a/.gitattributes b/.gitattributes index e8ad548..3390408 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,7 +1,7 @@ .gitattributes export-ignore +.github/ export-ignore .gitignore export-ignore .scrutinizer.yml export-ignore -.travis.yml export-ignore composer.json export-ignore phpcs.xml export-ignore phpunit.xml.dist export-ignore diff --git a/.github/workflows/ci_failure_email.md.tmpl b/.github/workflows/ci_failure_email.md.tmpl new file mode 100644 index 0000000..322186b --- /dev/null +++ b/.github/workflows/ci_failure_email.md.tmpl @@ -0,0 +1,3 @@ +CI workflow ${WORKFLOW} failed! + +The failed job can be found in [here](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID}). diff --git a/.github/workflows/lint-and-test.yaml b/.github/workflows/lint-and-test.yaml new file mode 100644 index 0000000..99dece1 --- /dev/null +++ b/.github/workflows/lint-and-test.yaml @@ -0,0 +1,50 @@ +name: Lint and Test +on: push +permissions: + contents: read +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + php_version: [ '7.4', '8.0', '8.1', '8.2', '8.3', '8.4' ] + steps: + - uses: actions/checkout@v4 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php_version }} + - uses: nowactions/envsubst@v1 + with: + input: ${{ github.workspace }}/.github/workflows/ci_failure_email.md.tmpl + output: ${{ github.workspace }}/.github/workflows/ci_failure_email.md + env: + WORKFLOW: ${{ github.workflow }} + SERVER_URL: ${{ github.server_url }} + REPOSITORY: ${{ github.repository }} + RUN_ID: ${{ github.run_id }} + - name: Validate composer.json and composer.lock + run: composer validate --strict + - name: Cache Composer packages + id: composer-cache + uses: actions/cache@v3 + with: + path: vendor + key: ${{ runner.os }}-php-${{ matrix.php_version}}-${{ hashFiles('**/composer.lock') }} + - name: Install dependencies + run: composer install --prefer-source --no-progress + - name: Run test suite + run: composer test + - name: Send mail on failure + if: ${{ failure() }} + uses: dawidd6/action-send-mail@v3 + with: + server_address: smtp.gmail.com + server_port: 465 + username: ${{secrets.CI_MAIL_USERNAME}} + password: ${{secrets.CI_MAIL_PASSWORD}} + to: wikidata-ci-status@wikimedia.de + from: ${{ github.repository }} CI + subject: CI job failed for ${{ github.repository }} + convert_markdown: true + html_body: file://${{ github.workspace }}/.github/workflows/ci_failure_email.md diff --git a/.github/workflows/scrutinize.yaml b/.github/workflows/scrutinize.yaml new file mode 100644 index 0000000..bd9f68e --- /dev/null +++ b/.github/workflows/scrutinize.yaml @@ -0,0 +1,31 @@ +name: Generate and upload test coverage +on: + workflow_run: + workflows: ['Lint and Test'] + types: + - completed + +jobs: + scrutinize: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 2 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.0' + coverage: xdebug + - name: Cache Composer packages + uses: actions/cache@v4 + with: + path: vendor + key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }} + - name: Generate PHP tests coverage + run: vendor/bin/phpunit --coverage-clover coverage.clover + - name: Upload Scrutinizer coverage + uses: sudo-bot/action-scrutinizer@latest + with: + cli-args: "--repository g/wmde/Number --format=php-clover ./coverage.clover" diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index fcb2b0e..0000000 --- a/.travis.yml +++ /dev/null @@ -1,23 +0,0 @@ -language: php - -dist: bionic - -php: - - 7.4 - - 8.0 - -install: travis_retry composer install - -script: - - composer test - -after_success: - - if [[ "`phpenv version-name`" != "8.0" ]]; then exit 0; fi - - vendor/bin/phpunit --coverage-clover coverage.clover - - wget https://scrutinizer-ci.com/ocular.phar - - php ocular.phar code-coverage:upload --format=php-clover coverage.clover - - -cache: - directories: - - $HOME/.composer/cache diff --git a/README.md b/README.md index ad40c33..e7bb0e6 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ into such value objects, and formatters to turn them back into user consumable r It is part of the [DataValues set of libraries](https://github.com/DataValues). -[![Build Status](https://secure.travis-ci.org/wmde/Number.png?branch=master)](http://travis-ci.org/wmde/Number) +[![Build Status](https://github.com/wmde/Number/actions/workflows/lint-and-test.yaml/badge.svg?branch=master)](https://github.com/wmde/Number/actions/workflows/lint-and-test.yaml) [![Code Coverage](https://scrutinizer-ci.com/g/wmde/Number/badges/coverage.png?s=a62dd85d05eaf0c5505deed4e2bd53d34e50d158)](https://scrutinizer-ci.com/g/wmde/Number/) [![Scrutinizer Quality Score](https://scrutinizer-ci.com/g/wmde/Number/badges/quality-score.png?s=03279530fa55439de3ce094b985f861959ee7162)](https://scrutinizer-ci.com/g/wmde/Number/)