Skip to content

Commit d196a0e

Browse files
Merge pull request #1788 from algolia/chore/MAGE-1368-add-integration-tests-circleci
MAGE-1368: Add integration tests to CircleCI
2 parents 5a7199d + d6d1809 commit d196a0e

File tree

2 files changed

+144
-6
lines changed

2 files changed

+144
-6
lines changed

.circleci/config.yml

Lines changed: 105 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@ version: 2.1
22

33
orbs:
44
php: circleci/[email protected]
5+
slack: circleci/[email protected]
56

67
executors:
78
magento-executor:
89
machine:
910
image: ubuntu-2404:2024.11.1
1011
docker_layer_caching: true
1112

12-
jobs:
13-
magento-build:
14-
executor:
15-
name: magento-executor
13+
commands:
14+
setup-magento-environment:
15+
description: "Setup Magento environment with common configuration"
1616
parameters:
1717
php-version:
1818
type: string
@@ -32,13 +32,13 @@ jobs:
3232
name: Setup folder structure and override file
3333
command: |
3434
mkdir ~/Sites
35-
mkdir ~/Sites/unit-tests
36-
mkdir ~/Sites/unit-coverage
3735
cd ~/Sites
3836
cat \<<EOF > compose.override.yml
3937
services:
4038
phpfpm:
4139
image: markoshust/magento-php:<< parameters.php-version >>-fpm
40+
db:
41+
image: mariadb:10.11
4242
EOF
4343
- run:
4444
name: Setup magento enterprise
@@ -64,6 +64,29 @@ jobs:
6464
command: |
6565
bin/magento setup:di:compile
6666
bin/magento module:status Algolia_AlgoliaSearch
67+
68+
jobs:
69+
magento-build:
70+
executor:
71+
name: magento-executor
72+
parameters:
73+
php-version:
74+
type: string
75+
magento-version:
76+
type: string
77+
steps:
78+
- setup-magento-environment:
79+
php-version: << parameters.php-version >>
80+
magento-version: << parameters.magento-version >>
81+
- run:
82+
name: Create test directories
83+
command: |
84+
mkdir ~/Sites/unit-tests
85+
mkdir ~/Sites/unit-coverage
86+
- persist_to_workspace:
87+
root: ~/Sites
88+
paths:
89+
- .
6790
- run:
6891
name: Run Unit Tests and copy results to CircleCI
6992
working_directory: ~/Sites
@@ -89,6 +112,65 @@ jobs:
89112
path: ~/Sites/unit-coverage/report
90113
destination: test-results/magento-<< parameters.magento-version >>-php-<< parameters.php-version >>
91114

