-
-
Notifications
You must be signed in to change notification settings - Fork 207
154 lines (148 loc) · 4.65 KB
/
ci.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
name: CI
on:
push:
branches-ignore:
- 'task/**'
- 'bugfix/**'
- 'feature/**'
pull_request:
jobs:
build-php:
name: Build PHP
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 5
matrix:
typo3: ['^12', '^13', '13.4.x-dev']
php: ['8.2', '8.3']
include:
- typo3: '^12'
php: '8.1'
steps:
- id: checkout
name: Checkout Code
uses: actions/checkout@v4
- id: setup_mysql
name: Set up MySQL 8.0
uses: mirromutth/mysql-action@v1.1
with:
mysql version: 8.0
mysql root password: 'root'
- id: setup_php
name: Set up PHP ${{ matrix.php }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
tools: composer:v2
- name: Composer Cache Vars
id: composer-cache-vars
run: |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
echo "timestamp=$(date +"%s")" >> $GITHUB_OUTPUT
- name: Cache Composer dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache-vars.outputs.dir }}
key: ${{ runner.os }}-composer-${{ matrix.php }}-${{ matrix.typo3 }}-${{ steps.composer-cache-vars.outputs.timestamp }}
restore-keys: |
${{ runner.os }}-composer-${{ matrix.php }}-${{ matrix.typo3 }}-
${{ runner.os }}-composer-${{ matrix.php }}-
${{ runner.os }}-composer-
- id: install
name: Install
run: |
composer require typo3/cms-core:${{ matrix.typo3 }} --no-progress
git checkout composer.json
- id: lint
name: Lint
if: ${{ always() && steps.install.conclusion == 'success' }}
run: |
composer test:php:lint
- id: cgl
name: CGL
if: ${{ always() && steps.install.conclusion == 'success' }}
run: |
composer cgl:ci
- id: phpstan
name: PHPStan
if: ${{ always() && steps.install.conclusion == 'success' }}
run: |
composer phpstan -- --error-format=github
- id: tests_unit
name: Unit Tests
if: ${{ always() && steps.install.conclusion == 'success' && matrix.php == '8.3' }}
run: |
composer test:php:unit
- id: tests_functional
name: Functional Tests
if: ${{ always() && steps.install.conclusion == 'success' && matrix.php == '8.3' }}
run: |
composer test:php:functional
env:
COMPOSER_PROCESS_TIMEOUT: 1200
typo3DatabaseHost: 127.0.0.1
typo3DatabaseName: t3func
typo3DatabasePassword: root
typo3DatabaseUsername: root
build-frontend:
name: Build Frontend
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install
run: |
cd Build
npm ci
- name: Build
run: |
cd Build
npm run build
- name: Status
run: |
git status
git status | grep -q "nothing to commit, working tree clean"
deployment:
name: Deployment
runs-on: ubuntu-latest
environment:
name: production
url: https://bootstrap-package.com
needs: [build-php, build-frontend]
if: (github.ref == 'refs/heads/master') && github.event_name != 'pull_request' && (github.repository == 'benjaminkott/bootstrap_package')
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up PHP Version 7.4
uses: shivammathur/setup-php@v2
with:
php-version: 7.4
tools: composer:v2
- name: Download Deployer
run: |
curl -LO https://deployer.org/deployer.phar;
sudo mv deployer.phar /usr/local/bin/dep;
sudo chmod +x /usr/local/bin/dep;
dep self-update;
- name: Setup SSH Key
env:
SSH_AUTH_SOCK: /tmp/ssh-auth.sock
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/deploy_rsa
chmod 0600 ~/.ssh/deploy_rsa
ssh-keygen -p -P "${{ secrets.SSH_PASSPHRASE }}" -N "" -f ~/.ssh/deploy_rsa
ssh-agent -a $SSH_AUTH_SOCK > /dev/null
ssh-add ~/.ssh/deploy_rsa
ssh-keyscan ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
- name: Deploy
env:
SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_USER: ${{ secrets.SSH_USER }}
SSH_AUTH_SOCK: /tmp/ssh-auth.sock
run: |
dep --file="./Build/deploy.php" deploy;