Skip to content

Commit d88085e

Browse files
authored
Merge pull request #255 from pimcore/installer_profile
Migrate skeleton to Studio UI with installer profile
2 parents 7ca5b4b + b91808c commit d88085e

16 files changed

Lines changed: 249 additions & 131 deletions

.docker/nginx.conf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,11 @@ server {
8686
deny all;
8787
}
8888

89+
# Proxy Mercure hub through nginx (same-origin, no CORS needed)
90+
location /hub {
91+
proxy_pass http://mercure/.well-known/mercure;
92+
}
93+
8994
# Some Admin Modules need this:
9095
# Server Info, Opcache
9196
location ~* ^/admin/external {

.docker/supervisord.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Important Notice: this configuration is not optimized for production use!
33

44
[program:messenger-consume]
5-
command=php /var/www/html/bin/console messenger:consume pimcore_core pimcore_maintenance pimcore_scheduled_tasks pimcore_image_optimize --memory-limit=250M --time-limit=3600
5+
command=php /var/www/html/bin/console messenger:consume pimcore_index_queues pimcore_generic_data_index_queue scheduler_generic_data_index pimcore_core pimcore_maintenance pimcore_scheduled_tasks pimcore_image_optimize pimcore_asset_update pimcore_generic_execution_engine --memory-limit=250M --time-limit=3600
66
numprocs=1
77
startsecs=0
88
autostart=true

.env

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,17 @@ PIMCORE_DEV_MODE=false
2121
#TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
2222
#TRUSTED_HOSTS='^(localhost|example\.com)$'
2323
###< symfony/framework-bundle ###
24+
25+
APPLICATION_SECRET=CHANGE_ME_APPLICATION_SECRET_KEY_LONG_ENOUGH_FOR_VALIDATION
26+
27+
DATABASE_URL=mysql://pimcore:pimcore@db:3306/pimcore
28+
29+
PIMCORE_ADMIN_USER=pimcore
30+
PIMCORE_ADMIN_PASSWORD=pimcore
31+
32+
PIMCORE_OPENSEARCH_DSN=opensearch://admin:gBsVe!Dut723@opensearch:9200?ssl=true&ssl_verify=false
33+
PIMCORE_MESSENGER_TRANSPORT_DSN_PREFIX=amqp://guest:guest@rabbitmq:5672/%2f/
34+
35+
MERCURE_JWT_KEY=CHANGE_ME_THIS_IS_MY_SECRET_KEY_THAT_IS_LONG_ENOUGH_FOR_VALIDATION
36+
MERCURE_URL=http://localhost/hub
37+
MERCURE_SERVER_URL=http://mercure/.well-known/mercure

.github/workflows/pimcore-skeleton.yml

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ jobs:
4040
# We execute composer within docker container to suttisfy platform requirements.
4141
# The value of ´"url":` must match checkout path in the first step.
4242
#
43+
# Using --no-install so dependencies are installed later inside
44+
# docker-compose where infrastructure services (db, etc.) are available.
45+
#
4346
# See: https://getcomposer.org/doc/03-cli.md#create-project
4447
# See: https://getcomposer.org/doc/05-repositories.md#path
4548
docker run \
@@ -50,6 +53,7 @@ jobs:
5053
composer create-project \
5154
pimcore/skeleton:@dev \
5255
--repository='{"type": "path", "url": "./skeleton"}' \
56+
--no-install \
5357
sample-project
5458
5559
- name: Smoke-test compose file
@@ -80,15 +84,27 @@ jobs:
8084
docker compose pull --quiet
8185
docker compose up -d
8286
87+
# Install dependencies inside docker-compose where services are available.
88+
docker compose exec -T -- php composer install
89+
90+
# Install dockerize to wait for services (needs root for /usr/local/bin).
91+
docker compose exec --user=root -T -- php bash -c '\
92+
curl -sfL https://github.com/powerman/dockerize/releases/download/v0.11.5/dockerize-`uname -s`-`uname -m` \
93+
| install /dev/stdin /usr/local/bin/dockerize'
94+
95+
# Wait for infrastructure services to be ready.
96+
docker compose exec -T -- php dockerize -wait tcp://db:3306 -timeout 5m
97+
docker compose exec -T -- php dockerize -wait tcp://opensearch:9200 -timeout 5m
98+
docker compose exec -T -- php dockerize -wait tcp://rabbitmq:5672 -timeout 5m
99+
83100
# Run pimcore installation.
101+
# Product registration secrets come from GitHub secrets.
102+
# Everything else is read from .env.
84103
docker compose exec -T \
85-
-e PIMCORE_INSTALL_ADMIN_USERNAME=pimcore \
86-
-e PIMCORE_INSTALL_ADMIN_PASSWORD=pimcore \
87-
-e PIMCORE_INSTALL_ENCRYPTION_SECRET=${PIMCORE_ENCRYPTION_SECRET} \
88-
-e PIMCORE_INSTALL_INSTANCE_IDENTIFIER=${PIMCORE_INSTANCE_IDENTIFIER} \
89-
-e PIMCORE_INSTALL_PRODUCT_KEY=${PIMCORE_PRODUCT_KEY} \
90-
-- \
91-
php vendor/bin/pimcore-install -n
104+
-e PIMCORE_ENCRYPTION_SECRET="${PIMCORE_ENCRYPTION_SECRET}" \
105+
-e PIMCORE_INSTANCE_IDENTIFIER="${PIMCORE_INSTANCE_IDENTIFIER}" \
106+
-e PIMCORE_PRODUCT_KEY="${PIMCORE_PRODUCT_KEY}" \
107+
-- php vendor/bin/pimcore-install --install-profile=App\\Installer\\SkeletonProfile --no-interaction
92108
93109
- name: Run codeception tests
94110
env:
@@ -104,10 +120,15 @@ jobs:
104120
# Set up and execute codeception tests, just like README.md suggests.
105121
docker compose run --user=root --rm test-php chown -R $(id -u):$(id -g) var/ public/var/
106122
docker compose run --rm -T \
107-
-e PIMCORE_INSTALL_ADMIN_USERNAME=pimcore \
108-
-e PIMCORE_INSTALL_ADMIN_PASSWORD=pimcore \
109-
-e PIMCORE_INSTALL_ENCRYPTION_SECRET=${PIMCORE_ENCRYPTION_SECRET} \
110-
-e PIMCORE_INSTALL_INSTANCE_IDENTIFIER=${PIMCORE_INSTANCE_IDENTIFIER} \
111-
-e PIMCORE_INSTALL_PRODUCT_KEY=${PIMCORE_PRODUCT_KEY} \
112-
test-php vendor/bin/pimcore-install -n
113-
docker compose run --rm -T test-php vendor/bin/codecept run -vv
123+
-e DATABASE_URL=mysql://pimcore:pimcore@test-db:3306/pimcore \
124+
-e PIMCORE_ENCRYPTION_SECRET="${PIMCORE_ENCRYPTION_SECRET}" \
125+
-e PIMCORE_INSTANCE_IDENTIFIER="${PIMCORE_INSTANCE_IDENTIFIER}" \
126+
-e PIMCORE_PRODUCT_KEY="${PIMCORE_PRODUCT_KEY}" \
127+
test-php vendor/bin/pimcore-install --install-profile=App\\Installer\\SkeletonProfile --no-interaction --skip-validation=opensearch --skip-validation=messenger-amqp --skip-validation=mercure
128+
# Product registration secrets must be passed as a matched set —
129+
# the product key is validated against the encryption secret.
130+
docker compose run --rm -T \
131+
-e PIMCORE_ENCRYPTION_SECRET="${PIMCORE_ENCRYPTION_SECRET}" \
132+
-e PIMCORE_INSTANCE_IDENTIFIER="${PIMCORE_INSTANCE_IDENTIFIER}" \
133+
-e PIMCORE_PRODUCT_KEY="${PIMCORE_PRODUCT_KEY}" \
134+
test-php vendor/bin/codecept run -vv

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@
3939

4040
# composer
4141
/vendor/
42+
/auth.json
43+
44+
# docker
45+
/docker-compose.override.yml
46+
47+
# pimcore
48+
/config/reference.php
4249

4350
# PhpStorm / IDEA
4451
.idea

composer.enterprise.json

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,19 @@
1313
"prefer-stable": true,
1414
"minimum-stability": "dev",
1515
"require": {
16-
"php": "~8.3.0 || ~8.4.0",
16+
"php": "~8.4.0 || ~8.5.0",
1717
"pimcore/pimcore": "*",
18-
"pimcore/platform-version": "^2025.0",
19-
"pimcore/admin-ui-classic-bundle": "*",
20-
"symfony/amqp-messenger": "^6.2",
21-
"symfony/dotenv": "^6.2",
22-
"symfony/runtime": "^6.2"
18+
"pimcore/platform-version": "^2026.0",
19+
"pimcore/quill-bundle": "*",
20+
"pimcore/studio-backend-bundle": "*",
21+
"pimcore/studio-ui-bundle": "*",
22+
"symfony/amqp-messenger": "^7.4",
23+
"symfony/dotenv": "^7.4",
24+
"symfony/runtime": "^7.4"
2325
},
2426
"require-dev": {
25-
"codeception/codeception": "^5.0.3",
26-
"codeception/module-symfony": "^3.1.0"
27+
"codeception/codeception": "^5.3",
28+
"codeception/module-symfony": "^3.5"
2729
},
2830
"suggest": {
2931
"pimcore/data-hub": "Universal data interface for GraphQL, CSV and other formats"

composer.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@
1414
"minimum-stability": "dev",
1515
"require": {
1616
"php": "~8.4.0 || ~8.5.0",
17-
"pimcore/pimcore": "2026.x-dev",
18-
"pimcore/platform-version": "2026.x-dev",
19-
"pimcore/admin-ui-classic-bundle": "dev-test-version26",
20-
"pimcore/quill-bundle": "2026.x-dev",
17+
"pimcore/pimcore": "^2026.1.0",
18+
"pimcore/quill-bundle": "^2026.1.0",
19+
"pimcore/studio-ui-bundle": "^0.14.19 || ^1.x-dev || ^2026.1",
20+
"pimcore/studio-backend-bundle": "^0.14.19 || ^1.x-dev || ^2026.1",
2121
"symfony/amqp-messenger": "^7.4",
2222
"symfony/dotenv": "^7.4",
2323
"symfony/runtime": "^7.4"
2424
},
2525
"require-dev": {
26-
"codeception/codeception": "^5.0.3",
27-
"codeception/module-symfony": "^3.1.0"
26+
"codeception/codeception": "^5.3",
27+
"codeception/module-symfony": "^3.5"
2828
},
2929
"suggest": {
3030
"pimcore/data-hub": "Universal data interface for GraphQL, CSV and other formats"

config/bundles.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
<?php
22

33
return [
4-
//Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
4+
Pimcore\Bundle\GenericExecutionEngineBundle\PimcoreGenericExecutionEngineBundle::class => ['all' => true],
5+
Pimcore\Bundle\CustomReportsBundle\PimcoreCustomReportsBundle::class => ['all' => true],
6+
Pimcore\Bundle\GenericDataIndexBundle\PimcoreGenericDataIndexBundle::class => ['all' => true],
7+
Pimcore\Bundle\StudioBackendBundle\PimcoreStudioBackendBundle::class => ['all' => true],
8+
Pimcore\Bundle\StudioUiBundle\PimcoreStudioUiBundle::class => ['all' => true],
9+
Pimcore\Bundle\QuillBundle\PimcoreQuillBundle::class => ['all' => true],
510
];

config/config.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ imports:
33

44

55
pimcore:
6+
documents:
7+
error_pages:
8+
default: ~
9+
localized: []
610

711
# IMPORTANT Notice!
812
# Following there are only some examples listed, for a full list of possible options, please run the following command:
@@ -137,3 +141,14 @@ framework:
137141
# name: ''
138142
# email: ''
139143

144+
pimcore_studio_backend:
145+
mercure_settings:
146+
jwt_key: '%env(MERCURE_JWT_KEY)%'
147+
hub_url_client: '%env(MERCURE_URL)%'
148+
hub_url_server: '%env(MERCURE_SERVER_URL)%'
149+
150+
pimcore_studio_ui:
151+
csp_header:
152+
additional_urls:
153+
connect-src:
154+
- '%env(MERCURE_URL)%'

config/installer.yaml

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)