【问题标题】:Deploy build files from continuous integration从持续集成部署构建文件
【发布时间】:2016-09-20 07:37:55
【问题描述】:

我正在开发一个多人项目,一个网站应用程序,它需要构建、丑化、连接到几个文件中的 webpack,例如app.min.js、style.min.css 等 - 因此,为了防止合并冲突,我们最近将构建文件夹添加到 .gitignore,假设我们能够在部署期间构建。

当推送到 Master 分支时,我们通过 Semaphore CI(类似于 Travis)自动“部署”,它运行 composer install、npm install,最后是触发 webpack 构建的“npm run build”。这一切都是在 CI 方面构建和测试的,然后 Semaphore 会自动部署到托管我们应用程序的 Amazon 的 Elastic Beanstalk。

问题在于,Semaphore 似乎没有上传它刚刚测试的构建,而是没有构建 JS 或 CSS 的 Master 分支本身。我想知道是否有办法将这些构建的文件也推送到部署,或者是否在 Elastic Beanstalk 上再次运行整个构建过程是唯一的途径。基本上不需要执行 3 次该过程,本地、CI 和部署。每次在 EB 上需要这样的步骤时,实际的重新实例化时间都会变长,我希望尽可能短。

显然,如果在 EB 上第三次构建它是解决此问题的唯一方法,那么我将不得不这样做,只是想知道对于整个工作流程是否有更好的解决方案。

【问题讨论】:

  • 你能让这个工作吗?我尝试了下面提到的@Dean 解决方案,但它不适用于我尝试过的 CI 系统。但它在本地工作。

标签: deployment continuous-integration amazon-elastic-beanstalk continuous-deployment


【解决方案1】:

我刚刚对https://deploybot.com/ 有了很好的第一次体验。可以直接部署到弹性豆茎。它可能很有趣,或者你。

【讨论】:

  • 我真的不想在这个工作流程中添加另一个构建步骤,否则我只会在 EB 上运行构建。
【解决方案2】:

我没有使用过 Semaphore CI,但您也许可以使用 .ebignore file

如果您创建一个,cli 将使用它而不是您的 .gitignore 文件。

我发现在某些部署情况下,您需要 .gitignore 的反转(全部编译,没有 src)。它本质上允许您从项目目录中选择要部署的文件,方式与 .gitignore 文件相同。

编辑:我刚刚注意到缺少关于 aws 的文档。它只提到文件排除,但您也可以包含文件。

编辑 2:我不认为 Semaphore 支持使用 .ebignore,所以现在这个解决方案没有任何用处。 :(

【讨论】:

  • 这适用于我本地,但不适用于我尝试过的 CI 系统。知道为什么会这样吗?
  • 刚刚更新了我的答案,我认为他们不支持它。我知道 Travis CI 已经提出了这个问题,但没有引起太大的关注,所以我们所能做的就是等待和希望。 github.com/travis-ci/dpl/issues/411
猜你喜欢
  • 1970-01-01
  • 2015-04-20
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
  • 2013-11-29
  • 2020-03-20
  • 2017-09-09
  • 1970-01-01
相关资源
最近更新 更多