Skip to content

Commit 69d3335

Browse files
committed
ci(git): Copy generic CI/CD files
1 parent 001471f commit 69d3335

8 files changed

Lines changed: 258 additions & 28 deletions

File tree

.github/workflows/compile.yml

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ on: ['push', 'pull_request']
44
jobs:
55
compile:
66
name: Magento 2 DI compilation
7-
#runs-on: self-hosted
87
runs-on: ubuntu-latest
98
strategy:
109
matrix:
@@ -15,7 +14,23 @@ jobs:
1514
- name: Checkout sources
1615
uses: actions/checkout@v4
1716

17+
- name: Testing for MODULE.json file
18+
run: |
19+
test -f MODULE.json || echo "SKIP_JOB=true" >> $GITHUB_ENV
20+
21+
- name: Check Magento version
22+
if: env.SKIP_JOB != 'true'
23+
run: |
24+
jq -e --arg v "${{ matrix.magento_version }}" '.skip_magento_versions[] == $v' MODULE.json && echo "SKIP_JOB=true" >> $GITHUB_ENV || true
25+
26+
- name: Setting up module variables
27+
if: env.SKIP_JOB != 'true'
28+
run: |
29+
echo COMPOSER_NAME=`jq '.name' composer.json -r` >> $GITHUB_ENV
30+
echo MAGENTO_MODULE=`jq '.module_name' MODULE.json -r` >> $GITHUB_ENV
31+
1832
- name: Configure Yireo GitLab
33+
if: env.SKIP_JOB != 'true'
1934
run: |
2035
test -n "${{ secrets.GITLAB_TOKEN }}" || exit 0
2136
cd /tmp/magento
@@ -28,14 +43,15 @@ jobs:
2843
composer config repositories.loki-checkout composer https://gitlab.yireo.com/api/v4/group/loki-checkout/-/packages/composer/packages.json
2944
3045
- name: Add module source
46+
if: env.SKIP_JOB != 'true'
3147
run: |
32-
COMPOSER_NAME=$(grep '^COMPOSER_NAME=' .module.ini | cut -d= -f2- | tr -d '"')
3348
cp -R ${GITHUB_WORKSPACE} /tmp/magento/package-source
3449
cd /tmp/magento
3550
composer config repositories.local-source path package-source/
3651
composer require --prefer-source ${COMPOSER_NAME}:@dev
3752
3853
- name: Run Magento 2 compilation
54+
if: env.SKIP_JOB != 'true'
3955
run: |
4056
cd /tmp/magento
4157
bin/magento module:enable --all
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
cp composer.json composer-old.json
3+
curl https://raw.githubusercontent.com/LokiCheckout/magento-2.4.9-patches/refs/heads/master/core/patches.json -o loki-checkout-patches.json
4+
jq -s add composer-old.json loki-checkout-patches.json > composer.json
5+

.github/workflows/integration-tests.yml

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ on: ['push', 'pull_request']
44
jobs:
55
integration-tests:
66
name: Magento 2 Integration Tests
7-
#runs-on: self-hosted
87
runs-on: ubuntu-latest
98
container:
109
image: yireo/magento2installed:2.4.8-p3
@@ -16,7 +15,7 @@ jobs:
1615
MYSQL_USER: magento2
1716
MYSQL_PASSWORD: magento2
1817
MYSQL_DATABASE: magento2
19-
options: --tmpfs /tmp:rw --tmpfs /var/lib/mysql:rw --health-cmd="mysqladmin ping"
18+
options: --tmpfs /tmp:rw --tmpfs /var/lib/mysql:rw --health-cmd="mysqladmin ping"
2019
opensearch:
2120
image: yireo/opensearch:latest
2221
env:
@@ -30,13 +29,26 @@ jobs:
3029
- name: Checkout sources
3130
uses: actions/checkout@v4
3231

