【问题标题】:Handle build with Node.js/React App - best practice with Jenkins and Docker使用 Node.js/React App 处理构建 - Jenkins 和 Docker 的最佳实践
【发布时间】:2018-10-06 11:11:35
【问题描述】:

今天我们创建了一个 Node.js/ReactJS 应用程序。我们正在使用 Bitbucket (git repo)、Docker 容器以及 Jenkins + AWS ECS(弹性容器服务)。

我们今天使用的过程是当我们准备好部署并准备好新版本时,我们进入 /assets 目录并运行命令gulp build。这处理了整个构建/缩小过程,最后给了我们版本号。从这里我们将它检查到 git repo 中,因为它有版本,所以它成为 repo 中的标签。都很好,对吧? :)

从这里开始,在 Jenkins 中,我们可以简单地运行构建,例如选择 Prod/Master,它负责抓取所有 npm 包,将 docker 镜像推送到 ECR,更新 ECS 中的修订。该服务已启动并正在运行。

在我看来,我们不应该在本地运行这个 gulp build 命令,而必须检查 git repo。更不用说这让 git repo 有点混乱,并且对于其他开发人员来说,将“编译”的缩小文件放在那里并不是一个很好的解决方案。

让这个gulp build 在 Jenkins 上运行不是更好的做法吗?

但是,我相信我们仍然希望在 git repo 中保留标记?还有其他方法可以实现吗?

有没有人处理过类似的问题或有类似的最佳实践?

真的很想听听你的想法。

提前致谢。

【问题讨论】:

    标签: node.js git amazon-web-services reactjs jenkins


    【解决方案1】:

    没有“最佳实践”,但如果您希望它不那么混乱,您可以考虑使用 Jenkinsfile:https://jenkins.io/doc/book/pipeline/jenkinsfile/

    不管你有什么命令或任何东西,这只是 Jenkins 的最佳实践。所以 gulp build 应该 在 Jenkins 上运行。唯一的过程应该是提交和推送。詹金斯应该处理剩下的事情。

    【讨论】:

    • 谢谢,知道了。但是,难道我们还不想在 git repo 中通过标签来维护“版本”吗?我们将如何做到这一点,因为它是 gulp 构建在技术上创建了那个“版本”?
    • 这取决于您的管道,但我已经通过读取 VERSION 文件并将其用于 ECS 中的标签来让我的部署命令强制版本来完成类似操作
    • 我明白了,所以您的部署命令从代码库中提取版本文件?然后用它在 ECS 中进行标记?你还在 git repo 中使用标记吗?
    猜你喜欢
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 2012-07-03
    相关资源
    最近更新 更多