构建 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 来
- 提取WAR
- 替换配置
- 重新包装 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?
- 外部化配置文件。好吧,只需将配置文件上传到服务器即可。
通过管道阶段共享工件
- 将 WAR 上传到您的工件存储库。
- 下载 CI 阶段中内置的 WAR 并进行配置。
- 部署配置的WAR。
您可以在本文的 Sharing build artifacts throughout the pipeline 中找到详细信息。
只是为了完成可能的答案数量:
您可以使用 maven assembly plugin 创建不同的部署 war 文件。根据我的经验,这比使用 ant-tasks 好得多。
目前我正在尝试为我们的应用程序构建一个 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 来
- 提取WAR
- 替换配置
- 重新包装 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?
- 外部化配置文件。好吧,只需将配置文件上传到服务器即可。
通过管道阶段共享工件
- 将 WAR 上传到您的工件存储库。
- 下载 CI 阶段中内置的 WAR 并进行配置。
- 部署配置的WAR。
您可以在本文的 Sharing build artifacts throughout the pipeline 中找到详细信息。
只是为了完成可能的答案数量:
您可以使用 maven assembly plugin 创建不同的部署 war 文件。根据我的经验,这比使用 ant-tasks 好得多。