zig*_*ggy 5 java ant continuous-integration build jenkins
假设我有 3 个 ANT 项目,每个项目的 build.xml 脚本都位于顶层文件夹
proj1
file1.java
proj2
file2.java
proj3
file3.java
Run Code Online (Sandbox Code Playgroud)
我配置 Jenkins 来构建这 3 个项目,它构建它们并将输出存储在三个单独的文件夹中。
/output/proj1/2012-02-28_20-11-06/proj1/distribution/proj1.jar
/output/proj2/2012-02-28_20-11-08/proj2/distribution/proj2.jar
/output/proj3/2012-02-28_20-11-09/proj3/distribution/proj3.jar
Run Code Online (Sandbox Code Playgroud)
ANT 脚本是将 jar 文件放入分发文件夹中的脚本。我想在另一个生成 war 文件的项目中使用这些 jar 文件。
每个项目中生成的 jar 文件用于构建 WAR 文件。有什么方法可以配置 Jenkins 构建 proj1、proj2、proj3,然后将 jar 文件复制到特定位置,该位置将包含另一个 ANT 项目,该项目运行时会生成一个 war 文件?或者这必须用 ANT 编码吗?
另外,是否可以配置 jenkins 在运行 ANT 构建脚本之前进行多次签出。我正在使用 CVS,并且希望在运行构建之前进行 3 次检查,每次使用不同的标签。
我昨晚睡觉前发布了这个问题。今天再读一遍,我觉得还不够清楚,所以我会再次澄清要求。我有 4 个项目使用 ANT 作为构建机制,并且全部存储在 CVS 存储库中。所有 4 个项目在构建时都会形成一个部署在 Tomcat 应用程序服务器上的 WAR 文件。
proj1
- file1.java
- file2.java
proj2
- file3.java
- file4.java
proj3
- file3.java
- file4.java
proj4
- jsp
- home.jsp
- css
- home.css
- WEB-INF
- lib
- classes
- web.xml
Run Code Online (Sandbox Code Playgroud)
每个项目(proj4 除外)都有一个 ANT 构建文件,用于构建项目并生成一个 JAR 文件,该文件存储在项目根文件夹的“distribution”文件夹中。例如,构建 proj1 后,它将如下所示
proj1
- file1.java
- file2.java
- distribution
- classes
- file1.class
- file2.class
- proj1.jar
Run Code Online (Sandbox Code Playgroud)
Proj4 依赖于 proj1、proj2 和 proj3,因为它首先需要将所有 jar 文件复制到其工作区中,然后再构建 war 文件。project4 的 ANT 构建文件从 proj1、2 和 3 复制 JAR 文件并构建 WAR 文件。生成的 WAR 文件包含以下结构
proj4
- jsp
- home.jsp
- css
- home.css
- WEB-INF
- lib
- proj1.jar
- proj2.jar
- proj3.jar
- classes
- web.xml
Run Code Online (Sandbox Code Playgroud)
现在为了自动化上述操作,我需要以某种方式配置 Jenkins 和 ANT 来执行以下操作(按所示顺序)
- Checkout proj1 from CVS using RELEASE1.1 tag
- Build proj1
- Checkout proj2 from CVS using RELEASE1.2 tag
- Build proj2
- Checkout proj3 from CVS using RELEASE1.1 tag
- Build proj3
- Checkout proj4 from CVS using RELEASE1.1 tag
- Copy the proj1.jar, proj2.jar, proj3.jar from the previous 3 builds and copy them to the proj4 WEB-INF/lib folder.
- Build proj4
- Deploy the WAR file.
Run Code Online (Sandbox Code Playgroud)
我昨天玩了 Jenkins 并设法配置它来构建每个项目,但每个 jar 文件最终都在一个不相关的文件夹中。我如何配置 Jenkins 来构建我上面描述的项目?
环境具有以下属性
Build tool - ANT
OS - Solaris
Run Code Online (Sandbox Code Playgroud)
Maven 可能会使用它,但目前还没有引入 Maven 的计划。如果有一个简单的类似 Maven 的构建工具,我可以用它来存储我需要的库,而不需要外部访问,那么请告诉我。
提前致谢。
我不太明白您的具体要求,但让我们尝试一下:
使用参数化触发器插件作为构建步骤,从单个作业(我们称之为TriggerJob )启动三个作业。给他们TriggerJob作为参数,他们将用它来存储结果(而不是使用他们自己的 BUILD_ID;如果您有时仍然需要单独构建它们 - 而不是从TriggerJob触发- 您可以为 TriggerJob 指定一些默认值参数,并使用Conditional BuildStep Plugin检查它,当它具有默认值时 - 使用自己的 BUILD_ID,否则使用传入的参数)。BUILD_ID
让TriggerJob等待这三个作业完成,然后收集您的 jar 文件(TriggerJob知道它们在哪里),然后继续执行第四个作业,该作业将调用您的最后一个 ANT 将它们存档在一起(或将其放入TriggerJob中的 ANT 构建步骤,哪个更适合)。
以防万一以下观察可能对您有用:每个 ANT 构建步骤都可以使用自己的构建文件(位于 ADVANCED 按钮下)。您可以使用环境变量来指定其路径。
多次签出:我不熟悉 CVS 插件,但使用 Subversion 插件,我更喜欢手动完成操作:我有触发作业,通过 Subversion 插件轮询 SVN,并将修订号作为参数传递给执行实际工作的作业。然后,这些作业使用显式 SVN 调用(来自 shell 构建步骤)来更新作为参数传递的修订。也许你可以使用 CVS 插件做同样的事情。
| 归档时间: |
|
| 查看次数: |
12721 次 |
| 最近记录: |