我现在正在使用Laravel webapp,并且目前已将vendor
目录保留在git(版本控制)之外,并且每次进行全新安装时,我都会将composer install命令添加到自动脚本中,一切都很好。
现在仅仅两天前,我在我的项目中添加了laravelcollective(https://laravelcollective.com/)来帮助我处理刀片模板中的表单和html。现在不知何故,其中一个依赖项要求我生成GIT私有令牌来安装它,这很痛苦,因为它会损害我的自动化。我仍然可以通过调用url和废弃html来读取令牌和类似的东西来破解它,但我不喜欢它。然后我认为将vendor
目录保留在SVN / GIT之外是个好主意?产品的源代码是否包含其内部的所有依赖项?我不是在谈论在安装程序中填充JRE,而是在使用本地语言的产品库时。
我想在行业标准或最佳实践方面听到更多关于此的信息。
P.S: 这个问题非常通用,不仅仅局限于laravel甚至是php。
答案 0 :(得分:2)
现在某种依赖关系需要我生成GIT私有令牌来安装它,这很痛苦,因为它会损害我的自动化。
您只是遇到了Github对匿名用户的软件包下载的速率限制。没理由你不能自动化这个。生成Github令牌(您只需要执行一次 - 它们对经过身份验证的请求获得非常高速率限制),然后让您的自动化使用该令牌,如下所示:
composer config -g github-oauth.github.com <oauthtoken>
https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens
答案 1 :(得分:1)
那么,对于生产环境,您通常首先在CI软件中运行构建过程。如果“构建器安装”在构建期间失败 - 应用程序将不会部署到生产环境,因此您是安全的。
是的,大多数(99%以上)的人将“供应商”文件夹保留在回购中,因为它是第三方代码,不属于您。您甚至无权在回购邮件中托管它。
如果您想确保您的生产版本具有所有依赖关系,在CI期间拥有它们的方式,并且将始终发布 - 您可以构建Docker镜像并将其发送到生产环境。然后,一切都预先包装好了。