115+
magento-integration-test:
116+
executor:
117+
name: magento-executor
118+
parameters:
119+
php-version:
120+
type: string
121+
magento-version:
122+
type: string
123+
steps:
124+
- setup-magento-environment:
125+
php-version: << parameters.php-version >>
126+
magento-version: << parameters.magento-version >>
127+
- run:
128+
name: Configure integration tests
129+
working_directory: ~/Sites
130+
command: |
131+
bin/cli cp dev/tests/integration/phpunit.xml.dist dev/tests/integration/phpunit.xml
132+
- run:
133+
name: Create integration test environment file
134+
working_directory: ~/Sites
135+
command: |
136+
echo "[email protected]" > .env
137+
echo "MAGENTO_ADMIN_FIRST_NAME=john" >> .env
138+
echo "MAGENTO_ADMIN_LAST_NAME=smith" >> .env
139+
echo "MAGENTO_ADMIN_USER=john.smith" >> .env
140+
echo "MAGENTO_ADMIN_PASSWORD=password123" >> .env
141+
echo "MAGENTO_ADMIN_FRONTNAME=admin" >> .env
142+
echo "MAGENTO_LOCALE=en_US" >> .env
143+
echo "MAGENTO_CURRENCY=USD" >> .env
144+
echo "MAGENTO_TIMEZONE=America/New_York" >> .env
145+
echo "ALGOLIA_APPLICATION_ID=$ALGOLIA_APPLICATION_ID" >> .env
146+
echo "ALGOLIA_SEARCH_KEY=$ALGOLIA_SEARCH_API_KEY" >> .env
147+
echo "ALGOLIA_API_KEY=$ALGOLIA_API_KEY" >> .env
148+
echo "INDEX_PREFIX=integration_test_" >> .env
149+
docker cp .env $(docker compose ps -q phpfpm):/var/www/html/dev/tests/integration/.env
150+
- run:
151+
name: Prepare integration test environment
152+
working_directory: ~/Sites
153+
command: |
154+
docker cp ../project/.circleci/install-config-mysql.php $(docker compose ps -q phpfpm):/var/www/html/dev/tests/integration/etc/install-config-mysql.php
155+
bin/magento module:enable --all
156+
bin/setup-integration-tests
157+
- run:
158+
name: Run Integration Tests
159+
working_directory: ~/Sites
160+
command: |
161+
bin/cli bash -c "cd ./dev/tests/integration && export $(cat .env | xargs) && ../../../vendor/bin/phpunit --debug --exclude-group problematic ../../../vendor/algolia/algoliasearch-magento-2/Test/Integration/"
162+
163+
notify:
164+
docker:
165+
- image: cimg/base:current
166+
steps:
167+
- slack/notify:
168+
event: fail
169+
template: basic_fail_1
170+
- slack/notify:
171+
event: pass
172+
template: success_tagged_deploy_1
173+
92174
workflows:
93175
magento-build-and-test-workflow:
94176
jobs:
@@ -97,3 +179,20 @@ workflows:
97179
parameters:
98180
php-version: ["8.2"]
99181
magento-version: ["2.4.6-p11", "2.4.7-p6"]
182+
- notify:
183+
context: mage-slack
184+
magento-integration-test-workflow:
185+
when:
186+
or:
187+
- equal: [ main, << pipeline.git.branch >> ]
188+
- matches:
189+
pattern: ".*release.*"
190+
value: << pipeline.git.branch >>
191+
jobs:
192+
- magento-integration-test:
193+
matrix:
194+
parameters:
195+
php-version: ["8.2"]
196+
magento-version: ["2.4.7-p6"]
197+
- notify:
198+
context: mage-slack

.circleci/install-config-mysql.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
return [
8+
'db-host' => 'db',
9+
'db-user' => 'magento',
10+
'db-password' => 'magento',
11+
'db-name' => 'magento_integration_tests',
12+
'db-prefix' => '',
13+
'backend-frontname' => 'backend',
14+
'search-engine' => 'opensearch',
15+
'opensearch-host' => 'opensearch',
16+
'admin-user' => \Magento\TestFramework\Bootstrap::ADMIN_NAME,
17+
'admin-password' => \Magento\TestFramework\Bootstrap::ADMIN_PASSWORD,
18+
'admin-email' => \Magento\TestFramework\Bootstrap::ADMIN_EMAIL,
19+
'admin-firstname' => \Magento\TestFramework\Bootstrap::ADMIN_FIRSTNAME,
20+
'admin-lastname' => \Magento\TestFramework\Bootstrap::ADMIN_LASTNAME,
21+
'amqp-host' => 'rabbitmq',
22+
'amqp-port' => '5672',
23+
'amqp-user' => 'magento',
24+
'amqp-password' => 'magento',
25+
'consumers-wait-for-messages' => '0',
26+
'session-save' => 'redis',
27+
'session-save-redis-host' => 'redis',
28+
'session-save-redis-port' => 6379,
29+
'session-save-redis-db' => 5,
30+
'session-save-redis-max-concurrency' => 20,
31+
'cache-backend' => 'redis',
32+
'cache-backend-redis-server' => 'redis',
33+
'cache-backend-redis-db' => 4,
34+
'cache-backend-redis-port' => 6379,
35+
'page-cache' => 'redis',
36+
'page-cache-redis-server' => 'redis',
37+
'page-cache-redis-db' => 3,
38+
'page-cache-redis-port' => 6379
39+
];

0 commit comments

Comments
 (0)