32+
- name: Detecting integration tests
33+
run: |
34+
test -d $GITHUB_WORKSPACE/Test/Integration || echo "SKIP_JOB=true" >> $GITHUB_ENV
35+
3336
- name: Apply patch for reporting memory under Alpine
37+
if: env.SKIP_JOB != 'true'
3438
run: cd /tmp/magento && curl -fsSL https://patch-diff.githubusercontent.com/raw/magento/magento2/pull/39216.diff | git apply
3539

3640
- name: Apply patch for changing MySQL client configuration
41+
if: env.SKIP_JOB != 'true'
3742
run: cd /tmp/magento && curl -fsSL https://patch-diff.githubusercontent.com/raw/magento/magento2/pull/40410.diff | git apply
3843

44+
- name: Setting up module variables
45+
if: env.SKIP_JOB != 'true'
46+
run: |
47+
echo COMPOSER_NAME=`jq -e '.name' composer.json -r` >> $GITHUB_ENV
48+
echo MAGENTO_MODULE=`jq -e '.module_name' MODULE.json -r` >> $GITHUB_ENV
49+
3950
- name: Configure GitLab
51+
if: env.SKIP_JOB != 'true'
4052
run: |
4153
test -n "${{ secrets.GITLAB_TOKEN }}" || exit 0
4254
cd /tmp/magento
@@ -46,20 +58,16 @@ jobs:
4658
composer config repositories.loki-checkout composer https://gitlab.yireo.com/api/v4/group/loki-checkout/-/packages/composer/packages.json
4759
4860
- name: Add module source
61+
if: env.SKIP_JOB != 'true'
4962
run: |
50-
export COMPOSER_NAME=`cat .module.ini | grep COMPOSER_NAME | cut -f2 -d= | tr -d '"'`
5163
cp -R ${GITHUB_WORKSPACE} /tmp/magento/package-source
5264
cd /tmp/magento
5365
composer config repositories.local-source path package-source/
5466
composer require --prefer-source -- ${COMPOSER_NAME}:@dev yireo/magento2-integration-test-helper
5567
5668
- name: Run Magento 2 Integration Tests
69+
if: env.SKIP_JOB != 'true'
5770
run: |
58-
test -d $GITHUB_WORKSPACE/Test/Integration || exit 0
59-
export EXTENSION_VENDOR=`cat .module.ini | grep EXTENSION_VENDOR | cut -f2 -d= | tr -d '"'`
60-
export EXTENSION_NAME=`cat .module.ini | grep EXTENSION_NAME | cut -f2 -d= | tr -d '"'`
61-
export COMPOSER_NAME=`cat .module.ini | grep COMPOSER_NAME | cut -f2 -d= | tr -d '"'`
62-
export MAGENTO_MODULE=${EXTENSION_VENDOR}_${EXTENSION_NAME}
6371
cd /tmp/magento/dev/tests/integration/
6472
cp -R ${GITHUB_WORKSPACE}/.github/workflows/integration-tests/* .
6573
php ../../../vendor/bin/phpunit --atleast-version 9 && cp phpunit9.xml phpunit.xml
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
#!/bin/bash
2+
echo "Waiting for MySQL (${MYSQL_HOST}:${MYSQL_PORT})"
3+
for i in {1..30}; do
4+
if mariadb-admin ping -h"${MYSQL_HOST}" -P"${MYSQL_PORT}" --silent; then
5+
echo "OK"; break
6+
fi
7+
echo -n "."
8+
sleep 1
9+
done
10+
11+
cat <<EOF > ~/.my.cnf
12+
[client-mariadb]
13+
disable-ssl
14+
EOF
15+
16+
mariadb -h"${MYSQL_HOST}" -P"${MYSQL_PORT}" -uroot -p"${MYSQL_ROOT_PASSWORD}" -e "CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE} /*\!40100 DEFAULT CHARACTER SET utf8 */;"
17+
mariadb -h"${MYSQL_HOST}" -P"${MYSQL_PORT}" -uroot -p"${MYSQL_ROOT_PASSWORD}" -e "CREATE USER IF NOT EXISTS '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';"
18+
mariadb -h"${MYSQL_HOST}" -P"${MYSQL_PORT}" -uroot -p"${MYSQL_ROOT_PASSWORD}" -e "GRANT ALL ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%'; FLUSH PRIVILEGES;"
19+
20+
echo "Waiting for OpenSearch (${OPENSEARCH_HOST}:${OPENSEARCH_PORT})"
21+
ready=0
22+
for i in {1..60}; do
23+
if curl -s "http://${OPENSEARCH_HOST}:${OPENSEARCH_PORT}" | grep -q '"tagline"'; then
24+
echo "OK"
25+
ready=1
26+
break
27+
fi
28+
echo -n "."
29+
sleep 1
30+
done
31+
32+
if [ "${ready:-0}" -ne 1 ]; then
33+
echo "OpenSearch NOT OK, exiting"
34+
exit 1
35+
fi
36+
37+
cd /tmp/magento
38+
php -dmemory_limit=-1 bin/magento setup:install \
39+
--base-url="${MAGENTO_BASE_URL}" \
40+
--db-host="${MYSQL_HOST}" \
41+
--db-name="${MYSQL_DATABASE}" \
42+
--db-user="${MYSQL_USER}" \
43+
--db-password="${MYSQL_PASSWORD}" \
44+
--backend-frontname="${MAGENTO_BACKEND_FRONTNAME}" \
45+
--admin-firstname="${MAGENTO_ADMIN_FIRSTNAME}" \
46+
--admin-lastname="${MAGENTO_ADMIN_LASTNAME}" \
47+
--admin-email="${MAGENTO_ADMIN_EMAIL}" \
48+
--admin-user="${MAGENTO_ADMIN_USER}" \
49+
--admin-password="${MAGENTO_ADMIN_PASSWORD}" \
50+
--language="${MAGENTO_LANGUAGE}" \
51+
--currency="${MAGENTO_CURRENCY}" \
52+
--timezone="${MAGENTO_TIMEZONE}" \
53+
--use-rewrites="${MAGENTO_USE_REWRITES}" \
54+
--search-engine="${MAGENTO_SEARCH_ENGINE}" \
55+
--opensearch-host="${OPENSEARCH_HOST}" \
56+
--opensearch-port="${OPENSEARCH_PORT}" \
57+
--session-save=redis \
58+
--session-save-redis-host=redis \
59+
--session-save-redis-port=6379 \
60+
--cache-backend-redis-server=redis \
61+
--cache-backend-redis-port=6379
62+
63+
cd /tmp/magento/pub/
64+
nohup php -S 0.0.0.0:8888 >/tmp/php-server.log 2>&1 &
65+
66+
echo "Waiting for Magento front to become reachable"
67+
result=0
68+
for i in {1..60}; do
69+
if curl -s "${MAGENTO_BASE_URL}" 2>1 >/dev/null; then
70+
echo " OK, available"; result=1; break;
71+
fi
72+
echo -n "."
73+
sleep 1
74+
done
75+
test $result -eq 0 && echo "Not available" && cat /tmp/php-server.log && exit 1

