情景:
我有一个现有的实时网站,通过dev-master
上的几个GIT存储库加载作曲家依赖关系。
一个新的功能请求来自客户端,在我将它从开发合并到主服务器之前我需要将新的(未完成的)功能部署到临时环境,以便在推送之前从客户端获得OK(我可能需要显示)客户端是新功能的早期版本,完全没有为主人准备好。)
我通常通过capistrano部署内容(并不是说我认为它有任何不同)。
我无法将require-dev
用于新代码,因为它可能是需要重构的现有插件。
理想情况下,我可以在暂存/开发环境中使用dev-develop
作为插件,在实时环境中使用dev-master
,但是不可能拥有相同的内容存储库在同一个composer.json文件中两次。
我该如何做到这一点?
答案 0 :(得分:8)
解决方案是使用环境变量。
我有2个composer.json
个文件(还有2个composer.lock
个文件)。第二个我命名composer-dev.json
(这将随后生成名为composer-dev.lock
的锁定文件。)
在我添加的舞台服务器的capistrano部署配置中
set :default_env, {
'COMPOSER' => 'composer-dev.json'
}
我可以在我的本地计算机define the environmental variable on the fly上像这样:
$ COMPOSER=composer-dev.json composer update
生成composer-dev.lock
文件,然后我可以将其部署到登台服务器。
当然我可以在登台服务器上配置环境,在我的capistrano配置中看起来更容易。