【问题标题】:Ant newbie : What files to check-in to SVN if using Jenkins and Ant?Ant 新手:如果使用 Jenkins 和 Ant,要签入哪些文件到 SVN?
【发布时间】:2013-12-29 03:07:12
【问题描述】:

我正在尝试使用 Ant(非 Maven 项目)为我的 Android 应用程序设置构建自动化(使用 Jenkins)。

运行 Jenkins 的机器会定期从 SVN 中检出代码并在源根目录中运行 build.xml 文件。现在有一个配置文件(比如 Config.java),它定义了 prod/staging/dev 环境参数;我使用命令“ant config_dev”等生成。但在 SVN 中只有一个版本的文件。

我的问题是 SVN 中应该是什么版本(dev/prod/stage)? 如果我将 Dev 版本放在 SVN 中,那么如何交付 Prod 和 Staging 构建?现在我猜我需要 2 个 Jenkins 任务(1 个用于 Staging,1 个用于 Prod)并且在每个任务中,检查代码后,我应该重新生成相应的配置文件(通过运行 ant config_prod 或 ant config_stg);然后构建。

这是推荐的方式吗?如何在签出代码并运行构建后运行任务“ant config_prod”?

【问题讨论】:

    标签: android svn ant jenkins build-automation


    【解决方案1】:

    不要将配置文件和生成的文件添加到版本控制中。

    在签出代码并运行构建后,如何运行任务“ant config_prod”?

    一个 Jenkins 任务可以有多个构建步骤,所以这很简单:

    1. 第一步:ant config_prod
    2. 第二步:ant(运行默认的 Ant 任务,否则 ant whatever_your_build_task_is

    如何交付 Prod 和 Staging 构建?

    您有多种选择。

    1. 使用单个 Jenkins 任务交付所有内容,包括许多构建步骤,例如:

      1. ant config_dev
      2. ant build_dev
      3. ant deploy_dev
      4. ant config_staging
      5. ant build_staging
      6. ant deploy_staging
      7. ...
    2. 为每个环境使用单独的 Jenkins 任务。您至少有两种选择:

      1. 每个 Jenkins 任务都有其独立的工作区(默认)。这有点浪费,因为每个人都需要彻底检查源代码。从好的方面来说,每个任务都是独立的,因此如果需要,它们可以并行运行。

      2. 所有 Jenkins 任务共享它们的工作区:您覆盖默认配置以指定一个工作区,并为所有任务指定相同的工作区。这将节省磁盘空间,但您必须小心避免并行运行它们,因为您可能会破坏构建或更糟。

    【讨论】:

    • 许多团队在不同的分支上构建不同的环境。在这种情况下,共享工作区要么不起作用,要么每次都必须进行清理。
    【解决方案2】:

    如果配置 java 文件是由构建过程生成的,我根本不会将其签入源代码管理。

    至于在不同环境中生成不同的配置,我会有不同的 Jenkins 作业,它们的 ant 命令行参数略有不同。 ant build 可以根据给定的命令行参数生成不同的配置。

    但是因为这是一个 Android 应用程序,我实际上要做的是生成一个具有隐藏配置设置以更改环境的单个 APK。这样你就知道你正在发送与你正在测试的二进制文件相同的二进制文件。

    【讨论】:

      【解决方案3】:

      我不使用 Jenkins,但在我的环境中,只有源代码和所有配置文件进入源代码控制。我的构建过程根据我正在构建的环境提取/编译正确的配置,并将其与其他构建的工件一起部署。然后,我为刚刚构建的环境标记我的源代码,以便以后可以重新构建完全相同的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-15
        • 1970-01-01
        相关资源
        最近更新 更多