Skip to content

Commit bbf917c

Browse files
committed
Added docker instance for tests
1 parent 66ff834 commit bbf917c

File tree

1 file changed

+74
-112
lines changed

1 file changed

+74
-112
lines changed

.github/workflows/ci.yml

Lines changed: 74 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -11,161 +11,123 @@ on:
1111
- 'main'
1212

1313
jobs:
14-
unit-tests:
15-
name: Unit Tests - ${{ matrix.module }} (PHP ${{ matrix.php-version }})
14+
tests:
15+
name: Tests - ${{ matrix.module }} (PS ${{ matrix.ps-version }})
1616
runs-on: ubuntu-latest
1717

1818
strategy:
1919
fail-fast: false
2020
matrix:
2121
include:
2222
- module: ps17
23+
ps-version: '1.7.7.0'
2324
php-version: '7.2'
2425
- module: ps8
26+
ps-version: '8.1.5'
2527
php-version: '8.1'
2628
- module: ps9
29+
ps-version: '9.0.0'
2730
php-version: '8.4'
2831

32+
services:
33+
mysql:
34+
image: mariadb:10.9.4
35+
env:
36+
MYSQL_ROOT_PASSWORD: prestashop
37+
MYSQL_DATABASE: prestashop
38+
options: >-
39+
--health-cmd="mysqladmin ping -h127.0.0.1 -uroot -pprestashop --silent"
40+
--health-interval=10s
41+
--health-timeout=5s
42+
--health-retries=5
43+
2944
steps:
3045
- name: Checkout code
3146
uses: actions/checkout@v4
3247

