Issue
Scenario:
I have an existing live site that loads in composer dependencies via several GIT repositories on dev-master
.
A new feature request comes in from the client and before I merge it from develop into master I need to deploy the new (unfinished) feature to a staging environment to get OK from the client before pushing live (I may need to show the client an early version of the new feature, not at all ready for master).
I usually deploy stuff via capistrano (not that it makes any difference I guess).
I can't use require-dev
for the new code as it's likely an existing plugin that needs to be refactored.
Ideally I'd be able to use dev-develop
for the plugin on the staging/development environment and dev-master
for the live environment, but it's not possible to have the same repository twice in the same composer.json file.
How can I accomplish this?
Solution
The solution is to use environmental variables.
I have 2 composer.json
files (and also 2 composer.lock
files). The 2nd I named composer-dev.json
(this will subsequently generate a lock filed named composer-dev.lock
).
In my capistrano deploy config for the stage server I added
set :default_env, {
'COMPOSER' => 'composer-dev.json'
}
I can define the environmental variable on the fly on my local machine like so:
$ COMPOSER=composer-dev.json composer update
which generates the composer-dev.lock
file I can then deploy to the staging server.
Of course I could have configured the environment on the staging server, it just seems easier to do it in my capistrano config.
Answered By - Richard Sweeney
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.