Skip to content

Instantly share code, notes, and snippets.

@ulrikkold
Last active August 29, 2015 14:07
Show Gist options
  • Save ulrikkold/8910b462be9fa6af9ec2 to your computer and use it in GitHub Desktop.
Save ulrikkold/8910b462be9fa6af9ec2 to your computer and use it in GitHub Desktop.
My Deployment configuration fails - why is that?
> c show --installed
composer/installers dev-master 5ed225f A multi-framework Composer library installer
doctrine/annotations dev-master 6a6bec0 Docblock Annotations Parser
doctrine/cache dev-master f7a1d66 Caching library offering an object-oriented API fo...
doctrine/collections dev-master 8c5148e Collections Abstraction library
doctrine/common 2.4.x-dev ae92d07 Common Library for Doctrine projects
doctrine/dbal 2.3.x-dev 6b0002c Database Abstraction Layer
doctrine/inflector dev-master 64de2fe Common String Manipulations with regard to casing ...
doctrine/lexer dev-master 83893c5 Base library for a lexer that can be used in Top-D...
doctrine/migrations dev-master 1a9dffa Database Schema migrations using Doctrine DBAL
doctrine/orm 2.3.x-dev c2135b3 Object-Relational-Mapper for PHP
imagine/imagine v0.6.1 Image processing for PHP 5.3
symfony/console dev-master 7049924 Symfony Console Component
symfony/dom-crawler 2.2.x-dev 64d6ffc Symfony DomCrawler Component
symfony/yaml 2.1.x-dev 347a7a0 Symfony Yaml Component
typo3/eel 2.2.x-dev eae8860 The Embedded Expression Language (Eel) is a buildi...
typo3/flow 2.2.x-dev 2b10823 TYPO3 Flow Application Framework
typo3/fluid 2.2.x-dev 193b2b3 Next-Generation Templating Framework for TYPO3 Flo...
typo3/form dev-master 24ea167 Extensible and flexible API for building web forms
typo3/imagine dev-master 27f705d
typo3/kickstart dev-master fbee66f A simple generator for controller and views.
typo3/media 1.1.x-dev 5347b89 The Media package
typo3/neos 1.1.x-dev cb55644 The next generation of the popular open-source CMS.
typo3/neos-base-distribution 1.1.x-dev da9049f TYPO3 Neos Base Distribution
typo3/neos-kickstarter 1.1.x-dev 827c4cc A simple generator for Neos assets, like sites and...
typo3/neos-nodetypes 1.1.x-dev 26626ae Node type configuration for TYPO3 Neos
typo3/neosdemotypo3org 1.1.x-dev 67e906e Site package for the TYPO3 Neos Demo Site
typo3/party 2.2.x-dev c883f32 A PHP implementation of the OASIS Customer Informa...
typo3/setup 1.0.x-dev d79cb76 An extensible setup tool for TYPO3 Flow based appl...
typo3/twitter-bootstrap dev-master 0cffa95 Simple and flexible HTML, CSS, and Javascript for ...
typo3/typo3cr 1.1.x-dev 656d72c
typo3/typoscript 1.1.x-dev 957c37a TypoScript is a hierarchical, prototype based proc...
ulrikkold/aninguaqcoachingdk dev-master 78f0fee Add description here
{
"name": "ulrikkold/acoaching",
"description": "The website of the coaching company Aninguaq Coaching.",
"license": "GPL-3.0+",
"authors": [
{
"name": "Ulrik Høyer Kold",
"email": "kontakt@ulrikkold.dk"
}
],
"minimum-stability": "dev",
"config": {
"vendor-dir": "Packages/Libraries",
"bin-dir": "bin"
},
"require": {
"typo3/neos": "1.1.x",
"typo3/neos-base-distribution": "~1.1",
"ulrikkold/AninguaqCoachingDk": "master-dev"
},
"repositories": [
{
"type": "vcs",
"url": "git@github.com:ulrikkold/aninguaqcoachingdk.git"
},
{
"type": "vcs",
"url": "git@github.com:ulrikkold/acoaching.git"
}
],
"scripts": {
"post-update-cmd": "TYPO3\\Flow\\Composer\\InstallerScripts::postUpdateAndInstall",
"post-install-cmd": "TYPO3\\Flow\\Composer\\InstallerScripts::postUpdateAndInstall",
"post-package-update": "TYPO3\\Flow\\Composer\\InstallerScripts::postPackageUpdateAndInstall",
"post-package-install": "TYPO3\\Flow\\Composer\\InstallerScripts::postPackageUpdateAndInstall"
}
}
<?php
// The Deployment config - mostly copied from an example
// TYPO3 Surf script to deploy and update TYPO3 Neos at your uberspace.de account
// before of after the initial deployment, you have to setup some things manually at your host (e.g. DB credentials in Settings.yaml)
// Create a simple workflow based on the predefined 'SimpleWorkflow'.
$workflow = new \TYPO3\Surf\Domain\Model\SimpleWorkflow();
// Create and configure a simple shell task to add the FLOW_CONTEXT to your .htaccess file
// If you're using NEOS at your local machine to develop a NEOS site, you won't add this file and this setting to your Git repo...
$editHtaccessCommandOptions = array(
'command' => 'echo -e "\nSetEnv FLOW_CONTEXT Production \n" >> {releasePath}/Web/.htaccess'
);
$workflow->defineTask('acoaching:editHtaccess', 'typo3.surf:shell', $editHtaccessCommandOptions);
$workflow->addTask('acoaching:editHtaccess', 'finalize');
// Add the workflow to the deployment. The $deployment instance is created by Surf.
$deployment->setWorkflow($workflow);
// Create and configure your node / nodes (host / hosts).
$node = new \TYPO3\Surf\Domain\Model\Node('staging');
$node->setHostname('localhost');
// If you don't use SSH-Keys to log into your remote host via SSH (as recommended),
// you have to to add the following line:
// $node->setOption('password', '[PASSWORD]');
// But you don't want to have any passwords as string in your deployment script ;-)
//$node->setOption('username', '[username]');
// Define your application and add it to your node.
$application = new \TYPO3\Surf\Application\TYPO3\Neos('ulrikkold.acoaching');
// The deployment path is not the document root!
// The document root has to be: '[deploymentPath]/releases/current/Web'.
// At uberspace: create a symlink from '/var/www/virtual/[user]/html' to '[deploymentPath]/release/current/Web'
//$application->setDeploymentPath('/var/www/virtual/[username]/[sitename]');
$application->setDeploymentPath('/var/www/stage.acoaching.dk/');
// Be sure, that your node has read-access to your git repository.
// In most cases, you can use the git- or https-protocol for public repositories or
// SSH to read from private repositories.
$application->setOption('repositoryUrl', 'git://github.com/ulrikkold/acoaching');
// Be sure, that you have installed composer
$application->setOption('composerCommandPath', '/home/uhk/bin/composer');
$application->setOption('keepReleases', '3');
$application->setOption('transferMethod', 'rsync');
$application->setOption('packageMethod', 'git');
$application->setOption('updateMethod', 'NULL');
$application->setOption('sitePackageKey', 'UlrikKold.AninguaqCoachingDk');
$application->addNode($node);
// Add the application to your deployment.
$deployment->addApplication($application);
// remove unused task.
// you can't run a command with "sudo" at shared hosting environments
$deployment->onInitialize(function() use ($workflow, $application) {
$workflow->removeTask('typo3.surf:typo3:flow:setfilepermissions');
});
And finally the verbose Surf Log:
./flow surf:deploy --verbose My.ACoachingDeployment staging
Deploying My.ACoachingDeployment (20140930211919)
Using workflow "Simple workflow"
Stage initialize
Node staging
Application ulrikkold.acoaching
Executing stage "initialize" (step "tasks") on "staging" for application ulrikkold.acoaching
staging (ulrikkold.acoaching) typo3.surf:createdirectories
(localhost): "test -d /var/www/stage.acoaching.dk"
(localhost): "mkdir -p /var/www/stage.acoaching.dk/releases && mkdir -p /var/www/stage.acoaching.dk/shared && mkdir -p /var/www/stage.acoaching.dk/releases/20140930211919 && cd /var/www/stage.acoaching.dk/releases;ln -snf ./20140930211919 next"
Task "typo3.surf:generic:createDirectories" after "typo3.surf:createdirectories" for application ulrikkold.acoaching
staging (ulrikkold.acoaching) typo3.surf:generic:createDirectories
staging (ulrikkold.acoaching) typo3.surf:typo3:flow:createdirectories
(localhost): "mkdir -p /var/www/stage.acoaching.dk/shared/Data/Logs && mkdir -p /var/www/stage.acoaching.dk/shared/Data/Persistent && mkdir -p /var/www/stage.acoaching.dk/shared/Configuration"
Stage package
Node staging
Application ulrikkold.acoaching
Executing stage "package" (step "tasks") on "staging" for application ulrikkold.acoaching
staging (ulrikkold.acoaching) typo3.surf:package:git
(localhost): "git ls-remote git://github.com/ulrikkold/acoaching refs/heads/master | awk '{print $1 }'"
> 37ccf0c3fe4f254926c2aa7107edd64595fde5c3
(localhost): "if [ -d '/home/uhk/Projects/TYPO3.Surf/Data/Surf/My.ACoachingDeployment/ulrikkold.acoaching' ]; then cd '/home/uhk/Projects/TYPO3.Surf/Data/Surf/My.ACoachingDeployment/ulrikkold.acoaching' && git fetch -q origin && git reset -q --hard 37ccf0c3fe4f254926c2aa7107edd64595fde5c3 && git submodule -q init && for mod in `git submodule status | awk '{ print $2 }'`; do git config -f .git/config submodule.${mod}.url `git config -f .gitmodules --get submodule.${mod}.url` && echo synced $mod; done && git submodule -q sync && git submodule -q update --init --recursive ; else git clone -q 'git://github.com/ulrikkold/acoaching' '/home/uhk/Projects/TYPO3.Surf/Data/Surf/My.ACoachingDeployment/ulrikkold.acoaching' && cd '/home/uhk/Projects/TYPO3.Surf/Data/Surf/My.ACoachingDeployment/ulrikkold.acoaching' && git checkout -q -b deploy 37ccf0c3fe4f254926c2aa7107edd64595fde5c3 && git submodule -q init && git submodule -q sync && git submodule -q update --init --recursive; fi"
Executing stage "package" (step "after") on "staging" for application ulrikkold.acoaching
staging (ulrikkold.acoaching) typo3.surf:composer:install
(localhost): "test -f '/home/uhk/Projects/TYPO3.Surf/Data/Surf/My.ACoachingDeployment/ulrikkold.acoaching/composer.json'"
(localhost): "cd '/home/uhk/Projects/TYPO3.Surf/Data/Surf/My.ACoachingDeployment/ulrikkold.acoaching' && /home/uhk/bin/composer install --no-ansi --no-interaction --no-dev --no-progress"
> Loading composer repositories with package information
> Installing dependencies from lock file
> Nothing to install or update
> Generating autoload files
Stage transfer
Node staging
Application ulrikkold.acoaching
Executing stage "transfer" (step "tasks") on "staging" for application ulrikkold.acoaching
staging (ulrikkold.acoaching) typo3.surf:transfer:rsync
(localhost): "mkdir -p /var/www/stage.acoaching.dk/cache/transfer"
(localhost): "rsync -q --compress --recursive --times --perms --links --delete --delete-excluded --exclude '.git' '/home/uhk/Projects/TYPO3.Surf/Data/Surf/My.ACoachingDeployment/ulrikkold.acoaching/.' '/var/www/stage.acoaching.dk/cache/transfer'"
(localhost): "cp -RPp /var/www/stage.acoaching.dk/cache/transfer/. /var/www/stage.acoaching.dk/releases/20140930211919"
Executing stage "transfer" (step "after") on "staging" for application ulrikkold.acoaching
staging (ulrikkold.acoaching) typo3.surf:generic:createSymlinks
(localhost): "cd /var/www/stage.acoaching.dk/releases/20140930211919"
Stage update
Node staging
Application ulrikkold.acoaching
Executing stage "update" (step "after") on "staging" for application ulrikkold.acoaching
staging (ulrikkold.acoaching) typo3.surf:typo3:flow:symlinkdata
(localhost): "mkdir -p /var/www/stage.acoaching.dk/releases/20140930211919/Data && cd /var/www/stage.acoaching.dk/releases/20140930211919 && ln -sf ../../../shared/Data/Logs ./Data/Logs && ln -sf ../../../shared/Data/Persistent ./Data/Persistent"
staging (ulrikkold.acoaching) typo3.surf:typo3:flow:symlinkconfiguration
(localhost): "cd /var/www/stage.acoaching.dk/releases/20140930211919/Configuration && rm -Rf Production/* && if [ -d Production ]; then rmdir Production; fi && mkdir -p ../../../shared/Configuration/Production && ln -snf ../../../shared/Configuration/Production Production"
staging (ulrikkold.acoaching) typo3.surf:typo3:flow:copyconfiguration
Stage migrate
Node staging
Application ulrikkold.acoaching
Executing stage "migrate" (step "tasks") on "staging" for application ulrikkold.acoaching
staging (ulrikkold.acoaching) typo3.surf:typo3:flow:migrate
(localhost): "cd /var/www/stage.acoaching.dk/releases/20140930211919 && FLOW_CONTEXT=Production ./flow typo3.flow:doctrine:migrate"
PHP Notice: Undefined property: stdClass::$name in /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/PackageFactory.php on line 95
PHP Stack trace:
PHP 1. {main}() /var/www/stage.acoaching.dk/releases/20140930211919/flow:0
PHP 2. require() /var/www/stage.acoaching.dk/releases/20140930211919/flow:18
PHP 3. TYPO3\Flow\Core\Bootstrap->run() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Scripts/flow.php:55
PHP 4. TYPO3\Flow\Core\Booting\Scripts::initializePackageManagement() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Core/Bootstrap.php:105
PHP 5. TYPO3\Flow\Package\PackageManager->initialize() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Core/Booting/Scripts.php:127
PHP 6. TYPO3\Flow\Package\PackageManager->loadPackageStates() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/PackageManager.php:133
PHP 7. TYPO3\Flow\Package\PackageManager->scanAvailablePackages() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/PackageManager.php:731
PHP 8. TYPO3\Flow\Package\PackageFactory::getPackageKeyFromManifest() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/PackageManager.php:771
PHP Notice: Undefined property: stdClass::$name in /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/PackageManager.php on line 772
PHP Stack trace:
PHP 1. {main}() /var/www/stage.acoaching.dk/releases/20140930211919/flow:0
PHP 2. require() /var/www/stage.acoaching.dk/releases/20140930211919/flow:18
PHP 3. TYPO3\Flow\Core\Bootstrap->run() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Scripts/flow.php:55
PHP 4. TYPO3\Flow\Core\Booting\Scripts::initializePackageManagement() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Core/Bootstrap.php:105
PHP 5. TYPO3\Flow\Package\PackageManager->initialize() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Core/Booting/Scripts.php:127
PHP 6. TYPO3\Flow\Package\PackageManager->loadPackageStates() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/PackageManager.php:133
PHP 7. TYPO3\Flow\Package\PackageManager->scanAvailablePackages() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/PackageManager.php:731
PHP Notice: Undefined property: stdClass::$name in /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/PackageManager.php on line 774
PHP Stack trace:
PHP 1. {main}() /var/www/stage.acoaching.dk/releases/20140930211919/flow:0
PHP 2. require() /var/www/stage.acoaching.dk/releases/20140930211919/flow:18
PHP 3. TYPO3\Flow\Core\Bootstrap->run() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Scripts/flow.php:55
PHP 4. TYPO3\Flow\Core\Booting\Scripts::initializePackageManagement() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Core/Bootstrap.php:105
PHP 5. TYPO3\Flow\Package\PackageManager->initialize() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Core/Booting/Scripts.php:127
PHP 6. TYPO3\Flow\Package\PackageManager->loadPackageStates() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/PackageManager.php:133
PHP 7. TYPO3\Flow\Package\PackageManager->scanAvailablePackages() /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/PackageManager.php:731
PHP Fatal error: Uncaught exception 'TYPO3\Flow\Package\Exception\InvalidPackageKeyException' with message '"" is not a valid package key.' in /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/Package.php:123
Stack trace:
#0 /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/PackageFactory.php(63): TYPO3\Flow\Package\Package->__construct(Object(TYPO3\Flow\Package\PackageManager), '', '/var/www/stage....', 'Classes/', '')
#1 /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/PackageManager.php(903): TYPO3\Flow\Package\PackageFactory->create('/var/www/stage....', 'Libraries/typo3...', '', 'Classes/', '')
#2 /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/PackageManager.php(796): TYPO3\Flow\Package\PackageManager->registerPackagesFromConfiguration()
#3 /var/www/stage.acoaching.dk/releases/20140930 in /var/www/stage.acoaching.dk/releases/20140930211919/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Package/Package.php on line 123
Got exception "Command returned non-zero return code: 255" rolling back.
Rolling back TYPO3\Surf\Task\TYPO3\Flow\CopyConfigurationTask
Rolling back TYPO3\Surf\Task\TYPO3\Flow\SymlinkConfigurationTask
Rolling back TYPO3\Surf\Task\TYPO3\Flow\SymlinkDataTask
Rolling back TYPO3\Surf\Task\Generic\CreateSymlinksTask
Rolling back TYPO3\Surf\Task\Transfer\RsyncTask
(localhost): "rm -Rf /var/www/stage.acoaching.dk/releases/20140930211919"
Rolling back TYPO3\Surf\Task\Composer\InstallTask
Rolling back TYPO3\Surf\Task\Package\GitTask
Rolling back TYPO3\Surf\Task\TYPO3\Flow\CreateDirectoriesTask
Rolling back TYPO3\Surf\Task\Generic\CreateDirectoriesTask
Rolling back TYPO3\Surf\Task\CreateDirectoriesTask
(localhost): "rm /var/www/stage.acoaching.dk/releases/next && rm -rf /var/www/stage.acoaching.dk/releases/20140930211919"
@ulrikkold
Copy link
Author

The composer.json is mostly a rip-off of the neos-base-distribution.

The two github-repos referred in composer.json are a main package (ulrikkold/acoaching) which includes the site package (UlrikKold/AninguaqCoachingDk) - this is probably not an optimal solution for this. Suggestions are welcome :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment