jenkins文档

https://www.jenkins.io/

要注意官方中文文档比英文文档少了一些内容,并且很多内容不一致

jenkins 远程api

https://www.jenkins.io/doc/book/using/remote-access-api/

官方文档很简单,具体的远程api需要在自己部署的jenkins上查看

注意 每个页面下点击REST API都会出现不一样的api!!!!!!

1.使用Maven构建Java应用程序

中文版:https://www.jenkins.io/zh/doc/tutorials/build-a-java-app-with-maven/
英文版:https://www.jenkins.io/doc/tutorials/build-a-java-app-with-maven/

注意事项

1.docker安装jenkins 需要使用jenkinsci/blueocean,不能使用普通的jenkins docker,否则在jenkins里面即使安装了docker插件,使用docker还会提示docker: not found

参考文档:
https://www.jenkins.io/zh/doc/book/installing/#%E5%9C%A8docker%E4%B8%AD%E4%B8%8B%E8%BD%BD%E5%B9%B6%E8%BF%90%E8%A1%8Cjenkins

参考命令(中文版的):

1
2
3
4
5
6
7
8
9
10
11
docker run \
-u root \
-d \
-p 8051:8080 \
-p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $HOME/.m2:/root/.m2 \
--restart=always \
--name=jenkins11 \
jenkinsci/blueocean

2.初始化jenkins之后,还需要在jenkins中安装docker插件才可以

3.在jenkins中使用指定版本的maven docker,比如jdk17的maven.可以在docker仓库中搜索maven,选择jdk17的

例如: maven:3.8.5-openjdk-17

4.写的shell脚本在流水线中无法执行,提示无权限,看一下脚本文件是否是无执行权限的,如果是,赋予脚本执行权限即可

5.注意不同agent的workspace工作区是不一样的,参考链接:https://stackoverflow.com/questions/44259039/how-to-re-use-previously-created-workspace-across-stages

6.在jenkins中,新建项目的时候,如果Jenkinsfile是从远程仓库获取的,那么轻量级检出建议打开.如果不打开构建的时候会全量拉一次仓库代码(这个时候其实是要去仓库获取Jenkinsfile,即使拉了全量代码,后面执行pipeline的时候还是会拉全量代码的, 因此轻量级检出建议打开)

7.一个Jenkinsfile文件参考

推荐:(各阶段没有加options { skipDefaultCheckout() } 这是因为在一个工作空间内经过测试只会拉一次代码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
pipeline {
agent any
stages {
stage('mavenBuild') {
agent {
docker {
image 'maven:3.8.5-openjdk-17'
args '-v /root/.m2:/root/.m2'
// 因为这个阶段指定了agent,默认每个agent都有自己的工作空间,因此这里的reuseNode true是必须的,指定重用之前的工作空间
reuseNode true
}
}
steps {
sh 'mvn -B -DskipTests clean package'
}
}
stage('buildDockerfile') {
steps {
sh 'chmod +x build.sh'
sh './build.sh'
}
}
}
}

不推荐:以下方式会产生两个相同的workspace,虽然路径一样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
pipeline {
agent none
stages {
stage('mavenBuild') {
agent {
docker {
image 'maven:3.8.5-openjdk-17'
args '-v /root/.m2:/root/.m2'
}
}
steps {
sh 'mvn -B -DskipTests clean package'
}
}
stage('buildDockerfile') {
agent any
// 上一步已经拉取过代码,这里无需再次拉取
options { skipDefaultCheckout() }
steps {
sh 'chmod +x build.sh'
sh './build.sh'
}
}
}
}

jenkins文档
https://bytecpu.com/2022/06/09/:2022-:06-:09-:jenkins笔记/
作者
smile
发布于
2022年6月9日
许可协议