【问题标题】:Spring application Jenkins deployment - environmentsSpring 应用程序 Jenkins 部署 - 环境
【发布时间】:2016-03-15 08:36:49
【问题描述】:

我有以下用于 Spring 应用程序 (Maven) 的部署管道。

构建 -> 开发 -> TST -> 生产

war 文件在第一步中构建,然后复制到每个环境。我现在面临的问题是我需要为不同的环境提供不同的属性。我创建了以下属性文件:

  • application-dev.properties
  • application-int.properties
  • application-prod.properties

最佳做法是自动为每个部署步骤分配正确的环境,以便自动选择每个环境的对应属性文件。

对于本地测试,我使用了以下内容。但我不知道如何将其转移给 Jenkins。

-Drun.jvmArguments="-Dspring.profiles.active="int"

【问题讨论】:

    标签: spring spring-mvc jenkins spring-boot jenkins-workflow


    【解决方案1】:

    我认为您有几种选择:
    如果您坚持对所有环境使用相同的构建战争,您可以添加 Global MAVEN_OPTS :在 Jenkins 中转到主菜单 Manage Jenkins->Configure System 并尝试将 Global MAVEN_OPTS 设置为: -Dspring.profiles.active=int

    另一个选项应该是使用 Maven 配置文件在 Jenkins 中使用适当的属性文件构建特定的战争。因此,在您的 Jenkins 作业配置中,在构建步骤中添加 goals and options maven 命令(例如,clean install –Pint 其中“int”是您的 Jenkins 的 Maven 配置文件 ID

    【讨论】:

      【解决方案2】:

      最好的方法是遵循12 FActor App 原则,所有属性都通过环境变量传递到您的应用程序中。这将符合“云原生”应用程序。

      但如果您不想这样做,您可以按照您描述的方式使用它。属性 spring.profiles.active 将在运行时配置,而不是在 Jenkins 构建中。所有配置文件都可以包含在 WAR 文件中。它非常不灵活,因为随着某些环境属性的变化,您将需要启动新构建 -> 新版本。

      这种方法的最大问题是它无法扩展。在云环境中,您可能希望拥有许多具有不同配置的不同 PROD 环境。如果您的 WAR 工件使用单个配置文件锁定配置,则您只有一个 PROD 配置。

      某些部署系统的工作方式是配置文件具有占位符,您可以在部署期间替换这些占位符。因此,您可以拥有一个 PROD 配置文件,但部署管道会将占位符替换为不同 PROD 节点的值。

      【讨论】:

        猜你喜欢
        • 2021-09-18
        • 2021-05-14
        • 2012-04-12
        • 1970-01-01
        • 2015-04-14
        • 1970-01-01
        • 1970-01-01
        • 2016-12-03
        • 1970-01-01
        相关资源
        最近更新 更多