33-
- name: Setup PHP
34-
uses: shivammathur/setup-php@v2
35-
with:
36-
php-version: ${{ matrix.php-version }}
37-
extensions: mbstring, xml, ctype, json, zip
38-
coverage: none
39-
40-
- name: Get Composer cache directory
41-
id: composer-cache
42-
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
43-
44-
- name: Cache Composer dependencies
45-
uses: actions/cache@v4
46-
with:
47-
path: ${{ steps.composer-cache.outputs.dir }}
48-
key: ${{ runner.os }}-php-${{ matrix.php-version }}-composer-${{ hashFiles('**/composer.lock') }}
49-
restore-keys: |
50-
${{ runner.os }}-php-${{ matrix.php-version }}-composer-
51-
52-
- name: Install root dependencies
53-
run: composer install --prefer-dist --no-progress --no-interaction
54-
55-
- name: Install ${{ matrix.module }} module dependencies
56-
working-directory: ${{ matrix.module }}
57-
run: composer install --prefer-dist --no-progress --no-interaction
58-
59-
- name: Copy monorepo directories to vendor
60-
working-directory: ${{ matrix.module }}
48+
- name: Pull PrestaShop Docker image
49+
run: docker pull prestashop/prestashop:${{ matrix.ps-version }}
50+
51+
- name: Start PrestaShop container
52+
run: |
53+
docker run -tid --rm \
54+
--name prestashop-${{ matrix.module }} \
55+
--network ${{ job.container.network }} \
56+
-e DB_SERVER=mysql \
57+
-e DB_NAME=prestashop \
58+
-e DB_USER=root \
59+
-e DB_PASSWD=prestashop \
60+
-e PS_INSTALL_AUTO=0 \
61+
prestashop/prestashop:${{ matrix.ps-version }}
62+
63+
- name: Wait for PrestaShop to be ready
64+
run: |
65+
timeout 60 bash -c 'until docker exec prestashop-${{ matrix.module }} test -f /var/www/html/config/config.inc.php 2>/dev/null || docker exec prestashop-${{ matrix.module }} test -f /var/www/html/app/config/parameters.php 2>/dev/null; do sleep 2; done' || true
66+
sleep 5
67+
68+
- name: Copy module to PrestaShop
69+
run: |
70+
docker cp ${{ matrix.module }}/. prestashop-${{ matrix.module }}:/var/www/html/modules/ps_checkout/
71+
72+
- name: Install Composer
73+
run: |
74+
docker exec prestashop-${{ matrix.module }} bash -c "curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer"
75+
76+
- name: Install Composer dependencies in container
77+
run: |
78+
docker exec prestashop-${{ matrix.module }} bash -c "cd /var/www/html/modules/ps_checkout && composer install --no-interaction --prefer-dist"
79+
80+
- name: Copy monorepo directories to module vendor
6181
run: |
62-
mkdir -p vendor/invertus
63-
cp -r ${{ github.workspace }}/api vendor/invertus/
64-
cp -r ${{ github.workspace }}/core vendor/invertus/
65-
cp -r ${{ github.workspace }}/infrastructure vendor/invertus/
66-
cp -r ${{ github.workspace }}/presentation vendor/invertus/
67-
cp -r ${{ github.workspace }}/utility vendor/invertus/
82+
docker exec prestashop-${{ matrix.module }} bash -c "mkdir -p /var/www/html/modules/ps_checkout/vendor/invertus"
83+
docker cp api/. prestashop-${{ matrix.module }}:/var/www/html/modules/ps_checkout/vendor/invertus/api/
84+
docker cp core/. prestashop-${{ matrix.module }}:/var/www/html/modules/ps_checkout/vendor/invertus/core/
85+
docker cp infrastructure/. prestashop-${{ matrix.module }}:/var/www/html/modules/ps_checkout/vendor/invertus/infrastructure/
86+
docker cp presentation/. prestashop-${{ matrix.module }}:/var/www/html/modules/ps_checkout/vendor/invertus/presentation/
87+
docker cp utility/. prestashop-${{ matrix.module }}:/var/www/html/modules/ps_checkout/vendor/invertus/utility/
6888
6989
- name: Run Infrastructure Unit Tests
70-
working-directory: ${{ matrix.module }}
7190
run: |
72-
php vendor/bin/phpunit \
91+
docker exec prestashop-${{ matrix.module }} bash -c "cd /var/www/html/modules/ps_checkout && php vendor/bin/phpunit \
7392
--configuration=vendor/invertus/infrastructure/tests/phpunit.xml \
74-
--bootstrap=vendor/invertus/infrastructure/tests/bootstrap.php
93+
--bootstrap=vendor/invertus/infrastructure/tests/bootstrap.php"
7594
7695
- name: Run Utility Unit Tests
77-
working-directory: ${{ matrix.module }}
7896
run: |
79-
php vendor/bin/phpunit \
97+
docker exec prestashop-${{ matrix.module }} bash -c "cd /var/www/html/modules/ps_checkout && php vendor/bin/phpunit \
8098
--configuration=vendor/invertus/utility/tests/phpunit.xml \
81-
--bootstrap=vendor/invertus/utility/tests/bootstrap.php
99+
--bootstrap=vendor/invertus/utility/tests/bootstrap.php"
82100
83101
- name: Run Core Unit Tests
84-
working-directory: ${{ matrix.module }}
85102
run: |
86-
php vendor/bin/phpunit \
103+
docker exec prestashop-${{ matrix.module }} bash -c "cd /var/www/html/modules/ps_checkout && php vendor/bin/phpunit \
87104
--configuration=vendor/invertus/core/tests/phpunit.xml \
88-
--bootstrap=vendor/invertus/core/tests/bootstrap.php
105+
--bootstrap=vendor/invertus/core/tests/bootstrap.php"
89106
90107
- name: Run Presentation Unit Tests
91-
working-directory: ${{ matrix.module }}
92108
run: |
93-
php vendor/bin/phpunit \
109+
docker exec prestashop-${{ matrix.module }} bash -c "cd /var/www/html/modules/ps_checkout && php vendor/bin/phpunit \
94110
--configuration=vendor/invertus/presentation/tests/phpunit.xml \
95-
--bootstrap=vendor/invertus/presentation/tests/bootstrap.php
96-
97-
integration-tests:
98-
name: Integration Tests - ${{ matrix.module }} (PHP ${{ matrix.php-version }})
99-
runs-on: ubuntu-latest
100-
101-
strategy:
102-
fail-fast: false
103-
matrix:
104-
include:
105-
- module: ps17
106-
php-version: '7.2'
107-
- module: ps8
108-
php-version: '8.1'
109-
- module: ps9
110-
php-version: '8.4'
111-
112-
steps:
113-
- name: Checkout code
114-
uses: actions/checkout@v4
115-
116-
- name: Setup PHP
117-
uses: shivammathur/setup-php@v2
118-
with:
119-
php-version: ${{ matrix.php-version }}
120-
extensions: mbstring, xml, ctype, json, zip
121-
coverage: none
122-
123-
- name: Get Composer cache directory
124-
id: composer-cache
125-
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
126-
127-
- name: Cache Composer dependencies
128-
uses: actions/cache@v4
129-
with:
130-
path: ${{ steps.composer-cache.outputs.dir }}
131-
key: ${{ runner.os }}-php-${{ matrix.php-version }}-composer-${{ hashFiles('**/composer.lock') }}
132-
restore-keys: |
133-
${{ runner.os }}-php-${{ matrix.php-version }}-composer-
134-
135-
- name: Install root dependencies
136-
run: composer install --prefer-dist --no-progress --no-interaction
137-
138-
- name: Install ${{ matrix.module }} module dependencies
139-
working-directory: ${{ matrix.module }}
140-
run: composer install --prefer-dist --no-progress --no-interaction
141-
142-
- name: Copy monorepo directories to vendor
143-
working-directory: ${{ matrix.module }}
144-
run: |
145-
mkdir -p vendor/invertus
146-
cp -r ${{ github.workspace }}/api vendor/invertus/
147-
cp -r ${{ github.workspace }}/core vendor/invertus/
148-
cp -r ${{ github.workspace }}/infrastructure vendor/invertus/
149-
cp -r ${{ github.workspace }}/presentation vendor/invertus/
150-
cp -r ${{ github.workspace }}/utility vendor/invertus/
111+
--bootstrap=vendor/invertus/presentation/tests/bootstrap.php"
151112
152113
- name: Run Infrastructure Integration Tests
153-
working-directory: ${{ matrix.module }}
154114
run: |
155-
php vendor/bin/phpunit \
115+
docker exec prestashop-${{ matrix.module }} bash -c "cd /var/www/html/modules/ps_checkout && php vendor/bin/phpunit \
156116
--configuration=vendor/invertus/infrastructure/tests/phpunit-integration.xml \
157-
--bootstrap=vendor/invertus/infrastructure/tests/bootstrap-integration.php
117+
--bootstrap=vendor/invertus/infrastructure/tests/bootstrap-integration.php"
158118
159119
- name: Run Core Integration Tests
160-
working-directory: ${{ matrix.module }}
161120
run: |
162-
php vendor/bin/phpunit \
121+
docker exec prestashop-${{ matrix.module }} bash -c "cd /var/www/html/modules/ps_checkout && php vendor/bin/phpunit \
163122
--configuration=vendor/invertus/core/tests/phpunit-integration.xml \
164-
--bootstrap=vendor/invertus/core/tests/bootstrap-integration.php
123+
--bootstrap=vendor/invertus/core/tests/bootstrap-integration.php"
165124
166125
- name: Run Module Integration Tests
167-
working-directory: ${{ matrix.module }}
168126
run: |
169-
php vendor/bin/phpunit \
127+
docker exec prestashop-${{ matrix.module }} bash -c "cd /var/www/html/modules/ps_checkout && php vendor/bin/phpunit \
170128
--configuration=tests/phpunit-integration.xml \
171-
--bootstrap=tests/bootstrap-integration.php
129+
--bootstrap=tests/bootstrap-integration.php"
130+
131+
- name: Cleanup
132+
if: always()
133+
run: docker stop prestashop-${{ matrix.module }} || true

0 commit comments

Comments
 (0)