diff --git a/config/system/.gitignore b/config/system/.gitignore
index bcf2027..6c9f404 100644
--- a/config/system/.gitignore
+++ b/config/system/.gitignore
@@ -1,2 +1,3 @@
/secrets.php
/drushrc.php
+/settings.php
diff --git a/config/system/settings.php b/config/system/settings.php
deleted file mode 100644
index 1836957..0000000
--- a/config/system/settings.php
+++ /dev/null
@@ -1,216 +0,0 @@
- [
- 'debug' => false,
- 'installToolPassword' => '$argon2i$v=19$m=65536,t=16,p=1$NVBiTmJvdEljbWY0WmdjUg$YRkMEpjn+hVLAZWWrrU9wIhVgZ3pPhSnPQyB/7+7Z1g',
- 'passwordHashing' => [
- 'className' => 'TYPO3\\CMS\\Core\\Crypto\\PasswordHashing\\Argon2iPasswordHash',
- 'options' => [],
- ],
- ],
- 'DB' => [
- 'Connections' => [
- 'Default' => [
- 'charset' => 'utf8mb4',
- 'dbname' => 'db',
- 'defaultTableOptions' => [
- 'charset' => 'utf8mb4',
- 'collation' => 'utf8mb4_unicode_ci',
- ],
- 'driver' => 'mysqli',
- 'host' => 'db',
- 'password' => 'db',
- 'port' => 3306,
- 'user' => 'db',
- ],
- ],
- ],
- 'EXTCONF' => [
- 'lang' => [
- 'availableLanguages' => [
- 'de',
- ],
- ],
- ],
- 'EXTENSIONS' => [
- 'backend' => [
- 'backendFavicon' => '',
- 'backendLogo' => '',
- 'loginBackgroundImage' => '',
- 'loginFootnote' => '',
- 'loginHighlightColor' => '',
- 'loginLogo' => '',
- 'loginLogoAlt' => '',
- ],
- 'ep_products' => [
- 'bpnConnectApiBaseUrl' => '',
- 'bpnConnectApiKey' => '',
- 'bpnConnectApiMaxDuration' => '15',
- 'bpnConnectApiTimeout' => '5',
- 'cmsApiKey' => '',
- 'contentFeedEnabled' => '1',
- 'contentFeedExcludedPages' => '634',
- 'contentFeedLanguages' => '0',
- 'contentFeedNewsDetailPages' => 'ep-reisen:1392',
- 'contentFeedSites' => 'ep-reisen,ser,ski-boarderweek,ski-wochenenden,snowzone',
- 'importStoragePid' => '11',
- 'myEpApiBaseUrl' => '',
- 'myEpApiClientId' => '',
- 'myEpApiClientSecret' => '',
- 'myEpApiMaxDuration' => '15',
- 'myEpApiTimeout' => '5',
- 'myEpApiUrlAuthorize' => '',
- 'myEpApiUrlToken' => '',
- 'myEpStagingUrl' => 'https://my.ep-reisen.net',
- 'myEpUrl' => 'https://my.ep-reisen.de/',
- 'searchPageUid' => '0',
- ],
- 'ep_theme' => [
- 'cdnBaseUrl' => 'https://cdn.ep-reisen.de/',
- ],
- 'extensionmanager' => [
- 'automaticInstallation' => '1',
- 'offlineMode' => '0',
- ],
- 'news' => [
- 'advancedMediaPreview' => '1',
- 'archiveDate' => 'date',
- 'categoryBeGroupTceFormsRestriction' => '0',
- 'categoryRestriction' => '',
- 'contentElementRelation' => '1',
- 'dateTimeNotRequired' => '0',
- 'hidePageTreeForAdministrationModule' => '0',
- 'manualSorting' => '0',
- 'pageTreePluginPreview' => '1',
- 'prependAtCopy' => '1',
- 'resourceFolderImporter' => '/news_import',
- 'rteForTeaser' => '0',
- 'showAdministrationModule' => '1',
- 'slugBehaviour' => 'unique',
- 'storageUidImporter' => '1',
- 'tagPid' => '1',
- ],
- 'redirects' => [
- 'showCheckIntegrityInfoInReports' => '1',
- 'showCheckIntegrityInfoInReportsSeconds' => '86400',
- ],
- 'scheduler' => [
- 'maxLifetime' => '1440',
- ],
- 'staticfilecache' => [
- 'backendDisplayMode' => 'both',
- 'boostMode' => '0',
- 'clearCacheForAllDomains' => '1',
- 'cspGenerationOverride' => '0',
- 'debugHeaders' => '0',
- 'disableInDevelopment' => '0',
- 'enableGeneratorBrotli' => '0',
- 'enableGeneratorGzip' => '1',
- 'enableGeneratorPhp' => '0',
- 'enableGeneratorPlain' => '0',
- 'hashUriInCache' => '0',
- 'headerSizeBuffer' => '1.5',
- 'htaccessTemplateName' => 'EXT:staticfilecache/Resources/Private/Templates/Htaccess.html',
- 'inlineAssetsFileSize' => '50000',
- 'inlineScriptMinify' => '0',
- 'inlineServiceFavIcon' => '0',
- 'inlineServiceScripts' => '0',
- 'inlineServiceStyles' => '0',
- 'inlineStyleAssets' => 'ico,png,woff2',
- 'inlineStyleMinify' => '0',
- 'largeIdentifierInCacheTable' => '0',
- 'maxHeaderSize' => '8192',
- 'overrideCacheDirectory' => '',
- 'overrideClientUserAgent' => '',
- 'phpTemplateName' => 'EXT:staticfilecache/Resources/Private/Templates/Php.html',
- 'rawurldecodeCacheFileName' => '0',
- 'renameTablesToOtherPrefix' => '0',
- 'sendCacheControlHeaderRedirectAfterCacheTimeout' => '1',
- 'sendHttp2PushEnable' => '0',
- 'sendHttp2PushFileExtensions' => 'css,js',
- 'sendHttp2PushFileLimit' => '10',
- 'sendHttp2PushLimitToArea' => '',
- 'useFallbackMiddleware' => '1',
- 'useReverseUriLengthInPriority' => '1',
- 'validFallbackHeaders' => 'Content-Type,Content-Language,Content-Security-Policy,Link',
- 'validHtaccessHeaders' => 'Content-Type,Content-Language,Content-Security-Policy,Link',
- ],
- ],
- 'FE' => [
- 'cacheHash' => [
- 'enforceValidation' => true,
- ],
- 'debug' => false,
- 'disableNoCacheParameter' => true,
- 'passwordHashing' => [
- 'className' => 'TYPO3\\CMS\\Core\\Crypto\\PasswordHashing\\Argon2iPasswordHash',
- 'options' => [],
- ],
- 'compressionLevel' => 0,
- ],
- 'GFX' => [
- 'processor' => 'GraphicsMagick',
- 'processor_effects' => false,
- 'processor_enabled' => true,
- 'processor_path' => '/usr/bin/',
- ],
- 'LOG' => [
- 'TYPO3' => [
- 'CMS' => [
- 'deprecations' => [
- 'writerConfiguration' => [
- 'notice' => [
- 'TYPO3\CMS\Core\Log\Writer\FileWriter' => [
- 'disabled' => true,
- ],
- ],
- ],
- ],
- ],
- ],
- ],
- 'MAIL' => [
- 'transport' => 'sendmail',
- 'transport_sendmail_command' => '/usr/sbin/sendmail -t -i',
- 'transport_smtp_encrypt' => '',
- 'transport_smtp_password' => '',
- 'transport_smtp_server' => '',
- 'transport_smtp_username' => '',
- ],
- 'SYS' => [
- 'UTF8filesystem' => false,
- 'caching' => [
- 'cacheConfigurations' => [
- 'hash' => [
- 'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\Typo3DatabaseBackend',
- ],
- 'pages' => [
- 'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\Typo3DatabaseBackend',
- 'options' => [
- 'compression' => true,
- ],
- ],
- 'rootline' => [
- 'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\Typo3DatabaseBackend',
- 'options' => [
- 'compression' => true,
- ],
- ],
- ],
- ],
- 'devIPmask' => '',
- 'displayErrors' => 0,
- 'encryptionKey' => '0ad297595e43cb5f668bdf7878eaea7002a4193fd26d2742a3a708b4b0715bcfabdae84a47ca8517d55732d9ea72a26a',
- 'exceptionalErrors' => 4096,
- 'features' => [
- 'extbase.consistentDateTimeHandling' => true,
- 'frontend.cache.autoTagging' => true,
- 'security.system.enforceAllowedFileExtensions' => true,
- ],
- 'sitename' => 'E&P',
- 'systemMaintainers' => [
- 1,
- ],
- 'trustedHostsPattern' => '(?:[a-z0-9-]+\\.)?(?:ep-reisen\\.de|ski-boarderweek\\.(?:de|com|eu)|skiboarderweek\\.(?:de|eu)|snowzone\\.net|unichamp\\.de|snow-break\\.(?:de|com)|semesterende-skireisen\\.de|alpinevacation\\.ch|cllt-touristik\\.at|ep-events\\.de|ski-wochenenden\\.de)',
- ],
-];
diff --git a/deploy.php b/deploy.php
index b8f547c..8fe3bcb 100644
--- a/deploy.php
+++ b/deploy.php
@@ -36,8 +36,13 @@ set('shared_dirs', [
// Baseline of the MyE&P import: without it every deploy would trigger a full re-import
'var/transient/ep_products_import',
]);
+// settings.php is shared as LocalConfiguration.php was on TYPO3 10: production is leading, so what
+// is changed in the backend (extension configuration, install tool) survives deploys and rollbacks.
+// It is not in git (encryptionKey, install tool password): configuration changes for production are
+// made there, in the backend or by hand on the shared file.
set('shared_files', [
'config/system/secrets.php',
+ 'config/system/settings.php',
]);
set('writable_dirs', [
'{{typo3/public_dir}}/typo3temp/assets',
@@ -138,6 +143,21 @@ task('typo3:secrets:init', function () {
writeln('Created ' . parse($target) . ' from the template: fill it in, then deploy again.');
});
+desc('Seed the shared settings.php from the live release unless it is there already (never overwrites)');
+task('typo3:settings:init', function () {
+ $target = '{{deploy_path}}/shared/config/system/settings.php';
+ if (test("[ -s $target ]")) {
+ return;
+ }
+ // deploy:shared would seed it from the new release, i.e. from git, and drop production's settings
+ if (!test('[ -f {{deploy_path}}/current/config/system/settings.php ]')) {
+ return;
+ }
+ run('mkdir -p {{deploy_path}}/shared/config/system');
+ run("cp -L {{deploy_path}}/current/config/system/settings.php $target");
+ writeln('Created ' . parse($target) . ' from the live release.');
+});
+
desc('Stop before the database is touched while secrets.php still lacks the database connection');
task('typo3:secrets:check', function () {
$secrets = '{{deploy_path}}/shared/config/system/secrets.php';
@@ -175,6 +195,7 @@ task('deploy', [
'deploy:release',
'rsync',
'typo3:secrets:init',
+ 'typo3:settings:init',
'deploy:shared',
'typo3:fileadmin',
'deploy:writable',