Pipeline Utility Steps用于读取各种文件
Generic Webhook Trigger插件用于接收构建过程中,post Body中的参数,同时提供了一个用token指定构建任务的触发方式;
第一个测试的jenkins pipeline
pipeline{
agent any
options { checkoutToSubdirectory('foo') }
environment {
WORKSPACE="${WORKSPACE}/subdir"
tagName= "${ref}"
}
tools {
maven 'maven-3.5.2'
jdk 'JDK8'
}
stages {
stage('Build') {
steps{
script{
name = "caoyong"
}
echo $name
echo "${tagName}"
withEnv(['tagName=12432432']){
echo "${tagName}"
}
echo "${tagName}"
echo 'This is a build step,,,,,,,,,,,,,,,,'
echo("ref::::::::::::::::::::::${ref}")
sh("ls .")
dir("subdir"){
// git credentialsId:'caoyong-ssh', branch: "master", url:'${project.url}'
// sh "cat caoyong1.txt"
checkout scm: [$class: 'GitSCM', userRemoteConfigs: [[url: '${project.url}', credentialsId: 'caoyong-ssh']], branches: [[name: "${ref}"]]],poll: false
// sh("echo ${ref} |sed 's/refs\/tags\/\(\S*\)/\1/' ")
// sh("echo ${ref} |awk -F'/' '{print \$3}' |xargs git checkout ")
// sh("git checkout V1.0.0.2")
sh("mvn clear compile package")
echo '华丽的分割线-----------------------------------------------------------------------------------------'
sh 'mvn --version'
}
}
}
stage('Test') {
steps{
echo 'This is a build test-------------------------------------------------------------------------------------'
}
}
stage('Deploy') {
steps{
echo 'This is a deploy step begin....'
echo 'This is a deploy step end....'
}
post{
success{
echo 'caoyong post finished.....'
}
}
}
}
}
gitlab提供了很多的api,用于管理git
http://10.110.152.173:23456/api/v4/users?username=root
http://10.110.152.173:23456/api/v4/projects
http://10.110.152.173:23456/api/v4/users/1/projects?simple=true
http://10.110.152.173:23456/api/v4/projects/3/repository/tags
http://10.110.152.173:23456/api/v4/projects/3/repository/tags/V1.0.0.13/release
header{"PRIVATE-TOKEN":"3THFB5BPeguL69mCXoxD"}
http://10.110.152.173:23456/api/v4/projects/3/releases
使用maven自动化打包构建过程中如下:
代码结构是这样的:
在base目录下执行:mvn -pl server-provider -am clean compile package
-pl就是指定要清理,编译,打包的项目,
-am就是自动识别依赖的其他的项目,并安装之;
其中base是server-provider的父项目
server-provider依赖commons-pojo和commons-util
在使用springBoot插件打包的时候,会出现找不到模块之间依赖关系,是因为在使用插件打包的时候,将被依赖的jar的类都打包到了BOOT-INF下,解决办法是,将被依赖的基础项目去掉springBoot插件或者使用下面的配置即可:
1.spring-boot maven打包,一般pom.xml文件里会加
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
这样打的jar里会多一个目录BOOT-INF。
2.引起问题,程序包不存在。
3.解决办法,如果A子模块包依赖了B子模块包,在B子模块的pom文件,加入
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
————————————————
版权声明:本文为CSDN博主「zsywangyi」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zsywangyi/article/details/78319130
使用SpringBoot插件的好处在于,将Main类放到了jar中,打出的jar就是可以运行的;
实际上,在实现过程中,在base中引入该插件,配置
<properties>
<spring-boot.maven.plugin>false</spring-boot.maven.plugin>
</properties>
和
<configuration>
<skip>${skip.spring.boot.maven.plugin}</skip>
</configuration>
即可。。。。。
说下spring.profiles.active:
spring.profiles.active=@profiles.active@ ,其实是配合 maven profile进行选择不同配置文件进行启动。
参考:www.cnblogs.com/maohuidong/…
对于json数据以及for循环的测试如下:
前提是安装【pipeline-utility插件】
pipeline{
agent any
tools {
maven 'maven-3.5.2'
jdk 'JDK8'
}
stages {
stage('CheckOut Code And Image Stage...') {
steps{
script{
deployUrl="git@10.110.152.173:root/mmzx.git";
localCredentialsId="8daffac3-4e12-4c9e-8474-cf256870eb83";
ns = "${namespace}"
v = "${version}"
jsonObj = readJSON text: "${person}"
array = readJSON text: '[ "a", "b","c","d"]'
for (int i = 0;i < array.size();++i){
echo "Testing the ${array[i]} browser"
sh("mkdir caoyong${array[i]}")
}
}
echo "$jsonObj"
echo "${jsonObj.name}"
echo "$jsonObj.age"
}
}
}
}
前端的请求:
curl -X POST \
'http://10.110.152.173:8899/generic-webhook-trigger/invoke?token=demo.bot' \
-H 'Accept: */*' \
-H 'Accept-Encoding: gzip, deflate' \
-H 'Cache-Control: no-cache' \
-H 'Connection: keep-alive' \
-H 'Content-Length: 119' \
-H 'Content-Type: application/json' \
-H 'Host: 10.110.152.173:8899' \
-H 'Postman-Token: 2e3f94ba-0c80-4925-b4dc-7c8d273039ea,14ae01e1-d5e9-4698-91cf-c8e1610a5794' \
-H 'User-Agent: PostmanRuntime/7.20.1' \
-H 'X-Gitlab-Event: Tag Push Hook' \
-H 'X-Gitlab-Token: 93e7593af81a3862890f99dc53dee758' \
-H 'cache-control: no-cache' \
-d '{
"namespace":"mmzx",
"version":"v1.0.0.10",
"person":{
"name":"caoyongxxx",
"age":34
}
}'
jenkins工作目录中,已经可以看到创建好的目录:
对于scm的使用,参考:jenkins.io/doc/pipelin…