This package is used by Liquid Light to deploy TYPO3 websites via CI - specifically Gitlab.
It is best used within Gitlab CI as it can utilise several environment variables.
The basis for this is PHP Deployer, however a lot of functionality comes from deployer-extended-typo3 and it's many meta-packages.
There are several settings defined by default within this package for the most common hosts.
Set the hostname of the server in the deploy.php file - the rest of the connection details should be in your .ssh/config file
host('production')
->set('hostname', 'client.xxx')
;The following hosts have a config file in the deployer/hosts file with some sensible defaults
- production
- staging
- local
It is advised you set an environment for extra config to be applied. This is set on the host() to allow for different envs for different hosts
host('production')
->set('ll_deployer_environment', 'cpanel')
;vps- for a fully self-managed debian based vpscpanel- for a site running with cPanel
This package will upload html/assets if there as well as app/*/Resources/Public, but if you want others that are built then you need to specify them as an array. This can be set globally or on a host by host basis
e.g.
set(
'll_deployer_asset_paths',
[
'{{release_path}}/html/_assets'
]
);You can add the contents of your .env file as a CI/CD variable (ensure "file" is selected in the drop down) and set it as DEPLOY_DOTENV_[ENVIRONMEENT NAME]. This then needs to be set to an environment variable in your .gitlab-ci.yaml of DEPLOY_DOTENV to be deployed.
variables:
DEPLOY_DOTENV: $DEPLOY_DOTENV_PRODUCTIONIf the server has OPCache installed, it will need to be cleared on each deployment to allow PHP and Apache to see the new symlinks.
To do this, you need to declare an array in public_urls in the deploy file, along with adding the cache:clear_php_http task for the environment.
- Add
->set('public_urls', ['[URL]'])to theproductionhost indeploy.php - Add the
cache:clear_php_httptask for production instances (example below)
on(select('instance=production'), function ($host) {
after('cache:clear_php_cli', 'cache:clear_php_http');
});