-
Notifications
You must be signed in to change notification settings - Fork 0
166 lines (137 loc) · 4.26 KB
/
php.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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
name: Lion-Bundle (CI Workflow)
on:
push:
branches:
- main
pull_request:
branches:
- main
schedule:
- cron: "15 0 * * *"
jobs:
composer-validation:
runs-on: ubuntu-latest
name: Composer Validation
steps:
- name: Check out the repository
uses: actions/checkout@v4
- name: Cache Composer dependencies
uses: actions/cache@v3
with:
path: vendor
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.4'
extensions: mbstring, gd, zip
- name: Composer Install
run: composer install
- name: Composer Validate
run: composer validate --strict
- name: Composer Check for vulnerabilities
run: composer audit --locked
- name: Composer Dump-Autoload
run: composer dump-autoload --optimize --strict-psr
code-analyze:
runs-on: ubuntu-latest
name: PHP Code Analyze
needs:
- composer-validation
steps:
- name: Check out the repository
uses: actions/checkout@v4
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.4'
extensions: mbstring, gd, zip
- name: Composer Install
run: composer install
- name: PHP CodeSnifer (Src)
run: php -d memory_limit=-1 vendor/bin/phpcs --standard=PSR12 src/
# - name: PHPStan (Src)
# run: php -d memory_limit=-1 vendor/bin/phpstan analyse --level max src
tests:
runs-on: ubuntu-latest
name: PHP Tests
needs:
- code-analyze
services:
redis:
image: redis
ports:
- 6379:6379
mysql:
image: mysql
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
ports:
- 3306:3306
env:
MYSQL_DATABASE: lion_database
MYSQL_ROOT_PASSWORD: lion
MYSQL_PASSWORD: lion
postgres:
image: postgres
ports:
- 5432:5432
env:
POSTGRES_DB: lion_database
POSTGRES_USER: root
POSTGRES_PASSWORD: lion
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install system dependencies
run: |
sudo apt-get update -y
sudo apt-get install -y git curl wget unzip libpq-dev libpng-dev libzip-dev zlib1g-dev libonig-dev libevent-dev libssl-dev
sudo apt-get clean
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.4
extensions: mbstring, gd, zip, pdo, pdo_mysql, pdo_pgsql, redis, xdebug
coverage: xdebug
ini-values: |
xdebug.mode=coverage
xdebug.start_with_request=yes
xdebug.log_level=0
tools: composer
- name: Setup NodeJS and NPM
run: |
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # Esto carga nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # Esto carga nvm bash_completion
nvm install 20
nvm use 20
npm install -g npm@11
- name: Copy .env.actions to .env
run: |
if [ -f .env.actions ]; then
cp .env.actions .env
else
echo ".env.actions not found! Please make sure the file exists."
exit 1
fi
- name: Install php dependencies
run: composer install
- name: Start PHP built-in server
run: |
nohup php -S 0.0.0.0:8000 -t public &
- name: Generate RSA Key's
run: php lion new:rsa
- name: Run tests
run: php vendor/bin/phpunit --coverage-clover tests/build/logs/clover.xml --coverage-html tests/build/coverage
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
with:
files: tests/build/logs/clover.xml
token: ${{ secrets.CODECOV_TOKEN }}