No VM - How can I get sample data work?


#1

Hi,
I installed the newest Spryker from https://github.com/spryker-shop/b2c-demo-shop. For Training reasons I installed it on Ubuntu and on CentOS.

Both installations do not show any sample content:

composer install and vendor/bin/install do not show any errors.:+1:

I tried

vendor/bin/console transfer:generate
vendor/bin/console setup:init-db
vendor/bin/console setup:search
vendor/bin/console data:import

No luck. I setup Postgres, RabbitMQ, Elasticsearch myself, so maybe there is something wrong, but since vendor/bin/install is fine and the application actually is running fine, I dont know what to do next.

Even ZED is showing products:

Any Ideas?


#2

Hello,

The backend (Zed) is taking data from the database (Postgre SQL), however the frontend reads data from Redis and Elasticsearch for performance considerations. To populate the data from the DB to Redis/ES, Spryker uses a process called Publish and Synchronization. It takes a while to populate the data after initial setup.

Have a look at Rabbit MQ queues (http://zed.de.b2c-demo-shop.local:15672/#/queues). Are there any unprocessed messages in the event queue and any of the sync.storage.* queues? Anything in the event.error queue?


#4

You also need to check jenkins installation, rabbit won’t itself run it’s jobs, something needs to trigger them and that “trigger manager” is jenkins.


#5

Rabbit Queue is full. So I’m going to check Jenkins now.

For Documentation, here is my RabbitMQ Config:


#6

Looks like Jenkins is a big mess :wink: Every job tries to run cd /data/shop/development/current but failed. Do you know how Jenkins got this path? Do I need to edit config_ci.php?
jenkins

EDIT
Running vendor/bin/console queue:worker:start -vvv did the job. :space_invader:
Frontendshop is now filled with products.

Jenkins is still not working, but Mainissue solved for me.
Anyway, I’m going to fix Jenkins now.


#7

the only reference I can find is
\Spryker\Zed\Setup\Communication\Controller\JenkinsController::getCommand
but I cannot find where is the variable of your interest exactly set.

The only thing you need to configure about jenkins is config_local.php

$config[SetupConstants::JENKINS_BASE_URL]
$config[SetupConstants::JENKINS_DIRECTORY]

and it should work fine (checked on my setup) when you install the store via composer install + vendor/bin/install


#8

I do not have a config_local.php.

I found SetupConstants::JENKINS_DIRECTORY in:

config_default-devtest.php
config_default-development.php

I changed the JENKINS_HOME and rebuild. No Success. I think /data/shop/development/current is something which is build with Variables inside the config files.

Since I’m not a Spryker Pro, I set a symlink from /data/shop/development/current to /var/www/spryker/demoshop. Now Jenkins is working fine. Not a solution for a production system.

Maybe some Spryker Expert can have a look at the wrong Path within the Jenkins configuration files.


#9

Tricky part about all Jenkins commands is a first line:

[ -f /var/www/XXX/current/deploy/vars ] && . /var/www/XXX/current/deploy/vars ]

Please locate this file - <root>/deploy/vars on your system and provide there correct variables to be used during run.
Default one is coming with Spryker.


#10

The suggestion from Andrey will work on non-development environments. For development environment it’s indeed hardcoded at the moment. @csteinhauser - your workaround is correct and at the moment please use it. This issue will be addressed internally and fix will be provided - however I can’t provide any information about ETA.

Best regards,
Marek Obuchowicz
KoreKontrol Germany GmbH - Spryker hosting company


#11

Can you please precise that a little bit. I can’t find a File “vars” on my system. Just searched find / - name "vars".
Is that file from Jenkins Packages or should it be found in the Spryker Directory?


#12

Current state is:

  • if your APPLICATION_ENV==development then the path is hardcoded to /data/shop/development/current and you need to workaround it as you did, by creating a symlink
  • if APPLICATION_ENV != development then you can create a file deploy/vars with contents like:
    destination_release_dir=/data/shop/testing/current - it allows you to override application home directory. This file is usually created automatically during deployment process.

There is an open ticket to actually remove hardcoded /data/shop/development/current if APPLICATION_ENV==development and replace it with APPLICATION_HOME - but it’s not yet released.

Best regards,
Marek Obuchowicz
KoreKontrol Germany GmbH - Spryker hosting company


#13

Good day,

On non-development env:
<project-root> /deploy/vars* - this file is loaded into execution env , when Jenkins job is executed on non-development environment.
Simply create it in your repository or directly on the server.

On a development environment I would suggest to override classes to use correct code snippet for your environment there.

Andrey


#14

Thank you @marekobu & @Andrey_Tkachenko. I’m using the workaround for now, but it’s good to know and maybe this helps some more users how to setup jenkins for spryker.