Skip to content

Test Pimcore Demo

Test Pimcore Demo #944

Workflow file for this run

name: Test Pimcore Demo
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
continue-on-error: ${{ matrix.experimental }}
strategy:
matrix:
include:
- { php-version: 8.3, database: "mariadb:10.11", pimcore_version: "", experimental: true }
- { php-version: 8.3, database: "mariadb:10.11", pimcore_version: "", pimcore_upgrade_version: "11.x-dev as 11.3.99", experimental: true }
- { php-version: 8.3, database: "mysql:latest", pimcore_version: "", experimental: true }
- { php-version: 8.3, database: "mysql:latest", pimcore_version: "", pimcore_upgrade_version: "11.x-dev as 11.3.99", experimental: true }
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
env:
PHP_VERSION: "${{ matrix.php-version }}"
run: |
# Echo commands and terminate on first error
set -ex
# Pull latest build of pimcore's image
docker pull docker.io/pimcore/pimcore:php"${PHP_VERSION}"-latest
- name: Create project from demo in latest pimcore environment
env:
PHP_VERSION: "${{ matrix.php-version }}"
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 suttisfy 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:php"${PHP_VERSION}"-latest \
composer create-project \
pimcore/demo:@dev \
--repository='{"type": "path", "url": "./demo"}' \
--no-install \
sample-project
- name: Smoke-test compose file
env:
DOCKER_DATABASE: "${{ matrix.database }}"
run: |
# Echo commands and terminate on first error
set -ex
# Check (lint) the compose file
docker compose version
cd sample-project/
docker compose -f docker-compose.yaml -f .github/ci/files/docker-compose.yaml config
- name: Test pimcore installation
env:
PIMCORE_VERSION: "${{ matrix.pimcore_version }}"
DOCKER_DATABASE: "${{ matrix.database }}"
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 -f docker-compose.yaml -f .github/ci/files/docker-compose.yaml up -d
if [ ! -z "$PIMCORE_VERSION" ]; then
docker compose exec -T -- php composer require --no-update pimcore/pimcore:"${PIMCORE_VERSION}"
fi
docker compose exec -T -- php composer update --no-scripts
# 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
- name: Test pimcore upgrade
if: ${{ matrix.pimcore_upgrade_version != '' }}
env:
UPGRADE_VERSION: "${{ matrix.pimcore_upgrade_version }}"
run: |
# Echo commands and terminate on first error
set -ex
cd sample-project/
docker compose exec -T -- php composer remove pimcore/platform-version --no-update
docker compose exec -T -- php composer require pimcore/pimcore:"${UPGRADE_VERSION}" --with-all-dependencies
# Run pimcore migration.
docker compose exec -T -- php ./bin/console doctrine:migrations:migrate
# Check if website is reachable, after upgrade
response=$(docker compose exec -T -- php bash -c 'curl -s "nginx:80"')
if [[ ! $response =~ "Satisfaction" ]]; then
echo "Install failed, skipping build"
exit 1;
fi
- name: Compose down
run: |
cd sample-project/
docker compose down -v --remove-orphans