.github/workflows/playwright.yml

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
name: Playwright test
2+
3+
on:
4+
schedule:
5+
- cron: '0 2 * * *'
6+
workflow_dispatch:
7+
8+
jobs:
9+
playwright:
10+
runs-on: ubuntu-latest
11+
container:
12+
image: yireo/magento2installed:2.4.8-p3
13+
env:
14+
GIT_DEPTH: 1
15+
GIT_STRATEGY: fetch
16+
MAGENTO_BASE_URL: "http://127.0.0.1:8888/"
17+
MAGENTO_BACKEND_FRONTNAME: "admin"
18+
MAGENTO_ADMIN_FIRSTNAME: "CI"
19+
MAGENTO_ADMIN_LASTNAME: "User"
20+
MAGENTO_ADMIN_EMAIL: "admin@example.com"
21+
MAGENTO_ADMIN_USER: "admin"
22+
MAGENTO_ADMIN_PASSWORD: "Admin123!@#"
23+
MAGENTO_LANGUAGE: "en_US"
24+
MAGENTO_CURRENCY: "USD"
25+
MAGENTO_TIMEZONE: "UTC"
26+
MAGENTO_USE_REWRITES: "1"
27+
MAGENTO_SEARCH_ENGINE: "opensearch"
28+
COMPOSER_ALLOW_SUPERUSER: "1"
29+
COMPOSER_MEMORY_LIMIT: "-1"
30+
MYSQL_HOST: "mysql"
31+
MYSQL_USER: "magento2"
32+
MYSQL_PASSWORD: "magento2"
33+
MYSQL_DATABASE: "magento2"
34+
MYSQL_ROOT_PASSWORD: "root"
35+
MYSQL_PORT: "3306"
36+
OPENSEARCH_HOST: "opensearch"
37+
OPENSEARCH_PORT: "9200"
38+
OPENSEARCH_JAVA_OPTS: "-Xms128m -Xmx128m"
39+
OPENSEARCH_INITIAL_ADMIN_PASSWORD: "admin"
40+
MAGENTO_VERSION: "2.4.8-p3"
41+
42+
GITLAB_TOKEN: ${{ secrets.GITLAB_TOKEN }}
43+
44+
services:
45+
mysql:
46+
image: yireo/mariadb:10
47+
env:
48+
MYSQL_DATABASE: magento2
49+
MYSQL_USER: magento2
50+
MYSQL_PASSWORD: magento2
51+
MYSQL_ROOT_PASSWORD: root
52+
ports:
53+
- 3306:3306
54+
55+
redis:
56+
image: redis:latest
57+
ports:
58+
- 6379:6379
59+
60+
opensearch:
61+
image: yireo/opensearch
62+
env:
63+
OPENSEARCH_JAVA_OPTS: "-Xms128m -Xmx128m"
64+
OPENSEARCH_INITIAL_ADMIN_PASSWORD: "admin"
65+
ports:
66+
- 9200:9200
67+
68+
steps:
69+
- name: Checkout repository
70+
uses: actions/checkout@v4
71+
with:
72+
fetch-depth: 1
73+
74+
- name: Detecting Playwright tests
75+
run: |
76+
test -d $GITHUB_WORKSPACE/Test/Playwright || exit 0
77+
78+
- name: Setting up module variables
79+
run: |
80+
echo COMPOSER_NAME=`jq '.name' composer.json -r` >> $GITHUB_ENV
81+
echo MAGENTO_MODULE=`jq '.module_name' MODULE.json -r` >> $GITHUB_ENV
82+
83+
- name: Configure Yireo GitLab
84+
run: |
85+
test -n "${{ secrets.GITLAB_TOKEN }}" || exit 0
86+
cd /tmp/magento
87+
composer config gitlab-domains gitlab.yireo.com
88+
composer config --global --auth http-basic.gitlab.yireo.com yireo "${GITLAB_TOKEN}"
89+
composer config repositories.loki-third-party composer https://gitlab.yireo.com/api/v4/group/loki-third-party/-/packages/composer/packages.json
90+
composer config repositories.loki-checkout composer https://gitlab.yireo.com/api/v4/group/loki-checkout/-/packages/composer/packages.json
91+
92+
- name: Run Magento Playwright setup and tests
93+
shell: bash
94+
run: |
95+
cd "$GITHUB_WORKSPACE"
96+
cd /tmp/magento
97+
98+
test -f "$GITHUB_WORKSPACE/.github/workflows/composer-additional.sh" && source "$GITHUB_WORKSPACE/.github/workflows/composer-additional.sh"
99+
test -f "$GITHUB_WORKSPACE/.github/workflows/composer-${MAGENTO_VERSION}.sh" && source "$GITHUB_WORKSPACE/.github/workflows/composer-${MAGENTO_VERSION}.sh"
100+
101+
composer config repositories.local-source path "$GITHUB_WORKSPACE"
102+
composer require --prefer-source -- "${COMPOSER_NAME}:@dev" loki-checkout/magento2-functional-tests:@dev yireo/magento2-enable-module-sequence
103+
104+
source "$GITHUB_WORKSPACE/.github/workflows/magento-install.sh"
105+
106+
bin/magento module:enable Yireo_EnableModuleSequence
107+
bin/magento module:sequence LokiCheckout_FunctionalTests
108+
bin/magento module:sequence "${MAGENTO_MODULE}"
109+
bin/magento setup:upgrade
110+
111+
magerun2 config:store:set loki_functional_tests/general/token loki -n
112+
113+
cd vendor/loki-checkout/magento2-functional-tests/Test/Playwright/
114+
115+
npm install
116+
npx playwright install
117+
118+
touch .env
119+
echo "TEST_URL=${MAGENTO_BASE_URL}" >> .env
120+
echo "TEST_TOKEN=loki" >> .env
121+
122+
npx playwright test --project="${MAGENTO_MODULE}"

