ci(*): Fix for ddev 1.23.5 #41
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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' |