Skip to content

[Tests]: Add strategy matrix to cover all the versions and mysql engine #8

[Tests]: Add strategy matrix to cover all the versions and mysql engine

[Tests]: Add strategy matrix to cover all the versions and mysql engine #8

name: Test Pimcore Demo with upgrade to latest dev version
on:
schedule:
- cron: '0 3 * * 1,3,5'
pull_request:
branches:
- "[0-9]+.[0-9]+"
- "[0-9]+.x"
push:
branches:
- "[0-9]+.[0-9]+"
- "[0-9]+.x"
- "*_actions"
jobs:
test-pimcore-demo:
runs-on: ubuntu-latest
steps:
# Check out the repo in a sub-dir to see if it can serve as
# template for `composer create-project`
# See: https://github.com/actions/checkout#usage
- uses: actions/checkout@v2
with:
path: 'demo'
- name: Pull latest pimcore image
run: |
# Echo commands and terminate on first error
set -ex
# Pull latest build of pimcore's image
docker pull docker.io/pimcore/pimcore:php8.2-latest
- name: Create project from demo in latest pimcore environment
run: |
# Echo commands and terminate on first error
set -ex
# Try creating a new project with composer using contents of this repo as the package.
# We execute composer within docker container to satisfy platform requirements.
# The value of ´"url":` must match checkout path in the first step.
#
# See: https://getcomposer.org/doc/03-cli.md#create-project
# See: https://getcomposer.org/doc/05-repositories.md#path
docker run \
--volume=${{ github.workspace }}/:/test/ \
--workdir=/test/ \
--user=$(id -u):$(id -g) \
docker.io/pimcore/pimcore:php8.2-latest \
composer create-project \
pimcore/demo:@dev \
--repository='{"type": "path", "url": "./demo"}' \
sample-project
- name: Smoke-test compose file
run: |
# Echo commands and terminate on first error
set -ex
# Check (lint) the compose file
docker-compose -v
cd sample-project/
docker-compose config
- name: Test pimcore installation
run: |
# Echo commands and terminate on first error
set -ex
cd sample-project/
# Start containers
docker-compose pull --quiet
docker-compose down -v --remove-orphans
docker-compose up -d
# Install dockerize into the php container. We need it to block until
# database is ready to serve connections.
docker-compose exec -T -- php bash -c '\
curl -sfL https://github.com/powerman/dockerize/releases/download/v0.11.5/dockerize-`uname -s`-`uname -m` \
| install /dev/stdin /usr/local/bin/dockerize'
# Wait for the database to set up.
docker-compose exec -T -- php dockerize -wait tcp://db:3306 -timeout 5m
# Run pimcore installation.
docker-compose exec -T \
-e PIMCORE_INSTALL_ADMIN_USERNAME=pimcore \
-e PIMCORE_INSTALL_ADMIN_PASSWORD=pimcore \
-e PIMCORE_INSTALL_MYSQL_USERNAME=pimcore \
-e PIMCORE_INSTALL_MYSQL_PASSWORD=pimcore \
-- \
php vendor/bin/pimcore-install -n --mysql-host-socket=db --mysql-database=pimcore
# Change owner
sudo chown -R www-data .
# Check if website is reachable
response=$(docker-compose exec -T -- php bash -c 'curl -s "nginx:80"')
if [[ ! $response =~ "Satisfaction" ]]; then
echo "Install failed, skipping build"
exit 1;
fi
# Upgrade to latest dev branch and re-test
docker-compose exec -T -- php rm composer.lock
docker-compose exec -T -- php composer config minimum-stability dev
docker-compose exec -T -- php composer require -n "pimcore/pimcore:11.x-dev as 11.99.99"
# Check if website with latest dev version is reachable
response=$(docker-compose exec -T -- php bash -c 'curl -s "nginx:80"')
if [[ ! $response =~ "Satisfaction" ]]; then
echo "Install upgrade failed, skipping build"
exit 2;
fi
docker-compose down -v --remove-orphans