[Flow] TYPO3 Surf questions

Christian Loock chl at vkf-renzel.de
Mon Oct 13 09:36:33 CEST 2014


Almost.

If you have a look at the composer package typo3/flow-base-distribution, 
you will see, that it only contains a very bare bone skelton for your 
project structure, and the composer.json. Packages will be installed 
with composer, based on this config. You do not have to version flow 
etc. by yourself, since composer will just clone it from the typo3 git 
servers. Surf uses composer to install your appluication. Composer will 
look, which packages you reference in your composer.json and install 
them accordingly. Each package resides in its own git repository. You 
just need to tell composer, where it can find those packages. This can 
be done by either adding them to the global packagist at packagist.org, 
hosting your own composer repository service (like hosting your own 
packagist or satis) or just configuring your repositories in your 
composer.json¹

You might also want to have a look at the composer docs for more detail 
on that. Also check out this² link for more details on how flow manages 
packages

For your clients, I would just create a simple project based on the flow 
base distribution and alter the composer.json, so that it contains the 
packages you want to be installed. Each of these projects then goes into 
its own repository. Also note, that each base distribution is also a 
composer package of its own, so that you can easily install it manually 
using composer's create-project command, as long as composer is aware of 
where your projects are hosted.

Hope this clearifies it a bit more.

[1] https://getcomposer.org/doc/05-repositories.md#vcs
[2] 
http://docs.typo3.org/flow/TYPO3FlowDocumentation/TheDefinitiveGuide/PartIII/PackageManagement.html

Just
Am 13.10.2014 um 09:05 schrieb Mark Kuiphuis:
> Hi Christian,
>
> Thank you for your quick reply.
>
> To answer your questions. The "modules" are all unique packages, but 
> we named them this way for consistency reasons. So, in short:
>
> Vendor.Package         --> Vendor.Package.git
> Vendor.Package.Client    --> Vendor.Package.Client.git
> etc.
>
> Right now "Package" is the name of our membership system, but in the 
> future we might create Vendor.OtherPackage.git as our core for a 
> totally different application, with Vendor.OtherPackage.Client.git as 
> the specific client package tied in to Vendor.OtherPackage.
>
> (The reason we have to create Vendor.Package.Client is that Custom 
> Invoice templates are being used as well as client specific images and 
> not to forget their own implementation of their rules to determine, 
> for example, a member's financial status).
>
> Currently we git clone the individual packages from our own GIT Server 
> and then setup the Routes.yaml to let them work.
>
> If I understand you correctly, you are saying that I can create a base 
> distribution for each client (does that include all sources of 
> TYPO3.Flow, TYPO3.Eel, TYPO3.Fluid, etc. etc.) which I don't think is 
> a good idea... but maybe I am totally wrong here.
>
> Could I create a bare folder structure like:
>
> -- client
>  -- bin
>  -- Build
>  -- Configuration
>  -- Data
>  -- Packages
>   -- Application
>  -- Web
>  -- composer.json
>
> And then define in the composer.json all packages I need for this 
> specific client? Or am I missing the mark here?
>
> Kind regards,
>
> Mark
>
>
> On 13/10/2014 4:09 pm, Christian Loock wrote:
>> The structure you are using here, seems to be a bit problematic to
>> handle. If I understand correct, your Modules are Subpackages of
>> Vendor.Package? If i see that right, you wont really be able to deploy
>> them sperately, since they all reside inside the same composer package.
>> You would have to split them up into separated (composer) packages. Then
>> in order to deploy those diffenrent configurations, you would need a
>> base distribution repo, that contains a composer.json that references
>> all the packages you want to install. You can use the same application
>> configuration class in surf for this, if the deployment process remains
>> the same. Just exchange the git repository that is used.
>>
>> Cheer,
>>
>> Christian
>>
>> Am 13.10.2014 um 08:03 schrieb Mark Kuiphuis:
>>> Hi all,
>>>
>>> How can I use TYPO3.Surf to deploy multiple packages to a staging 
>>> server?
>>>
>>> Packages/Application/Vendor.Package
>>> Packages/Application/Vendor.Package.Client
>>> Packages/Application/Vendor.Package.Module1
>>> ..
>>> ..
>>> Packages/Application/Vendor.Package.Module4
>>> etc. etc.
>>>
>>> Another installation can have:
>>>
>>> Packages/Application/Vendor.Package
>>> Packages/Application/Vendor.Package.OtherClient
>>> Packages/Application/Vendor.Package.Module3
>>> Packages/Application/Vendor.Package.Module4
>>>
>>> Vendor.Package is the package with the Core Functionality.
>>> Vendor.Package.ModuleX allow for additional functionality potentially
>>> for 1 or more clients.
>>>
>>> All the examples only talk about one $application send to a node, but
>>> for every client with their own staging version, I need to have at
>>> least 2 (Core and Client) or more packages being updated.
>>>
>>> Because all the clients use the same Core Package, I believe I should
>>> only have 1 repo on my git server for the Core package, instead of
>>> saving the full set of modules for each client in a repo....
>>>
>>> But I fail to see how to deploy this with TYPO3.Surf
>>>
>>> Thanks in advance,
>>>
>>> -- 
>>> Mark Kuiphuis
>>> Capesso Pty Ltd
>>> _______________________________________________
>>> Flow mailing list
>>> Flow at lists.typo3.org
>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/flow
>>
>
>



More information about the Flow mailing list