Ant新手:如果使用Jenkins和Ant,需要向SVN签入哪些文件



我正在尝试使用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"?

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

如何在签出代码并运行构建之后运行任务"ant config_prod"?

Jenkins任务可以有多个构建步骤,所以这很容易:

  1. 步骤1:ant config_prod
  2. 步骤2:ant(运行默认Ant任务,否则为ant whatever_your_build_task_is)

如何交付生产和暂存构建?

您有几个选项。

  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
  2. 对每个env使用单独的Jenkins任务。你至少有两个选择:

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

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

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

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

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

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

最新更新