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:
[email protected]@ ,其實是配合 maven profile
進行選擇不同配置文件進行啓動。
參考:https://www.cnblogs.com/maohuidong/p/11507362.html
對於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="[email protected]: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的使用,參考:https://jenkins.io/doc/pipeline/steps/workflow-scm-step/#checkout-general-scm