-
Notifications
You must be signed in to change notification settings - Fork 124
171 lines (145 loc) · 6.75 KB
/
tests.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
167
168
169
170
171
name: API library tests
on:
push:
branches:
- main
- '[0-9]+\.[0-9]+'
pull_request:
workflow_dispatch:
inputs:
pr:
description: 'PR number in mautic/mautic to test against'
required: false
schedule:
# Run every day at 10 AM UTC to discover potential issues with recent changes to Mautic itself
- cron: '0 10 * * *'
jobs:
phpunit:
runs-on: ubuntu-20.04
name: PHPUnit tests
services:
mysql:
image: mysql:5.7
env:
MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_DATABASE: mautictest
ports:
- 3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
mailhog:
image: mailhog/mailhog:latest
ports:
- 1025:1025
redis:
image: redis:6
ports:
- 6379:6379
steps:
- uses: actions/checkout@v3
- name: Copy our API library config into the tests/ folder
run: cp -a ./.github/ci-files/local.config.php tests/local.config.php
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: 8.0
ini-values: session.save_handler=redis, session.save_path="tcp://127.0.0.1:6379"
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, mysql, pdo_mysql
coverage: pcov
- name: Set SYMFONY_ENV to test
run: echo "SYMFONY_ENV=test" >> $GITHUB_ENV
- name: Install Apache
# We need the sed command at the bottom to set the PHP session save path to a directory that's writable for PHP
# NOTE: update the PHP version below as well if you're updating PHP!
run: |
sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update
sudo apt-get install apache2 libapache2-mod-php8.0
sudo a2enmod rewrite
sudo sed -i 's,^session.save_handler =.*$,session.save_handler = redis,' /etc/php/8.0/apache2/php.ini
sudo sed -i 's,^;session.save_path =.*$,session.save_path = "tcp://127.0.0.1:6379",' /etc/php/8.0/apache2/php.ini
sudo sed -i 's,^memory_limit =.*$,memory_limit = 256M,' /etc/php/8.0/apache2/php.ini
sudo service apache2 restart
cat /etc/php/8.0/apache2/php.ini | grep session
- name: Install dependencies
run: |
composer validate --strict
composer install --prefer-dist --no-progress
- name: Clone Mautic main branch or specific PR from GitHub
run: |
gh repo clone mautic/mautic -- --single-branch --depth 1
if [[ "${{ github.event.inputs.pr }}" != "" ]]; then
pushd mautic
gh pr checkout ${{ github.event.inputs.pr }}
popd
fi
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Move files to web root
run: |
shopt -s dotglob
sudo chmod -R 777 /var/www/html
sudo chown -R www-data:www-data /var/www/html
rm -rf /var/www/html/*
mv $GITHUB_WORKSPACE/mautic/* /var/www/html/
cp ./.github/ci-files/.env /var/www/html/
sed -i 's/DB_PORT=3306/DB_PORT=${{ job.services.mysql.ports[3306] }}/g' /var/www/html/.env
rm -f /var/www/html/.env.test
- name: Install Mautic
env:
DB_PORT: ${{ job.services.mysql.ports[3306] }}
run: |
composer install --prefer-dist --no-progress
if [[ "$(jq -r '.version | .[0:1]' app/release_metadata.json)" == "4" ]]; then
cp $GITHUB_WORKSPACE/.github/ci-files/local_4.php ./app/config/local.php
php bin/console mautic:install http://localhost/ --force --env=test --mailer_from_name="GitHub Actions" --mailer_from_email="[email protected]"
sed -i "s/('prod',/('test',/g" ./index.php
echo "MAUTIC_VERSION=4" >> $GITHUB_ENV
else
cp $GITHUB_WORKSPACE/.github/ci-files/local_5.php ./config/local.php
php bin/console mautic:install http://localhost/ --force --env=test
echo "MAUTIC_VERSION=5" >> $GITHUB_ENV
fi
php bin/console cache:warmup --no-interaction --env=test
working-directory: /var/www/html/
# Enable Twilio plugin with random credentials (needed for MessagesTest to function, doesn't actually contact Twilio API).
- name: Enable Twilio plugin
run: |
mysql -uroot -P${{ job.services.mysql.ports[3306] }} -h127.0.0.1 -e "USE mautictest; INSERT INTO plugin_integration_settings (plugin_id, name, is_published, supported_features, api_keys, feature_settings) VALUES (NULL, 'Twilio', 1, 'a:0:{}', 'a:2:{s:8:\"username\";s:169:\"bzFmNlIydWRSZXlIN2lQVkdpanJ4aTQ2NUh6RVdDbHlLRVhsWGZ4b0kyZVNxLzYrQ1J6V1RvMnlhVEp0c245TEp6eStQekx5ZVhLWjB1YVdoR3RnR2dHQ3k1emVVdGt5NzZKUmtjUnJ3c1E9|L8tbZRIYhwatT7Mq+HAdYA==\";s:8:\"password\";s:169:\"T2d2cFpXQWE5YVZnNFFianJSYURRYUtGRHBNZGZjM1VETXg2Wm5Va3NheW43MjVWUlJhTVlCL2pYMDBpbElONStiVVBNbEM3M3BaeGJMNkFKNUFEN1pTNldSRjc4bUM4SDh1SE9OY1k5MTg9|TeuSvfx4XSUOvp0O7T49Cg==\";}', 'a:4:{s:20:\"sending_phone_number\";N;s:22:\"disable_trackable_urls\";i:0;s:16:\"frequency_number\";N;s:14:\"frequency_time\";N;}');"
php bin/console mautic:plugins:reload --env=test
working-directory: /var/www/html
- name: Set correct ownership so Apache can access the files
run: sudo chown -R www-data:www-data /var/www/html
- name: Run tests
run: |
sed -i 's/env name="MAUTIC_VERSION" value="5"/env name="MAUTIC_VERSION" value="${{ env.MAUTIC_VERSION }}"/g' ./phpunit.xml.dist
vendor/bin/phpunit --coverage-clover coverage.xml
- name: Upload code coverage
run: bash <(curl -s https://codecov.io/bash)
- name: Upload logs as artifacts
uses: actions/upload-artifact@v2
if: always()
with:
name: mautic-logs
path: /var/www/html/var/logs/
- name: Slack Notification if tests fail
uses: rtCamp/action-slack-notify@v2
if: ${{ failure() && github.event_name == 'schedule' }}
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
SLACK_MESSAGE: 'The daily API library tests against mautic/mautic have failed. Most likely a PR was merged recently which introduced a regression of some sort.'
cs:
runs-on: ubuntu-20.04
name: CS tests
steps:
- uses: actions/checkout@v3
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: 8.0
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, mysql, pdo_mysql
- name: Install dependencies
run: |
composer validate --strict
composer install --prefer-dist --no-progress
- name: Run CS tests
run: vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php -v --dry-run --using-cache=no --show-progress=dots --diff $(git diff -- '*.php' --name-only --diff-filter=ACMRTUXB "HEAD~..HEAD")