Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qa-platform
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
QA
qa-platform
Commits
cd469d5a
Commit
cd469d5a
authored
Feb 25, 2021
by
黎博
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增获取jenkins构建信息接口
parent
296382a3
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
226 additions
and
0 deletions
+226
-0
pom.xml
pom.xml
+6
-0
JenkinsBuildController.java
.../qaplatform/stools/controller/JenkinsBuildController.java
+61
-0
JenkinsApi.java
src/main/java/cn/qg/qaplatform/stools/utils/JenkinsApi.java
+144
-0
BuildInfo.java
src/main/java/cn/qg/qaplatform/stools/vo/BuildInfo.java
+15
-0
No files found.
pom.xml
View file @
cd469d5a
...
@@ -171,6 +171,12 @@
...
@@ -171,6 +171,12 @@
<version>
2.0.1.Final
</version>
<version>
2.0.1.Final
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.offbytwo.jenkins
</groupId>
<artifactId>
jenkins-client
</artifactId>
<version>
0.3.8
</version>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
src/main/java/cn/qg/qaplatform/stools/controller/JenkinsBuildController.java
0 → 100644
View file @
cd469d5a
package
cn
.
qg
.
qaplatform
.
stools
.
controller
;
import
cn.qg.qaplatform.stools.utils.JenkinsApi
;
import
cn.qg.qaplatform.stools.vo.BuildInfo
;
import
cn.qg.qaplatform.utils.JsonResult
;
import
com.offbytwo.jenkins.model.Build
;
import
org.springframework.web.bind.annotation.*
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
@CrossOrigin
@RestController
@RequestMapping
(
"/jenkins"
)
public
class
JenkinsBuildController
{
/**
* 获取构建信息列表
* @param jobName 任务名称
* @param num 获取的数量
* @param project 项目名,非必填
* @return 构建信息列表
* @throws IOException
*/
@GetMapping
(
"/buildlist"
)
public
JsonResult
getLatestBuildInfo
(
@RequestParam
String
jobName
,
@RequestParam
Integer
num
,
@RequestParam
(
required
=
false
)
String
project
)
throws
IOException
{
JenkinsApi
jenkinsApi
=
new
JenkinsApi
();
List
<
Build
>
buildList
;
if
(
project
==
null
)
{
buildList
=
jenkinsApi
.
getJobBuildList
(
jobName
,
num
);
}
else
{
buildList
=
jenkinsApi
.
getJobBuildList
(
jobName
,
num
,
project
);
}
List
<
BuildInfo
>
buildInfoList
=
new
ArrayList
<>();
for
(
Build
build:
buildList
)
{
BuildInfo
buildInfo
=
new
BuildInfo
();
buildInfo
.
setProject
(
build
.
details
().
getParameters
().
get
(
"GIT_REPO"
));
buildInfo
.
setBranch
(
build
.
details
().
getParameters
().
get
(
"BRANCH_NAME"
));
buildInfo
.
setNamespace
(
build
.
details
().
getParameters
().
get
(
"NAMESPACE"
));
buildInfo
.
setUserName
(
build
.
details
().
getCauses
().
get
(
0
).
getUserName
());
buildInfo
.
setResult
(
build
.
details
().
getResult
().
toString
());
buildInfo
.
setCreateAt
(
new
Date
(
build
.
details
().
getTimestamp
()));
buildInfoList
.
add
(
buildInfo
);
}
return
JsonResult
.
success
(
buildInfoList
);
}
/**
* 获取job列表
* @return
*/
@GetMapping
(
"/joblist"
)
public
JsonResult
getJenkinsJobList
()
{
JenkinsApi
jenkinsApi
=
new
JenkinsApi
();
return
JsonResult
.
success
(
jenkinsApi
.
getJobList
());
}
}
src/main/java/cn/qg/qaplatform/stools/utils/JenkinsApi.java
0 → 100644
View file @
cd469d5a
package
cn
.
qg
.
qaplatform
.
stools
.
utils
;
import
cn.qg.qaplatform.stools.vo.BuildInfo
;
import
com.offbytwo.jenkins.JenkinsServer
;
import
com.offbytwo.jenkins.client.JenkinsHttpClient
;
import
com.offbytwo.jenkins.helper.Range
;
import
com.offbytwo.jenkins.model.*
;
import
java.io.IOException
;
import
java.net.URI
;
import
java.net.URISyntaxException
;
import
java.util.*
;
public
class
JenkinsApi
{
// Jenkins 对象
private
JenkinsServer
jenkinsServer
;
// http 客户端对象
// private JenkinsHttpClient jenkinsHttpClient;
// 连接 Jenkins 需要设置的信息
static
final
String
JENKINS_URL
=
"http://192.168.4.96:8080/"
;
static
final
String
JENKINS_USERNAME
=
"qahome"
;
static
final
String
JENKINS_PASSWORD
=
"Quantgroup123"
;
/**
* 构造方法中调用连接 Jenkins 方法
*/
public
JenkinsApi
()
{
// 连接 Jenkins
try
{
jenkinsServer
=
new
JenkinsServer
(
new
URI
(
JENKINS_URL
),
JENKINS_USERNAME
,
JENKINS_PASSWORD
);
}
catch
(
URISyntaxException
e
)
{
e
.
printStackTrace
();
}
// 设置客户端连接 Jenkins
// try {
// jenkinsHttpClient = new JenkinsHttpClient(new URI(JENKINS_URL), JENKINS_USERNAME, JENKINS_PASSWORD);
// } catch (URISyntaxException e) {
// e.printStackTrace();
// }
}
/**
* 根据job名称获取job信息
*/
public
JobWithDetails
getJobInfoByName
(
String
jobName
)
{
try
{
JobWithDetails
job
=
jenkinsServer
.
getJob
(
jobName
);
return
job
;
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 获取job列表
* @return
*/
public
List
<
Map
<
String
,
String
>>
getJobList
()
{
try
{
Map
<
String
,
Job
>
jobs
=
jenkinsServer
.
getJobs
();
List
<
Map
<
String
,
String
>>
jobList
=
new
ArrayList
<>();
for
(
Job
job:
jobs
.
values
()){
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"value"
,
job
.
getName
());
map
.
put
(
"label"
,
job
.
getName
());
jobList
.
add
(
map
);
}
return
jobList
;
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 获取Job Build列表
*/
public
List
<
Build
>
getJobBuildList
(
String
jobName
,
Integer
num
)
{
try
{
// 获取 Job 信息
JobWithDetails
job
=
jenkinsServer
.
getJob
(
jobName
);
// 获取全部 Build 信息
Build
lastBuild
=
job
.
getLastBuild
();
int
lastBuildNumber
=
lastBuild
.
getNumber
();
List
<
Build
>
buildList
=
new
ArrayList
<>();
for
(
int
i
=
lastBuildNumber
;
i
>
lastBuildNumber
-
num
;
i
--)
{
Build
tempBuild
=
job
.
getBuildByNumber
(
i
);
if
(
tempBuild
==
null
)
{
return
buildList
;
}
else
{
buildList
.
add
(
job
.
getBuildByNumber
(
i
));
}
}
return
buildList
;
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 根据参数获取对应的build
*/
public
List
<
Build
>
getJobBuildList
(
String
jobName
,
Integer
num
,
String
project
)
{
try
{
// 获取 Job 信息
JobWithDetails
job
=
jenkinsServer
.
getJob
(
jobName
);
int
lastBuildNumber
=
job
.
getLastBuild
().
getNumber
();
List
<
Build
>
buildList
=
new
ArrayList
<>();
int
caculator
=
0
;
while
(
buildList
.
size
()
!=
num
)
{
Build
build
=
job
.
getBuildByNumber
(
lastBuildNumber
-
caculator
);
if
(
build
==
null
)
{
return
buildList
;
}
if
(
build
.
details
().
getParameters
().
get
(
"GIT_REPO"
).
equals
(
project
))
{
buildList
.
add
(
build
);
}
caculator
+=
1
;
}
return
buildList
;
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
public
static
void
main
(
String
[]
args
)
throws
IOException
{
JenkinsApi
jenkinsApi
=
new
JenkinsApi
();
List
<
Build
>
buildList
=
jenkinsApi
.
getJobBuildList
(
"tke-java"
,
1
,
"kdsp"
);
List
<
String
>
userList
=
new
ArrayList
<>();
for
(
Build
build:
buildList
)
{
System
.
out
.
println
(
build
.
details
().
getParameters
().
get
(
"BRANCH_NAME"
));
System
.
out
.
println
(
build
.
details
().
getParameters
().
get
(
"NAMESPACE"
));
System
.
out
.
println
(
build
.
details
().
getCauses
().
get
(
0
).
getUserName
());
userList
.
add
(
build
.
details
().
getCauses
().
get
(
0
).
getUserName
());
BuildResult
buildResult
=
build
.
details
().
getResult
();
System
.
out
.
println
(
buildResult
);
}
System
.
out
.
println
(
userList
.
size
());
}
}
src/main/java/cn/qg/qaplatform/stools/vo/BuildInfo.java
0 → 100644
View file @
cd469d5a
package
cn
.
qg
.
qaplatform
.
stools
.
vo
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
BuildInfo
{
public
String
namespace
;
public
String
project
;
public
String
branch
;
public
String
userName
;
public
String
result
;
public
Date
createAt
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment