Jenkins结合ant传递参数

  需求

  使用Jenkins的「参数化构建过程」,由用户手动输入参数。通过ant脚本接收这个参数,并输出(当然,中间也可以进行复杂的处理,这里为了说明问题,仅做简单的输出)。

1.基础环境

Jenkins1.509.4(现在Jenkins已经升级到2.x,版本差异不是很大)

apache-ant-1.9.6

apache-tomcat-7.0.6(注:Jenkins放在tomcat中,可参考我写的 《Jenkins默认工作空间及更改默认工作空间》 一文)

前提是已经有jdk的支持并配置好了相关的环境变量~

2.思路分析

工作一:在Jenkins中配置job的时候选中「参数化构建过程」,选择String Parameter。

工作二:写一个含main方法的类,打印这个参数。

工作三(重要的工作):连接输入和输出。具体可以通过ant脚本来实现。ant脚本又可以在用命令行执行的时候传递参数。

现在整理一下思路:Jenkins「参数化构建过程」输入参数 → Jenkins执行ant脚本并将参数传递给ant脚本 → ant脚本对含有main方法的类进行编译、打包、执行等操作。

3.开始练兵

  说明

    实际过程可能是:工作二 → 工作一 → 工作三。

3.1  工作一

3.2  工作三

注:cd javaant是因为build.xml文件会放在这个目录之下,见下图:



这里还涉及一个很重要的知识点:如何在Jenkins中本地构建job?

  答案是直接将整个项目拷贝至Jenkins的工作空间之下。如上图,我的Jenkins默认工作空间已经更改为E:\jenkins\,在此目录下建立一个目录src-usercreate,专门用于构建本地job。

3.3  工作二

直接上代码了。

 1 package com.primeton.ant;
 2
 3 public class HelloWorld {
 4
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         String version = args[0];
10         System.out.println("Hello,"+version+"!");
11     }
12
13 }

Java代码

 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 2 <project name="javaant" basedir="." default="main">
 3
 4     <property name="src.dir"     value="src"/>
 5     <property name="build.dir"   value="build"/>
 6     <property name="classes.dir" value="${build.dir}/classes"/>
 7     <property name="jar.dir"     value="${build.dir}/jar"/>
 8     <property name="main-class"  value="com.primeton.ant.HelloWorld"/>
 9     <property name="CODE_VERSION"  value="v1.2.2"/>
10     <target name="clean">
11         <delete dir="${build.dir}"/>
12     </target>
13
14     <target name="compile">
15         <mkdir dir="${classes.dir}"/>
16         <javac srcdir="${src.dir}" destdir="${classes.dir}"/>
17     </target>
18
19     <target name="jar" depends="compile">
20         <mkdir dir="${jar.dir}"/>
21         <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
22             <manifest>
23                 <attribute name="Main-Class" value="${main-class}"/>
24             </manifest>
25         </jar>
26     </target>
27
28     <target name="run" depends="jar">
29         <java jar="${jar.dir}/${ant.project.name}.jar" fork="true">
30             <arg value="${CODE_VERSION}"/>
31         </java>
32     </target>
33
34     <target name="clean-build" depends="clean,jar"/>
35
36     <target name="main" depends="clean,run"/>
37
38 </project>

ant脚本

整个Java工程目录层次如下:

注:上面已经提及,需要将整个项目(包含build.xml)拷贝到Jenkins的工作空间目录下(我的是E:\jenkins\src-usercreate\)。

3.4  构建结果

在Jenkins中对该作业点击『立即构建』,执行结果如下:

4.小结

①Jenkins 「参数化构建过程」 供用户输入参数。

②ant脚本可以作为中间媒介将上述参数传递给Java代码 [ 注意理解这个参数的传递过程 ]。

时间: 2024-10-26 03:08:27

Jenkins结合ant传递参数的相关文章

python调用jenkinsAPI构建jenkins,并传递参数

安装jenkins 安装jenkins很简单,可以用多种方式安装,这里知道的有: 在官网下载rpm包,手动安装,最费事 centos系统通过yum安装,ubuntu通过apt-get安装(不推荐,因为很多东西都使用了默认的) 直接下载官网上的war包:wget http://ftp-chi.osuosl.org/pub/jenkins/war-stable/2.164.2/jenkins.war 我这里直接用的下载war包 遇到的坑 在安装之前,公司的服务器上已经有一个版本的jekins在运行了

Jenkins启动另一个job并传递参数

jenkins 一个job启动另一job时并传递参数 1, 安装下面插件. Parameterized Trigger Plugin 2, 构建后 添加刚刚添加的插件 第一步添加插件 第一步添加自定义参数 3,添加的自定义参数,需要在另一个job构建前,添加参数化构建.(参数名和上一个job保持一致)然后可以在需要的地方引用 原文地址:https://www.cnblogs.com/trimphNuan/p/11822894.html

Jenkins+Jmeter+Ant自动化集成环境搭建

搭建环境: JDK:jdk1.7.0_79 Ant:apache-ant-1.9.7 Jmeter: apache-jmeter-2.13 Jenkins: jenkins-1.651.1 以上安装包以及相关工具下载地址: http://pan.baidu.com/s/1pKWPi5d JDK安装: 配置JDK环境变量: 双击JDK安装包,选择安装路径(为了节省C盘系统盘空间,不建议选择默认路径.本人所有相关软件全部安装在 D:\Progrom Files目录下,例如Jdk安装在D:\Progr

20.27分发系统介绍;20.28expect脚本远程登录;20.29expect脚本远程执行命令;20.30expect脚本传递参数

20.27 分发系统介绍 shell项目-分发系统-expect 20.28 expect脚本远程登录 1. 安装expect [[email protected] ~]# yum install -y expect 自动远程登录 2. 创建配置1.expect脚本(远程登录) [[email protected] ~]# vim 1.expect 添加内容(自动远程登录hao2机器并执行命令) #! /usr/bin/expect set host "192.168.211.129"

Jmeter 跨线程组传递参数 之两种方法

终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直到登录接口的参数失效了,需再次发送一次登录接口,又可以多次使用其参数,下面举例子: 1.登录接口中利用 Json Path Extractor 获取到登录接口的响应参数,(怎么获取上一节讲过) 终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为

Ajax请求传递参数遇到的问题

想写个同类型的,代码未测. 什么是WebAPI?我的理解是WebAPI+JQuery(前端)基本上能完成Web MVC的功能,即:这么理解吧,WebAPI相当于Web MVC的后台部分. 接下来直接上例子吧,都是我在学习过程中遇到或者发现的一些问题.  一.创建WebAPI项目 (这个环节不是本章重点) 二.传递参数遇到的问题 后台实体类(Person): 1 namespace WebApi.Models 2 { 3 public class Person 4 { 5 6 public int

如何向线程传递参数

Net提供了许多多线程编程工具,可能是因为太多了,所以掌握起来总是有一些头疼,我在这里讲讲我总结的一些多线程编程的经验,希望对大家有帮助 不需要传递参数,也不需要返回参数我们知道启动一个线程最直观的办法是使用Thread类,具体步骤如下 ThreadStart threadStart=new ThreadStart(Calculate); Thread thread=new Thread(threadStart); thread.Start(); public void Calculate()

转:Web页面通过URL地址传递参数常见问题及检测方法

Web页面即我们在浏览器中所看到的网页,在Web应用程序中,其页面往往需要进行动态切换和数据交互,页面间的数据常规传递方法有多种,本文主要介绍Web页面处理程序中常见的URL地址参数传递方法,包括概述其实现原理.特点和常见问题,最后介绍检测该方式常见应用问题的测试思路和方法. 1.web页面的概念 Web是internet上一个非常重要的资源信息网,产生于20世纪90年代初,它遵循超文本传输协议,以超文本或超媒介的形式传送各种各样的信息,为用户提供了一个具有友好的图形化界面--Web页面,以便用

Linux下C程序设计(4)----操作环境变量 、程序传递参数getopt getopt_long操作、获取时间

通过命令传递参数查看环境变量  /************************************************************************* > File Name: env.c > Author: > Mail: > Created Time: Tue 24 Feb 2015 10:42:21 PM PST *******************************************************************