1- name : CI
1+ name : CI/CD Pipeline
22
33on :
44 push :
5- branches : [ main, master ]
5+ branches : [ master ]
66 pull_request :
7- branches : [ main, master ]
7+ branches : [ master ]
88
99jobs :
1010 test :
11+ name : Run Tests
1112 runs-on : ubuntu-latest
1213 strategy :
1314 matrix :
14- php : [8.1 , 8.2, 8.3 ]
15+ php : [8.3 , 8.4 ]
1516
1617 steps :
17- - uses : actions/checkout@v4
18+ - name : Checkout code
19+ uses : actions/checkout@v4
1820
1921 - name : Setup PHP
2022 uses : shivammathur/setup-php@v2
@@ -26,66 +28,88 @@ jobs:
2628 - name : Validate composer.json and composer.lock
2729 run : composer validate --strict
2830
29- - name : Cache Composer packages
31+ - name : Get composer cache directory
3032 id : composer-cache
31- uses : actions/cache@v3
33+ run : echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
34+
35+ - name : Cache dependencies
36+ uses : actions/cache@v4
3237 with :
33- path : vendor
34- key : ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
35- restore-keys : |
36- ${{ runner.os }}-php-
38+ path : ${{ steps.composer-cache.outputs.dir }}
39+ key : ${{ runner.os }}-php-${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }}
40+ restore-keys : ${{ runner.os }}-php-${{ matrix.php }}-composer-
3741
3842 - name : Install dependencies
3943 run : composer install --prefer-dist --no-progress
4044
41- - name : Run PHPStan
42- run : composer run phpstan
43-
44- - name : Run PHP CodeSniffer
45- run : composer run phpcs
46-
47- - name : Run tests
48- run : composer run test
45+ - name : Run quality checks
46+ run : composer run quality
4947
5048 - name : Run tests with coverage
5149 run : composer run test-coverage
5250
5351 - name : Upload coverage to Codecov
54- uses : codecov/codecov-action@v3
52+ if : matrix.php == '8.4'
53+ uses : codecov/codecov-action@v4
5554 with :
5655 file : ./coverage.xml
5756 flags : unittests
5857 name : codecov-umbrella
5958 fail_ci_if_error : true
6059
6160 security :
61+ name : Security Audit
6262 runs-on : ubuntu-latest
63+ needs : test
64+
6365 steps :
64- - uses : actions/checkout@v4
66+ - name : Checkout code
67+ uses : actions/checkout@v4
6568
6669 - name : Setup PHP
6770 uses : shivammathur/setup-php@v2
6871 with :
69- php-version : 8.3
72+ php-version : ' 8.3'
7073
7174 - name : Install dependencies
7275 run : composer install --prefer-dist --no-progress
7376
7477 - name : Run security audit
7578 run : composer audit
7679
77- outdated :
80+ release :
81+ name : Create Release
7882 runs-on : ubuntu-latest
83+ needs : [test, security]
84+ if : github.ref == 'refs/heads/master' && github.event_name == 'push'
85+
7986 steps :
80- - uses : actions/checkout@v4
87+ - name : Checkout code
88+ uses : actions/checkout@v4
89+ with :
90+ fetch-depth : 0
8191
8292 - name : Setup PHP
8393 uses : shivammathur/setup-php@v2
8494 with :
85- php-version : 8.3
95+ php-version : ' 8.3'
96+ extensions : mbstring, iconv
8697
8798 - name : Install dependencies
8899 run : composer install --prefer-dist --no-progress
89100
90- - name : Check for outdated dependencies
91- run : composer outdated --direct
101+ - name : Generate configuration files
102+ run : composer generate
103+
104+ - name : Create Release
105+ uses : softprops/action-gh-release@v2
106+ with :
107+ generate_release_notes : true
108+ files : |
109+ *.conf
110+ *.vcl
111+ *.caddy*
112+ *.res
113+ web.config
114+ env :
115+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments