gpt4 book ai didi

jenkins - 如何在 jenkins 管道中运行 docker-compose 实例

转载 作者:行者123 更新时间:2023-12-04 02:27:00 25 4
gpt4 key购买 nike

我已经建立了一个基于家庭的 CI 服务器来处理个人项目。您可以在下面看到分支“暂存”会发生什么。它工作正常,但是这种管道配置的问题是:

1) 停止实例的唯一方法似乎是中止 jenkins 中的构建,这会导致退出代码 143 并将构建标记为红色而不是绿色

2)如果机器重新启动,我必须手动触发构建

3)我想应该有更好的方法来处理这个问题?

谢谢

stage('Staging') {

when {
branch 'staging'
}

environment {
NODE_ENV = 'production'
}

steps {
sh 'docker-compose -f docker-compose/staging.yml build'
sh 'docker-compose -f docker-compose/staging.yml up --abort-on-container-exit'
}

post {
always {
sh 'docker-compose -f docker-compose/staging.yml rm -f -s'
sh 'docker-compose -f docker-compose/staging.yml down --rmi local --remove-orphans'
}
}

}

最佳答案

那么,这里的目标是什么?您是否要部署到登台?如果是这样,你的意思是什么?如果 jenkins 要启动一个长时间运行的进程(比如一个运行网络服务器的 docker 容器),那么 shell 命令行必须能够启动,然后让其退出状态告诉 jenkins 管道启动是否成功。

一种选择是将 docker compose 包装在一个脚本中,该脚本使用适当的退出代码执行、检查和退出。另一个是使用另一个自动化工具来提供帮助(例如 ansible)

第一个问题仍然存在,您想让 jenkins 做什么以及在命令行上如何工作。如果您可以对命令行进行建模,那么您可以将其封装在脚本文件中并让 jenkins 启动它。

Jenkins 管道代码看起来像 groovy,也很像 groovy。这可以让我们相信向管道添加复杂的逻辑是个好主意,但这会将 jenkins 变成我们的 IDE,而且很难调试,而且我已经陷入了多次陷阱。

一种更简单的方法是使用其他工具让您可以轻松地在命令行上进行测试,然后让 jenkins 构建运行该命令行进程的环境。 Jenkins 处理它擅长的事情:

  • 调度作业
  • 确定作业在哪些节点上运行
  • 并行运行步骤
  • 使我们的碳基生命形式可以很容易或容易地理解输出。
  • 关于jenkins - 如何在 jenkins 管道中运行 docker-compose 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48239225/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com