137 lines (109 loc) · 4.49 KB
/
continuous-integration.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
name: "Continuous Integration"
on:
- "pull_request"
- "push"
jobs:
init-php-doc:
name: "Init the php documentation cache"
runs-on: "ubuntu-latest"
steps:
- name: "Checkout"
uses: "actions/checkout@v2.0.0"
- name: "Cache PHP documentation checked out with svn"
id: cache-svn
uses: "actions/cache@v1.0.3"
with:
path: "generator/doc/doc-en"
key: "php-documentation"
- name: "Check out PHP documentation with svn"
if: steps.cache-svn.outputs.cache-hit != 'true'
run: svn co https://svn.php.net/repository/phpdoc/modules/doc-en doc-en
working-directory: "generator/doc"
continuous-integration:
name: "Continuous Integration"
needs: init-php-doc
runs-on: "ubuntu-latest"
strategy:
matrix:
php-version:
- "7.2"
- "7.3"
dependencies:
- "highest"
steps:
- name: "Checkout"
uses: "actions/checkout@v2.0.0"
- name: "Install PHP with extensions"
uses: "shivammathur/setup-php@1.8.2"
with:
coverage: "pcov"
php-version: "${{ matrix.php-version }}"
- name: "Cache PHP documentation checked out with svn"
id: cache-svn
uses: "actions/cache@v1.0.3"
with:
path: "generator/doc/doc-en"
key: "php-documentation"
- name: "Cache dependencies installed with composer"
uses: "actions/cache@v1.0.3"
with:
path: "~/.composer/cache"
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('**/composer.lock') }}"
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-"
- name: "Install dependencies with composer in generator/ directory"
run: "composer install --no-interaction"
working-directory: "generator"
- name: "Install dependencies with composer in root directory"
run: "composer install --no-interaction"
- name: "Run tests with phpunit/phpunit in generator/ directory"
run: "vendor/bin/phpunit"
working-directory: "generator"
- name: "Run coding standard checks with squizlabs/php_codesniffer in generator/ directory"
run: "composer cs-check"
working-directory: "generator"
- name: "Run static code analysis with phpstan/phpstan in generator/ directory"
run: "composer phpstan"
working-directory: "generator"
- name: "Dump autoloader with composer in root directory"
run: "composer dump-autoload"
- name: "Run coding standard checks with squizlabs/php_codesniffer in root directory"
run: "composer cs-check"
- name: "Run static code analysis with phpstan/phpstan in root directory"
run: "composer phpstan"
- name: "Regenerate files"
run: "./safe.php generate"
working-directory: "generator"
- name: "Check if regenerated files are different"
run: |
if output=$(git status --porcelain) && [ -z "$output" ]; then
# all is good
echo "Generated files are the same as committed file: OK"
else
# Uncommitted changes
echo "Generated files are different from commited files. Please run './safe.php generate' command and commit the results."
echo "Detected changes:"
git status
git diff
echo "Generated files are different from commited files. Please run './safe.php generate' command and commit the results."
exit 1;
fi
- name: "Check if refactoring can be done with rector/rector:~0.5.0"
run: "composer install && composer rector && composer test"
working-directory: "generator/tests/rector/0.5"
- name: "Check if refactoring can be done with rector/rector:~0.6.0"
run: "composer install && composer rector && composer test"
working-directory: "generator/tests/rector/0.6"
- name: "Archive code coverage results"
uses: "actions/upload-artifact@v1"
with:
name: "build"
path: "generator/build"
- name: "Debugging env vars"
run: "env"
- name: "Upload test coverage to coveralls"
run: "php vendor/bin/php-coveralls -v"
working-directory: "generator"
env:
COVERALLS_REPO_TOKEN: "jkrVNjOvNxoqfyCSQ2QbIgbqP53QCkFmP"
COVERALLS_RUN_LOCALLY: 1