场景:
我有一个现有的实时站点,该站点通过dev-master
上的几个 GIT 存储库加载作曲家依赖项。
请求,在我将其从开发合并到主服务器之前,我需要将新的(未完成的)功能部署到暂存环境,以便在推送之前从客户端获得确定(我可能需要向客户端展示新功能的早期版本,根本没有准备好主功能)。
我通常通过 capistrano 部署东西(我猜这并没有什么区别)。
我不能将require-dev
用于新代码,因为它可能是需要重构的现有插件。
理想情况下,我可以在暂存/开发环境中对插件使用 dev-develop
,dev-master
用于实时环境,但不可能在同一个 composer.json 文件中两次使用相同的存储库。
我怎样才能做到这一点?
解决方案是使用环境变量。
我有 2 个composer.json
文件(还有 2 个composer.lock
文件)。我命名的第二个composer-dev.json
(这将随后生成一个名为 composer-dev.lock
的锁文件)。
在我的 capistrano 部署配置中,我添加了舞台服务器
set :default_env, {
'COMPOSER' => 'composer-dev.json'
}
我可以在本地机器上动态定义环境变量,如下所示:
$ COMPOSER=composer-dev.json composer update
这将生成composer-dev.lock
文件,然后我可以部署到暂存服务器。
当然,我可以在暂存服务器上配置环境,在我的 capistrano 配置中似乎更容易。