Skip to content

ci(*): Fix for ddev 1.23.5 #41

ci(*): Fix for ddev 1.23.5

ci(*): Fix for ddev 1.23.5 #41

name: Installation and Varnish tests
on:
push:
branches:
- main
paths-ignore:
- '**.md'
workflow_dispatch:
inputs:
debug_enabled:
type: boolean
description: Debug with tmate
default: false
permissions:
contents: read
env:
# Allow ddev get to use a GitHub token to prevent rate limiting by tests
DDEV_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
installation-and-varnish-test-suite:
strategy:
fail-fast: false
matrix:
# Last patch for the current and previous minor, greatest php version
include:
- m2-version: '2.3.7'
php-version: '7.4'
- m2-version: '2.4.7'
php-version: '8.3'
name: Installation and Varnish test suite
# @see https://devdocs.magento.com/marketplace/sellers/installation-and-varnish-tests.html
runs-on: ubuntu-latest
if: ${{ !contains(github.event.head_commit.message, 'chore(') }}
env:
EXTENSION_PACKAGE_NAME: "crowdsec/magento2-module-bouncer"
EXTENSION_NAME: "CrowdSec_Bouncer"
EXTENSION_PATH: "crowdsec-bouncer"
steps:
- name: Install Magento 2 with DDEV
uses: julienloizelet/magento2-ddev-installation@v3
id: magento2-install
with:
php_version: ${{ matrix.php-version }}
magento_version: ${{ matrix.m2-version }}
composer_auth: ${{ secrets.M2_COMPOSER_AUTH }}
magento_repository: "https://repo.magento.com/"
varnish_setup: "true"
- name: Clone M2 ${{ env.EXTENSION_NAME }} files
uses: actions/checkout@v4
with:
path: my-own-modules/${{ env.EXTENSION_PATH }}
- name: Prepare composer repositories
run: |
ddev exec --raw composer config --unset repositories.0
ddev exec --raw composer config repositories.0 '{"type": "path", "url":"my-own-modules/${{ env.EXTENSION_PATH }}/", "canonical": true}'
ddev exec --raw composer config repositories.1 '{"type": "composer", "url":"https://repo.magento.com/", "exclude": ["${{ env.EXTENSION_PACKAGE_NAME }}", "magento/composer-dependency-version-audit-plugin"]}'
- name: Add ${{ env.EXTENSION_NAME }} as composer dependency
run: ddev composer require ${{ env.EXTENSION_PACKAGE_NAME }}:@dev --no-interaction
- name: Installation tests
# @see https://developer.adobe.com/commerce/marketplace/guides/sellers/installation-and-varnish-tests/#what-is-being-checked
run: |
ddev magento module:enable ${{ env.EXTENSION_NAME }}
ddev magento setup:upgrade
# ddev magento setup:di:compile (done while setting production mode later)
ddev magento setup:static-content:deploy -f
ddev magento deploy:mode:set production
ddev magento indexer:reindex
- name: Prepare for Varnish tests
run: |
ddev magento config:set system/full_page_cache/caching_application 2
ddev magento setup:performance:generate-fixtures ./varnish-profile.xml
- name: Disable some extensions for 2.4.7
if: startsWith(matrix.m2-version, '2.4.7')
run: |
ddev magento maintenance:enable
ddev magento module:disable --clear-static-content Magento_AdminAdobeImsTwoFactorAuth
ddev magento setup:static-content:deploy -f
ddev magento maintenance:disable
- name: Disable some extensions for 2.4
if: startsWith(matrix.m2-version, '2.4')
run: |
ddev magento maintenance:enable
ddev magento module:disable --clear-static-content Magento_TwoFactorAuth
ddev magento setup:static-content:deploy -f
ddev magento maintenance:disable
- name: Varnish MISS and HIT test
# @see https://developer.adobe.com/commerce/marketplace/guides/sellers/installation-and-varnish-tests/#varnish-test-execution
run: |
# TEST 1
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/simple-product-1.html > curl_response.txt
# Some debug for the first call (503, report)
HTTP_CODE=$(grep -oP "^HTTP\K(.*)$" curl_response.txt)
if [[ "$HTTP_CODE" != *"200"* ]]
then
echo "Bad HTTP code : ${HTTP_CODE}"
cat curl_response.txt
fi
LOG_NUM=$(grep -oP "Error log record number: \K(.*)$" curl_response.txt | sed 's,</p>,,')
if [[ -n "$LOG_NUM" ]]
then
cat var/report/${LOG_NUM}
fi
if [[ "$HTTP_CODE" != *"200"* ]]
then
# try to restart
ddev restart
ddev replace-acl $(ddev find-ip ddev-router)
ddev reload-vcl
sleep 2
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/simple-product-1.html > curl_response.txt
fi
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:MISS"* ]]
then
echo "Test 1 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 1 OK"
fi
sleep 1
# TEST 2
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/simple-product-1.html > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:HIT"* ]]
then
echo "Test 2 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 2 OK"
fi
sleep 1
# TEST 3
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/simple-product-2.html > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:MISS"* ]]
then
echo "Test 3 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 3 OK"
fi
sleep 1
# TEST 4
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/simple-product-2.html > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:HIT"* ]]
then
echo "Test 4 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 4 OK"
fi
sleep 1
# TEST 5
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/simple-product-3.html > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:MISS"* ]]
then
echo "Test 5 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 5 OK"
fi
sleep 1
#TEST 6
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/simple-product-3.html > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:HIT"* ]]
then
echo "Test 6 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 6 OK"
fi
sleep 1
# TEST 7
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/category-1.html > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:MISS"* ]]
then
echo "Test 7 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 7 OK"
fi
sleep 1
# TEST 8
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/category-1.html > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:HIT"* ]]
then
echo "Test 8 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 8 OK"
fi
sleep 1
# TEST 9
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/category-2.html > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:MISS"* ]]
then
echo "Test 9 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 9 OK"
fi
sleep 1
# TEST 10
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/category-2.html > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:HIT"* ]]
then
echo "Test 10 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 10 OK"
fi
sleep 1
# TEST 11
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }} > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:MISS"* ]]
then
echo "Test 11 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 11 OK"
fi
sleep 1
# TEST 12
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }} > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:HIT"* ]]
then
echo "Test 12 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 12 OK"
fi
- name: Varnish product update test
run: |
cp .ddev/okaeli-add-on/magento2/custom_scripts/update-product-price.sh update-product-price.sh
chmod +x update-product-price.sh
ddev exec ./update-product-price.sh ${{ steps.magento2-install.outputs.m2_url }} product_dynamic_1
ddev exec ./update-product-price.sh ${{ steps.magento2-install.outputs.m2_url }} product_dynamic_2
ddev exec ./update-product-price.sh ${{ steps.magento2-install.outputs.m2_url }} product_dynamic_3
# TEST 1
VERIF=$(curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/simple-product-1.html | grep -E "^x-eqp-cache:" | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:MISS"* ]]
then
echo "Test 1 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 1 OK"
fi
sleep 1
# TEST 2
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/simple-product-1.html > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:HIT"* ]]
then
echo "Test 2 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 2 OK"
fi
sleep 1
# TEST 3
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/simple-product-2.html > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:MISS"* ]]
then
echo "Test 3 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 3 OK"
fi
sleep 1
# TEST 4
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/simple-product-2.html > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:HIT"* ]]
then
echo "Test 4 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 4 OK"
fi
sleep 1
# TEST 5
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/simple-product-3.html > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:MISS"* ]]
then
echo "Test 5 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 5 OK"
fi
sleep 1
# TEST 6
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }}/simple-product-3.html > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:HIT"* ]]
then
echo "Test 6 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 6 OK"
fi
- name: Varnish FPC clean test
run: |
ddev magento cache:clean full_page
# TEST 1
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }} > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:MISS"* ]]
then
echo "Test 1 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 1 OK"
fi
sleep 1
# TEST 2
curl -sSLD - ${{ steps.magento2-install.outputs.m2_url }} > curl_response.txt
VERIF=$(grep -E "^x-eqp-cache:" curl_response.txt | sed 's/ //g')
if [[ $VERIF != *"x-eqp-cache:HIT"* ]]
then
echo "Test 2 failed"
echo "Bad Varnish x-eqp-cache : ${VERIF}"
exit 1
else
echo "Test 2 OK"
fi
- name: Debug with tmate
uses: mxschmitt/action-tmate@v3
with:
limit-access-to-actor: true
github-token: ${{ secrets.GITHUB_TOKEN }}
timeout-minutes: 30
if: failure() && github.event.inputs.debug_enabled == 'true'