-
Notifications
You must be signed in to change notification settings - Fork 164
146 lines (120 loc) · 4.15 KB
/
Test-Build.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
name: Test and Build
defaults:
run:
shell: bash
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
jobs:
Test-phpunit:
name: PHPUNIT (PHP-${{ matrix.php-versions }} && DB-${{ matrix.database }})
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ['8.1']
database: ['mysql', 'postgres', 'sqlite']
env:
PHP_V: ${{ matrix.php-versions }}
DB: ${{ matrix.database }}
TEST_ARG: 'phpunit'
services:
mysql:
image: mysql:latest
env:
MYSQL_ROOT_PASSWORD: cypht_test
MYSQL_DATABASE: cypht_test
MYSQL_USER: cypht_test
MYSQL_PASSWORD: cypht_test
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
postgresql:
image: postgres:latest
env:
POSTGRES_USER: cypht_test
POSTGRES_PASSWORD: cypht_test
POSTGRES_DB: cypht_test
ports:
- 5432:5432
options: --health-cmd="pg_isready" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- name: "System Install Dependencies"
run: sudo apt-get install -y mysql-client postgresql-client sqlite3 libsodium-dev
- name: "Checkout code"
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: "Set up PHP"
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: pdo, sodium, sqlite, pdo_mysql, pdo_pgsql, memcached, redis, gd, gnupg
tools: phpunit, composer
ini-values: cgi.fix_pathinfo=1
env:
update: true
fail-fast: true
- name: "Script: setup.sh"
run: bash .github/tests/setup.sh
- name: "Composer Install Dependencies"
run: |
composer install
composer require --dev php-coveralls/php-coveralls
- name: "Script: test.sh"
run: bash tests/phpunit/run.sh
Test-selenium:
name: SELENIUM (PHP-${{ matrix.php-versions }} && DB-${{ matrix.database }})
runs-on: ubuntu-latest
needs: Test-phpunit
strategy:
matrix:
php-versions: ['8.1']
database: ['sqlite']
env:
PHP_V: ${{ matrix.php-versions }}
DB: ${{ matrix.database }}
TEST_ARG: 'selenium'
steps:
- name: "Checkout code"
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: "System Install Dependencies"
run: |
sudo hostnamectl set-hostname cypht-test.org
sudo usermod -aG docker www-data
sudo chmod g+s -R "$(pwd)"
sudo setfacl -d -m g::rwx "$(pwd)"
# chrome
#wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmor > /etc/apt/trusted.gpg.d/google.gpg
sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
sudo apt-get update
sudo apt-get install -y google-chrome-stable dovecot-imapd dovecot-lmtpd postfix python3-pip
sudo bash .github/tests/selenium/webdriver/webdriver.sh
pip install -r tests/selenium/requirements.txt
- name: "Set up PHP"
uses: shivammathur/setup-php@v2
with:
php-version: ${{ env.PHP_V }}
extensions: pdo, sodium, curl, mbstring, xml, sqlite, pdo_mysql, pdo_pgsql, memcached, redis, gd, gnupg, imagick, bcmath, tidy, soap, xdebug, bcmath
tools: phpunit, composer
ini-values: cgi.fix_pathinfo=1
env:
update: true
fail-fast: true
- name: "Composer Install Dependencies"
run: |
composer install
- name: "Script: setup.sh"
run: bash .github/tests/setup.sh
- name: "Script: test.sh"
run: bash .github/tests/test.sh
Call-Image-Build:
needs: Test-selenium
uses: ./.github/workflows/Nightly-Image.yml