Skip to content

Commit ff22000

Browse files
authored
Merge pull request #10 from reactphp-parallel/sync-makefile-and-ci
Sync Makefile and CI
2 parents f2baf3e + 8822fc2 commit ff22000

File tree

2 files changed

+43
-18
lines changed

2 files changed

+43
-18
lines changed

.github/workflows/ci.yml

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,18 @@ on:
33
push:
44
pull_request:
55
jobs:
6+
generate-checks-strategy:
7+
name: Generate Checks
8+
runs-on: ubuntu-latest
9+
outputs:
10+
check: ${{ steps.generate-checks-strategy.outputs.check }}
11+
steps:
12+
- uses: actions/checkout@v1
13+
- id: generate-checks-strategy
14+
name: Generate check
15+
run: |
16+
printf "Checks found: %s\r\n" $(make task-list-ci)
17+
printf "::set-output name=check::%s" $(make task-list-ci)
618
lint:
719
runs-on: ubuntu-latest
820
steps:
@@ -17,7 +29,7 @@ jobs:
1729
needs: lint
1830
runs-on: ubuntu-latest
1931
container:
20-
image: wyrihaximusnet/php:${{ matrix.php }}-zts-alpine3.11-dev-root
32+
image: wyrihaximusnet/php:${{ matrix.php }}-zts-alpine3.12-dev-root
2133
steps:
2234
- uses: actions/checkout@v1
2335
- name: Cache composer packages
@@ -40,11 +52,13 @@ jobs:
4052
matrix:
4153
php: [7.4]
4254
composer: [lowest, current, highest]
43-
qa: [lint, cs, stan, psalm, unit-ci, infection, composer-require-checker, composer-unused, backward-compatibility-check]
44-
needs: composer-install
55+
check: ${{ fromJson(needs.generate-checks-strategy.outputs.check) }}
56+
needs:
57+
- composer-install
58+
- generate-checks-strategy
4559
runs-on: ubuntu-latest
4660
container:
47-
image: wyrihaximusnet/php:${{ matrix.php }}-zts-alpine3.11-dev-root
61+
image: wyrihaximusnet/php:${{ matrix.php }}-zts-alpine3.12-dev-root
4862
steps:
4963
- uses: actions/checkout@v1
5064
- name: Cache composer packages
@@ -62,6 +76,6 @@ jobs:
6276
run: (test -f vendor && true ) || composer update --ansi --no-progress --no-interaction --prefer-dist -o
6377
if: matrix.composer == 'highest'
6478
- name: Fetch Tags
65-
run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
66-
if: matrix.qa == 'backward-compatibility-check'
67-
- run: make ${{ matrix.qa }}
79+
run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* || true
80+
if: matrix.check == 'backward-compatibility-check'
81+
- run: make ${{ matrix.check }}

Makefile

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,34 +22,45 @@ else
2222
"wyrihaximusnet/php:7.4-zts-alpine3.12-dev"
2323
endif
2424

25-
all: lint cs-fix cs stan composer-require-checker composer-unused unit infection
25+
all: syntax-php cs-fix cs stan psalm unit infection composer-require-checker composer-unused backward-compatibility-check
2626

27-
lint:
27+
syntax-php: ## Lint PHP syntax
2828
$(DOCKER_RUN) vendor/bin/parallel-lint --exclude vendor .
2929

30-
cs:
30+
cs: ## Check the code for code style issues
3131
$(DOCKER_RUN) vendor/bin/phpcs --parallel=$(shell nproc)
3232

33-
cs-fix:
33+
cs-fix: ## Fix any automatically fixable code style issues
3434
$(DOCKER_RUN) vendor/bin/phpcbf --parallel=$(shell nproc)
3535

36-
stan:
36+
stan: ## Run static analysis (PHPStan)
3737
$(DOCKER_RUN) vendor/bin/phpstan analyse src tests --level max --ansi -c phpstan.neon
3838

39-
psalm:
39+
psalm: ## Run static analysis (Psalm)
4040
$(DOCKER_RUN) vendor/bin/psalm --threads=$(shell nproc) --shepherd --stats
4141

42-
unit:
42+
unit: ## Run tests
4343
$(DOCKER_RUN) vendor/bin/phpunit --colors=always -c phpunit.xml.dist --coverage-text --coverage-html covHtml --coverage-clover ./build/logs/clover.xml
4444

4545
unit-ci: unit
46-
if [ -f ./build/logs/clover.xml ]; then sleep 3; fi
46+
if [ -f ./build/logs/clover.xml ]; then wget https://scrutinizer-ci.com/ocular.phar && sleep 3 && php ocular.phar code-coverage:upload --format=php-clover ./build/logs/clover.xml; fi
4747

48-
infection:
48+
infection: ## Run mutation testing
4949
$(DOCKER_RUN) vendor/bin/infection --ansi --min-msi=100 --min-covered-msi=100 --threads=$(shell nproc)
5050

51-
composer-require-checker:
51+
composer-require-checker: ## Ensure we require every package used in this package directly
5252
$(DOCKER_RUN) vendor/bin/composer-require-checker --ignore-parse-errors --ansi -vvv --config-file=composer-require-checker.json
5353

54-
composer-unused:
54+
composer-unused: ## Ensure we don't require any package we don't use in this package directly
5555
$(DOCKER_RUN) composer unused --ansi
56+
57+
backward-compatibility-check: ## Check code for backwards incompatible changes
58+
$(DOCKER_RUN) vendor/bin/roave-backward-compatibility-check || true
59+
60+
task-list-ci:
61+
@grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "%s\n", $$1}' | jq --raw-input --slurp -c 'split("\n")| .[0:-1]'
62+
63+
help:
64+
@printf "\033[33mUsage:\033[0m\n make [target]\n\n\033[33mTargets:\033[0m\n"
65+
@printf " \033[32m%-32s\033[0m %s\n" "all" "Runs everything"
66+
@grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[32m%-32s\033[0m %s\n", $$1, $$2}'

0 commit comments

Comments
 (0)