一直听说jenkins是自动发布部署的工具,一直没有尝试过!不知道怎么用使用,今天就自己尝试了一把!使用jenkins就萌生了自己想用java代码直接调用,创建job,然后build,这样的话,如果自己想搭建自动化构建平台也很方便啊!废话就不多不说了,直接上代码!
package com.jenkins;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import com.offbytwo.jenkins.JenkinsServer;
/**
* @author zhangjinyang
*
*/
public class App {
static String url = "http://localhost:8080/jenkins";
static JenkinsServer server;
static StringBuilder build = new StringBuilder();
static String name = "admin";
static String password = "admin";
static {
try {
server = new JenkinsServer(new URI(url), name, password);
InputStream in = App.class.getResourceAsStream("config.xml");
InputStreamReader read = new InputStreamReader(in);
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
while ((lineTxt = bufferedReader.readLine()) != null) {
build.append(lineTxt);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String jobName = "test-job-" + UUID.randomUUID().toString();
try {
//创建job
server.createJob(jobName, build.toString(), false);
//自定义属性
Map<String, String> map = new HashMap<String, String>();
map.put("qq", "11111111");
//开始build
server.getJob(jobName).build(map);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
对了,还有一个config.xml模板,如果自己做自动发布平台的话,模板就用freemarker自己生成自己想要的!目前我这边只是做测试!具体的还需要你们自己写!
config.xml
<?xml version='1.0' encoding='UTF-8'?>
<project>
<actions/>
<description></description>
<keepDependencies>false</keepDependencies>
<properties>
<hudson.model.ParametersDefinitionProperty>
<parameterDefinitions>
<hudson.model.StringParameterDefinition>
<name>qq</name>
<description>qqq</description>
<defaultValue>qqq</defaultValue>
</hudson.model.StringParameterDefinition>
</parameterDefinitions>
</hudson.model.ParametersDefinitionProperty>
</properties>
<scm class="hudson.plugins.git.GitSCM" plugin="git@3.3.0">
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
<url>https://github.com/bingyue/easy-springmvc-maven.git</url>
</hudson.plugins.git.UserRemoteConfig>
</userRemoteConfigs>
<branches>
<hudson.plugins.git.BranchSpec>
<name>*/master</name>
</hudson.plugins.git.BranchSpec>
</branches>
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
<submoduleCfg class="list"/>
<extensions/>
</scm>
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers/>
<concurrentBuild>false</concurrentBuild>
<builders>
<hudson.tasks.Shell>
<command>
echo "hello world!";
M3_HOME=/Users/admin/Documents/tool/maven
PATH=$PATH:$M3_HOME/bin
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
export M3_HOME;
export PATH;
export JAVA_HOME;
echo ${qq};
mvn clean install -U;
</command>
</hudson.tasks.Shell>
</builders>
<publishers/>
<buildWrappers/>
</project>