-
-
Notifications
You must be signed in to change notification settings - Fork 0
146 lines (110 loc) · 3.81 KB
/
continuous-integration.yaml
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
name: Continuous Integration
on: push
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
code-analysis:
name: Code Analysis
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set Up PHP and Tools
uses: shivammathur/setup-php@master
with:
php-version: '8.3'
tools: composer:v2
coverage: none
- name: Install Composer Dependencies
run: make vendor
- name: Static Code Analysis
run: make stan
code-style:
name: Code Style
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set Up PHP and Tools
uses: shivammathur/setup-php@master
with:
php-version: '8.3'
tools: composer:v2, phpcs, php-cs-fixer, phpmd
coverage: none
- name: Syntax Errors
run: make syntax
- name: PHP_CodeSniffer
run: make cs
- name: PHP-CS-Fixer
run: make cs-fix-dry
- name: PHPMD
run: make md
- name: Install NPM
run: make node_modules
- name: Validate Assets
run: make validate-fe
security-check:
name: Security Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check Composer Packages
uses: symfonycorp/security-checker-action@v5
- name: Check NPM Packages
run: make audit
tests:
name: Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set Up PHP and Tools
uses: shivammathur/setup-php@master
with:
php-version: '8.3'
extensions: bz2, bcmath, curl, exif, gd, imagick, imap, intl, mysqli, pcntl, pcov, pdo_mysql, redis, soap, xmlrpc, xsl, zip, iconv, pdo
tools: composer:v2
coverage: pcov
- name: Install Composer Dependencies
run: make vendor
- name: Install NPM
run: make node_modules
- name: Build Assets
run: make assets
- name: Test and Coverage
run: make test-coverage
sentry-release:
name: Sentry Release
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action == 'merged'))
needs: [code-analysis, code-style, security-check, tests]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Create a Sentry Release
uses: getsentry/action-release@v1.0.1
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
SENTRY_ORG: johan-van-helden
with:
environment: production
deploy-staging:
name: Deploy Staging
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/develop' && (github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action == 'merged'))
needs: [code-analysis, code-style, security-check, tests]
steps:
- uses: actions/checkout@v4
- name: Trigger Forge Staging Webhook
run: |
[ -n "${{ secrets.FORGE_WEBHOOK_STAGING }}" ] && curl "${{ secrets.FORGE_WEBHOOK_STAGING }}" || echo "No deploy webhook set"
deploy-production:
name: Deploy Production
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action == 'merged'))
needs: [code-analysis, code-style, security-check, tests]
steps:
- uses: actions/checkout@v4
- name: Trigger Forge Production Webhook
run: |
[ -n "${{ secrets.FORGE_WEBHOOK_PRODUCTION }}" ] && curl "${{ secrets.FORGE_WEBHOOK_PRODUCTION }}" || echo "No deploy webhook set"