START: 2026-09-22 16:07:34 +---------------------------------------------+ [TASK]: Set vars [CMD]: export HOME=/home/srhwebcloster STDOUT: STDERR: EXIT: 0 [CMD]: SCRIPTS_PATH=/home/srhwebcloster/scripts STDOUT: STDERR: EXIT: 0 [CMD]: COMPOSER_PATH=$SCRIPTS_PATH/composer STDOUT: STDERR: EXIT: 0 [CMD]: PHP_BIN=/usr/local/bin/php STDOUT: STDERR: EXIT: 0 [CMD]: REPO_PATH=/home/srhwebcloster/repositories/deshi-dht-backend STDOUT: STDERR: EXIT: 0 [CMD]: DOTFILES_PATH=/home/srhwebcloster/repositories/deshi-dht-backend-dotfiles STDOUT: STDERR: EXIT: 0 [CMD]: PROJECT_PATH=/home/srhwebcloster/api.srh.webcloster.com STDOUT: STDERR: EXIT: 0 [CMD]: SHARED_PATH=/home/srhwebcloster/shared STDOUT: STDERR: EXIT: 0 [CMD]: DEPLOY_BRANCH=main STDOUT: STDERR: EXIT: 0 +---------------------------------------------+ [TASK]: Check composer [CMD]: if [ -f "$COMPOSER_PATH" ]; then echo "Composer already exists in this directory." else echo "Downloading Composer..." $PHP_BIN -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" $PHP_BIN -r "if (hash_file('sha384', 'composer-setup.php') === 'c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47') { echo 'Installer verified'.PHP_EOL; } else { echo 'Installer corrupt'.PHP_EOL; unlink('composer-setup.php'); exit(1); }" $PHP_BIN composer-setup.php $PHP_BIN -r "unlink('composer-setup.php');" mv composer.phar $COMPOSER_PATH echo "Composer downloaded as $COMPOSER_PATH" fi STDOUT: Composer already exists in this directory. STDERR: EXIT: 0 +---------------------------------------------+ [TASK]: Check init repo [CMD]: if [ -d "$REPO_PATH/.git" ]; then echo "Repo ready." else git clone \ "$DEPLOY_REPO_URL" \ "$REPO_PATH"_tmp rm -rf "$REPO_PATH" mv "$REPO_PATH"_tmp "$REPO_PATH" fi STDOUT: Repo ready. STDERR: EXIT: 0 +---------------------------------------------+ [TASK]: Check repo [CMD]: cd $REPO_PATH STDOUT: STDERR: EXIT: 0 [CMD]: git fetch --all --prune STDOUT: Fetching origin STDERR: EXIT: 0 [CMD]: git checkout $DEPLOY_BRANCH STDOUT: Fetching origin STDERR: Already on 'main' EXIT: 0 [CMD]: git reset --hard origin/$DEPLOY_BRANCH STDOUT: Fetching origin HEAD is now at fe4223f Merge branch 'development' into 'main' STDERR: Already on 'main' EXIT: 0 +---------------------------------------------+ [TASK]: Prepare shared state [CMD]: mkdir -p "$SHARED_PATH/storage" "$SHARED_PATH/logs" if [ -d "$PROJECT_PATH/storage" ] && [ ! -L "$PROJECT_PATH/storage" ]; then echo "Rescuing uploads left in the project directory..." cp -a "$PROJECT_PATH/storage/." "$SHARED_PATH/storage/" || true fi if [ -d "$PROJECT_PATH/logs" ] && [ ! -L "$PROJECT_PATH/logs" ]; then echo "Rescuing logs left in the project directory..." cp -a "$PROJECT_PATH/logs/." "$SHARED_PATH/logs/" || true fi chmod 775 "$SHARED_PATH/storage" "$SHARED_PATH/logs" STDOUT: STDERR: EXIT: 0 +---------------------------------------------+ [TASK]: Remove old content [CMD]: cd $PROJECT_PATH STDOUT: STDERR: EXIT: 0 [CMD]: rm -rf ./* ./.??* STDOUT: STDERR: EXIT: 0 +---------------------------------------------+ [TASK]: Copy entire content [CMD]: cd $REPO_PATH STDOUT: STDERR: EXIT: 0 [CMD]: echo "Start copy" STDOUT: Start copy STDERR: EXIT: 0 [CMD]: tar \ --exclude='.git' \ --exclude='.env.*' \ --exclude='./storage' \ --exclude='./logs' \ --exclude='./deploy' \ --exclude='Containerfile' \ --exclude='Dockerfile' \ --exclude='docker-entrypoint.sh' \ --exclude='.gitlab-ci.yml' \ --exclude='.gitignore' \ --exclude='*.md' \ --exclude='container-compose.yml' \ --exclude='*.sql' \ -cf - ./* ./.??* | tar --no-same-permissions -xf - -C "$PROJECT_PATH/" STDOUT: Start copy STDERR: EXIT: 0 +---------------------------------------------+ [TASK]: Change permissions [CMD]: cd $PROJECT_PATH STDOUT: STDERR: EXIT: 0 [CMD]: chmod -R 755 ./ STDOUT: STDERR: EXIT: 0 +---------------------------------------------+ [TASK]: Link persistent directories [CMD]: ln -sfn "$SHARED_PATH/storage" "$PROJECT_PATH/storage" ln -sfn "$SHARED_PATH/logs" "$PROJECT_PATH/logs" ls -ld "$PROJECT_PATH/storage" "$PROJECT_PATH/logs" STDOUT: lrwxrwxrwx 1 srhwebcloster srhwebcloster 31 Sep 22 11:07 /home/srhwebcloster/api.srh.webcloster.com/logs -> /home/srhwebcloster/shared/logs lrwxrwxrwx 1 srhwebcloster srhwebcloster 34 Sep 22 11:07 /home/srhwebcloster/api.srh.webcloster.com/storage -> /home/srhwebcloster/shared/storage STDERR: EXIT: 0 +---------------------------------------------+ [TASK]: Install dependencies [CMD]: cd $PROJECT_PATH STDOUT: STDERR: EXIT: 0 [CMD]: $PHP_BIN $COMPOSER_PATH i --no-dev --optimize-autoloader STDOUT: STDERR: Composer could not detect the root package (slim/slim-skeleton) version, defaulting to '1.0.0'. See https://getcomposer.org/root-version Installing dependencies from lock file Verifying lock file contents can be installed on current platform. Package operations: 56 installs, 0 updates, 0 removals 0 [>---------------------------] 0 [->--------------------------] - Installing aws/aws-crt-php (v1.2.7): Extracting archive - Installing psr/clock (1.0.0): Extracting archive - Installing cakephp/chronos (3.5.0): Extracting archive - Installing psr/simple-cache (3.0.0): Extracting archive - Installing psr/container (2.0.2): Extracting archive - Installing psr/event-dispatcher (1.0.0): Extracting archive - Installing league/container (5.2.0): Extracting archive - Installing cakephp/core (5.3.6): Extracting archive - Installing cakephp/utility (5.3.6): Extracting archive - Installing cakephp/datasource (5.3.6): Extracting archive - Installing firebase/php-jwt (v7.0.5): Extracting archive - Installing symfony/polyfill-php80 (v1.37.0): Extracting archive - Installing symfony/deprecation-contracts (v3.7.0): Extracting archive - Installing psr/http-message (2.0): Extracting archive - Installing psr/http-client (1.0.3): Extracting archive - Installing ralouphie/getallheaders (3.0.3): Extracting archive - Installing psr/http-factory (1.1.0): Extracting archive - Installing guzzlehttp/psr7 (2.12.3): Extracting archive - Installing guzzlehttp/promises (2.5.0): Extracting archive - Installing guzzlehttp/guzzle (7.13.2): Extracting archive - Installing league/mime-type-detection (1.16.0): Extracting archive - Installing league/flysystem (3.35.2): Extracting archive - Installing league/flysystem-local (3.31.0): Extracting archive - Installing symfony/polyfill-mbstring (v1.38.1): Extracting archive - Installing symfony/polyfill-ctype (v1.37.0): Extracting archive - Installing symfony/filesystem (v7.4.11): Extracting archive - Installing mtdowling/jmespath.php (2.9.2): Extracting archive - Installing aws/aws-sdk-php (3.388.0): Extracting archive - Installing league/flysystem-aws-s3-v3 (3.35.2): Extracting archive - Installing psr/log (3.0.2): Extracting archive - Installing monolog/monolog (2.11.0): Extracting archive - Installing nette/utils (v4.1.4): Extracting archive - Installing nette/mail (v4.1.2): Extracting archive - Installing php-di/invoker (2.3.7): Extracting archive - Installing laravel/serializable-closure (v2.0.13): Extracting archive - Installing php-di/php-di (7.1.1): Extracting archive - Installing predis/predis (v3.5.0): Extracting archive - Installing symfony/polyfill-intl-normalizer (v1.38.0): Extracting archive - Installing symfony/polyfill-intl-grapheme (v1.38.1): Extracting archive - Installing symfony/string (v7.4.13): Extracting archive - Installing symfony/service-contracts (v3.7.0): Extracting archive - Installing symfony/console (v7.4.13): Extracting archive - Installing symfony/config (v7.4.10): Extracting archive - Installing cakephp/database (5.3.6): Extracting archive - Installing robmorgan/phinx (0.16.11): Extracting archive - Installing fig/http-message-util (1.1.5): Extracting archive - Installing slim/psr7 (1.8.0): Extracting archive - Installing psr/http-server-handler (1.0.2): Extracting archive - Installing psr/http-server-middleware (1.0.2): Extracting archive - Installing nikic/fast-route (v1.3.0): Extracting archive - Installing slim/slim (4.15.2): Extracting archive - Installing symfony/process (v7.4.13): Extracting archive - Installing phpoption/phpoption (1.9.5): Extracting archive - Installing graham-campbell/result-type (v1.1.4): Extracting archive - Installing vlucas/phpdotenv (v5.6.3): Extracting archive - Installing vlucas/valitron (v1.4.11): Extracting archive 0/56 [>---------------------------] 0% 10/56 [=====>----------------------] 17% 20/56 [==========>-----------------] 35% 28/56 [==============>-------------] 50% 29/56 [==============>-------------] 51% 35/56 [=================>----------] 62% 37/56 [==================>---------] 66% 44/56 [======================>-----] 78% 46/56 [=======================>----] 82% 48/56 [========================>---] 85% 53/56 [==========================>-] 94% 55/56 [===========================>] 98% 56/56 [============================] 100% Generating optimized autoload files 26 packages you are using are looking for funding. Use the `composer fund` command to find out more! EXIT: 0 [CMD]: echo "ALL DONE" STDOUT: ALL DONE STDERR: Composer could not detect the root package (slim/slim-skeleton) version, defaulting to '1.0.0'. See https://getcomposer.org/root-version Installing dependencies from lock file Verifying lock file contents can be installed on current platform. Package operations: 56 installs, 0 updates, 0 removals 0 [>---------------------------] 0 [->--------------------------] - Installing aws/aws-crt-php (v1.2.7): Extracting archive - Installing psr/clock (1.0.0): Extracting archive - Installing cakephp/chronos (3.5.0): Extracting archive - Installing psr/simple-cache (3.0.0): Extracting archive - Installing psr/container (2.0.2): Extracting archive - Installing psr/event-dispatcher (1.0.0): Extracting archive - Installing league/container (5.2.0): Extracting archive - Installing cakephp/core (5.3.6): Extracting archive - Installing cakephp/utility (5.3.6): Extracting archive - Installing cakephp/datasource (5.3.6): Extracting archive - Installing firebase/php-jwt (v7.0.5): Extracting archive - Installing symfony/polyfill-php80 (v1.37.0): Extracting archive - Installing symfony/deprecation-contracts (v3.7.0): Extracting archive - Installing psr/http-message (2.0): Extracting archive - Installing psr/http-client (1.0.3): Extracting archive - Installing ralouphie/getallheaders (3.0.3): Extracting archive - Installing psr/http-factory (1.1.0): Extracting archive - Installing guzzlehttp/psr7 (2.12.3): Extracting archive - Installing guzzlehttp/promises (2.5.0): Extracting archive - Installing guzzlehttp/guzzle (7.13.2): Extracting archive - Installing league/mime-type-detection (1.16.0): Extracting archive - Installing league/flysystem (3.35.2): Extracting archive - Installing league/flysystem-local (3.31.0): Extracting archive - Installing symfony/polyfill-mbstring (v1.38.1): Extracting archive - Installing symfony/polyfill-ctype (v1.37.0): Extracting archive - Installing symfony/filesystem (v7.4.11): Extracting archive - Installing mtdowling/jmespath.php (2.9.2): Extracting archive - Installing aws/aws-sdk-php (3.388.0): Extracting archive - Installing league/flysystem-aws-s3-v3 (3.35.2): Extracting archive - Installing psr/log (3.0.2): Extracting archive - Installing monolog/monolog (2.11.0): Extracting archive - Installing nette/utils (v4.1.4): Extracting archive - Installing nette/mail (v4.1.2): Extracting archive - Installing php-di/invoker (2.3.7): Extracting archive - Installing laravel/serializable-closure (v2.0.13): Extracting archive - Installing php-di/php-di (7.1.1): Extracting archive - Installing predis/predis (v3.5.0): Extracting archive - Installing symfony/polyfill-intl-normalizer (v1.38.0): Extracting archive - Installing symfony/polyfill-intl-grapheme (v1.38.1): Extracting archive - Installing symfony/string (v7.4.13): Extracting archive - Installing symfony/service-contracts (v3.7.0): Extracting archive - Installing symfony/console (v7.4.13): Extracting archive - Installing symfony/config (v7.4.10): Extracting archive - Installing cakephp/database (5.3.6): Extracting archive - Installing robmorgan/phinx (0.16.11): Extracting archive - Installing fig/http-message-util (1.1.5): Extracting archive - Installing slim/psr7 (1.8.0): Extracting archive - Installing psr/http-server-handler (1.0.2): Extracting archive - Installing psr/http-server-middleware (1.0.2): Extracting archive - Installing nikic/fast-route (v1.3.0): Extracting archive - Installing slim/slim (4.15.2): Extracting archive - Installing symfony/process (v7.4.13): Extracting archive - Installing phpoption/phpoption (1.9.5): Extracting archive - Installing graham-campbell/result-type (v1.1.4): Extracting archive - Installing vlucas/phpdotenv (v5.6.3): Extracting archive - Installing vlucas/valitron (v1.4.11): Extracting archive 0/56 [>---------------------------] 0% 10/56 [=====>----------------------] 17% 20/56 [==========>-----------------] 35% 28/56 [==============>-------------] 50% 29/56 [==============>-------------] 51% 35/56 [=================>----------] 62% 37/56 [==================>---------] 66% 44/56 [======================>-----] 78% 46/56 [=======================>----] 82% 48/56 [========================>---] 85% 53/56 [==========================>-] 94% 55/56 [===========================>] 98% 56/56 [============================] 100% Generating optimized autoload files 26 packages you are using are looking for funding. Use the `composer fund` command to find out more! EXIT: 0 +---------------------------------------------+ [TASK]: Copy the dotfiles [CMD]: cd $DOTFILES_PATH STDOUT: STDERR: EXIT: 0 [CMD]: cp -r ./ $PROJECT_PATH STDOUT: STDERR: EXIT: 0 +---------------------------------------------+ [TASK]: Run master migrations [CMD]: cd $PROJECT_PATH STDOUT: STDERR: EXIT: 0 [CMD]: $PHP_BIN vendor/bin/phinx migrate -c phinx.master.php STDOUT: Phinx by CakePHP - https://phinx.org. 0.16.11 using config file phinx.master.php using config parser php using migration paths - /home/srhwebcloster/api.srh.webcloster.com/database/master_migrations using seed paths - /home/srhwebcloster/api.srh.webcloster.com/database/master_seeds warning no environment specified, defaulting to: master using adapter mysql using database srhwebcloster_master ordering by creation time All Done. Took 0.0336s STDERR: EXIT: 0 +---------------------------------------------+ [TASK]: Run tenant migrations [CMD]: cd $PROJECT_PATH STDOUT: STDERR: EXIT: 0 [CMD]: $PHP_BIN bin/migrate-tenants.php STDOUT: [2026-09-22T16:08:36+00:00] migrating tenant=zapato-real-demo db=srhwebcloster_zapato_real_demo Phinx by CakePHP - https://phinx.org. 0.16.11 using config file phinx.tenant.php using config parser php using migration paths - /home/srhwebcloster/api.srh.webcloster.com/database/migrations using seed paths - /home/srhwebcloster/api.srh.webcloster.com/database/seeds warning no environment specified, defaulting to: tenant using adapter mysql using database srhwebcloster_zapato_real_demo ordering by creation time All Done. Took 0.0245s [2026-09-22T16:08:37+00:00] done migrated=1 errors=0 STDERR: EXIT: 0 +---------------------------------------------+ [TASK]: Seed root super admin [CMD]: cd $PROJECT_PATH STDOUT: STDERR: EXIT: 0 [CMD]: $PHP_BIN vendor/bin/phinx seed:run -c phinx.master.php -s SuperAdminSeed STDOUT: Phinx by CakePHP - https://phinx.org. 0.16.11 using config file phinx.master.php using config parser php using migration paths - /home/srhwebcloster/api.srh.webcloster.com/database/master_migrations using seed paths - /home/srhwebcloster/api.srh.webcloster.com/database/master_seeds warning no environment specified, defaulting to: master using adapter mysql using database srhwebcloster_master == SuperAdminSeed: seeding == SuperAdminSeed: seeded 0.0167s All Done. Took 0.0184s STDERR: EXIT: 0 +---------------------------------------------+ [TASK]: Verify persistent state [CMD]: cd $PROJECT_PATH if [ ! -w "$SHARED_PATH/storage" ]; then echo "FATAL: $SHARED_PATH/storage is not writable." exit 1 fi if [ ! -w "$SHARED_PATH/logs" ]; then echo "FATAL: $SHARED_PATH/logs is not writable." exit 1 fi echo "Persistent state OK." STDOUT: Persistent state OK. STDERR: EXIT: 0 ============================================= END. Duration: 63.41s