【问题标题】:CI/CD process with Jenkins or ChefJenkins 或 Chef 的 CI/CD 流程
【发布时间】:2017-08-17 14:27:51
【问题描述】:

假设我必须做以下工作: 1:检测到 S3 上有一个新的 WAR 文件。 2:将其从 S3 存储桶中拉出。 3:停止 Wildfly 服务器 4:替换Wildfly服务器上的WAR文件 5:重启 Wildfly 服务器

该图以 Jenkins 为例。 Wildfly 和 Appeon 位于 EC2 实例上。由于一些许可问题,我们不能每次都使用 CFT 创建一个新实例,所以我必须假设所有这些步骤都在这个 EC2 实例中完成。

让我们假设故障转移不是问题。

有两种方法可以完成这项工作,一种是使用 Jenkins,就像 Jenkins 会监视 S3 存储桶,并停止、替换、重新启动服务器和 WAR,而无需每次都创建新实例。

另一个在那个Instance上使用Chef,它会每5分钟检查一次S3存储桶,例如,如果有一个新的WAR文件,就把它拉下来。 (假设 WAR 文件名没有改变......),使用一些魔法脚本停止服务器,替换 WAR 文件,重新启动服务器,都在同一个实例上运行。

因为我不了解 CI/CD、Jenkins 或 Chef。

因此,任何建议或示例都会有很大帮助!提前致谢!

【问题讨论】:

  • > 我们有 Wildfly 插件 'wiki.jenkins.io/display/JENKINS/WildFly+Deployer+Plugin' 就像我们的 Tomcat 一样,你可以在那里配置你的 Wildfly 配置。 >> 但我正在考虑本地回购检查,我们有 Git 存储库的配置,用于检查是否发生更改。 >>
  • 我有一些疑问 1)如果War首先部署在Tomcat中,它将停止服务器并取消部署并重新部署新的war..这个过程在WildFly中是否有所不同? 2)你是如何生成WAR文件的?(你正在使用maven/ant的代码)3)你为什么需要厨师?
  • @ChandraSekhar 1) 我既不知道 Tomcat 也不知道 Wildfly,但我认为它是一样的。 2) 我将使用 PowerBuilder + Appeon 在另一个 EC2 实例中生成 WAR 文件并上传到 S3。 3)我想从上传的S3存储桶开始重新部署,自动执行以下所有步骤。
  • 这充其量是基于意见的,因此根据 StackOverflow 自己的规则,这不是一个好问题:-/ 如果关闭,可能希望交叉发布到 DevOps stackexchange。

标签: amazon-web-services jenkins continuous-integration chef-infra continuous-deployment


【解决方案1】:

如果这就是你正在做的所有事情,Chef 将是 waaaaaay 矫枉过正。从 cron 运行一个简单的 bash 脚本(或者如果你想变得超级花哨,可以使用一个 systemd 计时器单元)可能会很好。我会从小事做起,尽量不要让事情变得过于复杂,部署管道中移动的部分越多,可能会破坏的事情就越多(通常在最糟糕的时候)。

【讨论】:

  • 但是当它检测到 S3 存储桶上的对象被覆盖或有一个新创建的对象时,如何启动具有魔力的脚本。
  • 可能只是一个 cron 作业。
【解决方案2】:

观看上传war文件的过程如何,而不是观看s3存储桶。将部署设置为上传过程的下游。然后你的停止服务和部署可以是一堆通过 jenkins 的 shell 脚本。它应该只是停止你的服务,可能会使用 ssh。 SSH 并执行新战争的 curl/wget(通过删除旧战争)和 ssh 来启动服务......你不会通过让厨师参与其中来使事情变得复杂。

【讨论】:

    猜你喜欢
    • 2021-08-14
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多