Skip to content

PHPUnit

PHPUnit #60

Workflow file for this run

# This file is part of the sshilko/php-api-myrpc package.
#
# (c) Sergei Shilko <[email protected]>
#
# MIT License
#
# For the full copyright and license information, please view the LICENSE
# file that was distributed with this source code.
# @license https://opensource.org/licenses/mit-license.php MIT
name: PHPUnit
on:
workflow_run:
workflows: [ "Docker" ]
types:
- completed
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'skip-ci')"
timeout-minutes: 10
steps:
- uses: actions/checkout@v3
- name: Load cached app docker image
id: docker-php-image-cache
uses: actions/cache@v3
with:
path: /tmp/docker-save
key: ${{ runner.os }}-docker-php-build-save-${{ hashFiles('build/Dockerfile.php.common', 'build/dockerfile.php81') }}
- name: Load cached Docker image
run: docker load -i /tmp/docker-save/snapshot.tar && docker tag app/php-image-cache app/php
- name: Docker boot
env:
DOCKER_BUILDKIT: '1'
COMPOSE_DOCKER_CLI_BUILD: '1'
SERVICES_NAME: "app.php"
run: docker-compose up --force-recreate -d $SERVICES_NAME
timeout-minutes: 3
- name: Wait for all services to become healthy
run: for SVC in "app.php"; do while [ "\"healthy\"" != "$(docker inspect --format '{{json .State.Health.Status }}' ${SVC})" ];do docker-compose ps && sleep 5; done; done
timeout-minutes: 3
- name: Sleep
run: sleep 4
- run: docker-compose ps
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v3
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('composer.lock') }}-composer-dev
- name: Docker install dependencies
run: docker-compose exec -T app.php composer install
# Docs: https://phpunit.readthedocs.io/en/9.5/
- name: Docker run PHPUnit
run: docker-compose exec -T app.php composer app-phpunit-coverage
- name: Docker run PHPUnit badge generation
id: app-phpunit-badges-coverage
continue-on-error: true
run: |
#3 attempts to generate badges
docker-compose exec -T app.php composer app-phpunit-badges-coverage || \
docker-compose exec -T app.php composer app-phpunit-badges-coverage || \
docker-compose exec -T app.php composer app-phpunit-badges-coverage
# Docs: https://github.com/marketplace/actions/phpunit-coverage-badge
- name: Generate PHPUnit coverage badge
uses: timkrase/[email protected]
with:
coverage_badge_path: 'test/tmp/phpunit-coverage-badge.svg'
push_badge: false
report: test/tmp/phpunit-clover.xml
# https://github.com/actions/upload-artifact
- name: Upload PHPUnit artifacts
uses: actions/upload-artifact@v3
with:
name: phpunit-output
path: |
test/tmp/html
test/tmp/xml
test/tmp/phpunit-testdox-html.html
test/tmp/phpunit-testdox-text.txt
test/tmp/phpunit-clover.xml
test/tmp/phpunit-junit.xml
test/tmp/phpunit-cobertura.xml
test/tmp/phpunit-crap4j.xml
test/tmp/phpunit-xml.xml
test/tmp/phpunit-coverage.txt
test/tmp/phpunit-coverage-badge.svg
test/tmp/phpunit-coverage-badge-lines.svg
test/tmp/phpunit-coverage-badge-classes.svg
test/tmp/phpunit-coverage-badge-methods.svg
retention-days: 1
badges:
needs: build
runs-on: ubuntu-latest
timeout-minutes: 2
permissions: write-all
steps:
# https://github.com/actions/checkout
- name: Checkout pages branch
uses: actions/checkout@v3
with:
ref: pages
# https://github.com/marketplace/actions/download-a-build-artifact
- name: Download all PHPUnit artifacts
uses: actions/download-artifact@v3
with:
name: phpunit-output
path: php/phpunit
- uses: nick-fields/retry@v2
name: Commit coverage details
continue-on-error: true
with:
timeout_seconds: 20
max_attempts: 3
retry_on: error
command: |
git status
git config user.name github-actions
git config user.email [email protected]
git pull
git add php/phpunit/*
git commit -m "generated phpunit artifacts from revision ${GITHUB_SHA::7}"
git push