Skip to content

Commit

Permalink
feat: add retry for installation
Browse files Browse the repository at this point in the history
  • Loading branch information
shyim committed Dec 12, 2024
1 parent dfdfa91 commit 1d4be3e
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 0 deletions.
53 changes: 53 additions & 0 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,59 @@ jobs:
- name: Default Storefront should be available
run: curl -q --fail http://localhost:8000

installation-with-retry:
name: Install a Shopware Shop with Retry
runs-on: ubuntu-latest
env:
SHOPWARE_DEPLOYMENT_FORCE_REINSTALLATION: 1
steps:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
tools: symfony-cli

- name: Start Default MySQL
run: |
sudo mv /var/lib/mysql /var/lib/mysql-old
sudo mkdir /var/lib/mysql
sudo mount -t tmpfs tmpfs /var/lib/mysql -o size=1G
sudo -u mysql mysqld --datadir=/var/lib/mysql --default-time-zone=SYSTEM --initialize-insecure
sudo systemctl start mysql
- name: Create new Shopware Project
run: composer create-project shopware/production . --no-interaction

- name: Checkout
uses: actions/checkout@v4
with:
path: ./custom/plugins/deployment-helper

- name: Set fake version into deployment helper
run: composer -d custom/plugins/deployment-helper config version 999.9.9

- name: Install Deployment Helper
run: composer require --dev 'shopware/deployment-helper:*'

- name: Install PayPal
run: composer require 'swag/paypal:*'

- name: Install Shopware and kill it after some seconds
run: timeout 10 ./vendor/bin/shopware-deployment-helper run

- name: Retry the Installation
if: always()
run: ./vendor/bin/shopware-deployment-helper run

- name: Start Webserver
run: symfony server:start -d

- name: PayPal plugin should be installed
run: ./bin/console plugin:list | grep SwagPayPal

- name: Default Storefront should be available
run: curl -q --fail http://localhost:8000

update:
name: Update from 6.5
runs-on: ubuntu-latest
Expand Down
6 changes: 6 additions & 0 deletions src/Command/RunCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
namespace Shopware\Deployment\Command;

use Shopware\Deployment\Event\PostDeploy;
use Shopware\Deployment\Helper\EnvironmentHelper;
use Shopware\Deployment\Services\HookExecutor;
use Shopware\Deployment\Services\InstallationManager;
use Shopware\Deployment\Services\ShopwareState;
Expand Down Expand Up @@ -46,10 +47,15 @@ protected function execute(InputInterface $input, OutputInterface $output): int
skipThemeCompile: (bool) $input->getOption('skip-theme-compile'),
skipAssetsInstall: ((bool) $input->getOption('skip-asset-install') || (bool) $input->getOption('skip-assets-install')),
timeout: is_numeric($timeout) ? (float) $timeout : null,
forceReinstallation: filter_var(EnvironmentHelper::getVariable('SHOPWARE_DEPLOYMENT_FORCE_REINSTALLATION', 'false'), FILTER_VALIDATE_BOOLEAN),
);

$installed = $this->state->isInstalled();

if ($config->forceReinstallation && $this->state->getCurrentVersion() === 'unknown') {
$installed = false;
}

$this->hookExecutor->execute(HookExecutor::HOOK_PRE);

if ($installed) {
Expand Down
4 changes: 4 additions & 0 deletions src/Services/InstallationManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ public function run(RunConfiguration $configuration, OutputInterface $output): v
$additionalInstallParameters[] = '--skip-assets-install';
}

if ($configuration->forceReinstallation) {
$additionalInstallParameters[] = '--drop-database';
}

$this->processHelper->console(['system:install', '--create-database', '--shop-locale=' . $shopLocale, '--shop-currency=' . $shopCurrency, '--force', ...$additionalInstallParameters]);
$this->processHelper->console(['user:create', $adminUser, '--password=' . $adminPassword]);

Expand Down
1 change: 1 addition & 0 deletions src/Struct/RunConfiguration.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ public function __construct(
public bool $skipThemeCompile = false,
public bool $skipAssetsInstall = false,
public ?float $timeout = 60,
public bool $forceReinstallation = false
) {
}
}

0 comments on commit 1d4be3e

Please sign in to comment.