构建 CD 管道以将应用程序部署到不同环境的最佳实践

Best practice to build a CD pipeline to deploy application to different environments

目前我正在尝试为我们的应用程序构建一个 CD 管道,这是一个典型的 Maven J2EE 项目,我们将部署一个 war 到 Tomcat 容器。

我们的 CD 管道计划如下所示:

CI(Run UT and build the WAR) -> Deploy to DEV -> Deploy to SIT -> Deploy UAT -> Deploy PROD

为了遵循 CD 的最佳实践,我们只在 CI 阶段构建一次二进制文件(war),但是我们有一些配置文件对于每个环境都是不同的,所以什么是部署阶段各个环境的相关配置文件怎么放最好?

我们正在使用 Jenkins and the build-pipe-line plugin 构建 pipeline,是否有任何推荐的插件可以实现此目的?

谢谢。

配置工件

  • 如果配置文件嵌入在 WAR.

您可以使用 maven-antrun-plugin 来

  1. 提取WAR
  2. 替换配置
  3. 重新包装 WAR

蚂蚁任务应该在不同的环境中重复使用:

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<configuration>
    <tasks>
        <echo message="Configuring artifact, ${PIPELINE_STAGE}"/>
        <!-- extracting,replacing,repacking -->
    </tasks>
</configuration?
  • 外部化配置文件。好吧,只需将配置文件上传到服务器即可。

通过管道阶段共享工件

  1. 将 WAR 上传到您的工件存储库。
  2. 下载 CI 阶段中内置的 WAR 并进行配置。
  3. 部署配置的WAR。

您可以在本文的 Sharing build artifacts throughout the pipeline 中找到详细信息。

只是为了完成可能的答案数量:

您可以使用 maven assembly plugin 创建不同的部署 war 文件。根据我的经验,这比使用 ant-tasks 好得多。