.github/workflows/static-tests.yml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,14 @@ jobs:
3939
composer config --auth gitlab-token.gitlab.yireo.com ${{ secrets.GITLAB_TOKEN }}
4040
composer config repositories.loki-checkout composer https://gitlab.yireo.com/api/v4/group/loki-checkout/-/packages/composer/packages.json
4141
42+
- name: Setting up module variables
43+
run: |
44+
echo COMPOSER_NAME=`jq '.name' composer.json -r` >> $GITHUB_ENV
45+
echo MAGENTO_MODULE=`jq '.module_name' MODULE.json -r` >> $GITHUB_ENV
46+
4247
- name: Add module source
4348
run: |
44-
export COMPOSER_NAME=`cat .module.ini | grep COMPOSER_NAME | cut -f2 -d= | tr -d '"'`
45-
export COMPOSER_DEV_REQUIREMENTS=`jq -r '.["require-dev"] // {} | to_entries | map("\(.key):\(.value)") | join(" ")' composer.json`
49+
COMPOSER_DEV_REQUIREMENTS=`jq -r '.["require-dev"] // {} | to_entries | map("\(.key):\(.value)") | join(" ")' composer.json`
4650
cp -R ${GITHUB_WORKSPACE} /tmp/magento/package-source
4751
cd /tmp/magento
4852
composer config repositories.local-source path package-source/
@@ -54,12 +58,11 @@ jobs:
5458
5559
- name: Run Magento 2 PHPStan Tests
5660
run: |
57-
export COMPOSER_NAME=`cat .module.ini | grep COMPOSER_NAME | cut -f2 -d= | tr -d '"'`
58-
export PHPSTAN_LEVEL=$(jq -r '.phpstan_level // 1' MODULE.json)
61+
PHPSTAN_LEVEL=$(jq -r '.phpstan_level // 1' MODULE.json)
5962
test -z "$PHPSTAN_LEVEL" && PHPSTAN_LEVEL=1
6063
test -f /tmp/magento/phpstan.neon || echo 'parameters:' > /tmp/magento/phpstan.neon
6164
echo "Testing for PHPStan level $PHPSTAN_LEVEL"
6265
cd /tmp/magento
63-
export MODULE_PATH=$(realpath vendor/${COMPOSER_NAME})
66+
MODULE_PATH=$(realpath vendor/${COMPOSER_NAME})
6467
php -d memory_limit=4G vendor/bin/phpstan analyse --level $PHPSTAN_LEVEL $MODULE_PATH
6568

0 commit comments

Comments
 (0)