diff --git a/.github/workflows/pimcore-demo.yml b/.github/workflows/pimcore-demo.yml new file mode 100644 index 00000000..8a1b2d39 --- /dev/null +++ b/.github/workflows/pimcore-demo.yml @@ -0,0 +1,91 @@ +name: Test Pimcore Demo + +on: + 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 + # teplate 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.1-fpm + + - 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 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:PHP8.1-fpm \ + 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 up -d + + # Install dockerize into the php-fpm container. We need it to block until + # database is ready to serve connections. + docker-compose exec -T -- php-fpm 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-fpm 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-fpm vendor/bin/pimcore-install -n --mysql-host-socket=db --mysql-database=pimcore