一、docker版本安装
1、先下载镜像并执行 run 操作,下方 -v 是将容器目录映射到主机,如第一个的 /var/jenkins_home 映射到主机 jenkins-data
docker run \
--rm \
-u root \
-p 8080:8080 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /root:/home \
jenkinsci/blueocean
2、运行后浏览器访问 http://192.168.1.60:8080/ 即可进入安装向导,开头需要输入密码,密码在界面提示的文件可以拿到,之后再按照向导,创建用户和密码等,稍等片刻即可安装完成。
二、尝试构建第一个流水线项目
1、由于前面启动容器时指定了 -v /root:/home ,所以我们到主机 /root 下创建一个GitHub目录,作为本地github仓库,接着我们到GitHub目录 clone一个自己 github上的项目
git clone git@github.com:linzhuzai/simple-java-maven-app.git
2、接着到 jenkins 管理界面,我们开始创建一个构建项目,输入项目名,然后配置页填写描述,最重要是流水线部分填写,如下图2,其中 Repository URL 路径是本地仓库路径(由于主机和容器映射了地址 /root:/home,因此这里 /home/GitHub/simple-java-maven-app 其实映射的主机地址就是 /root/GitHub/simple-java-maven-app,也就是我们刚才 clone项目下来的本地地址),最后保存即可。
3、紧接着创建一个 Jenkinsfile,放到项目的根目录,输入以下内容
pipeline {
agent {
docker {
image 'maven:3-alpine'
args '-v /root/.m2:/root/.m2'
}
}
stages {
stage('Build') {
steps {
sh 'mvn -B -DskipTests clean package'
}
}
}
}
4、完成后我们把它提交到git 本地仓库,cd 到 /root/GitHub/simple-java-maven-app ,然后提交新增的文件
git add .
git commit -m "test"
5、最后我们回到 jenkins管理界面,点击 Blue Ocean,然后选择我们刚才创建的项目,接着运行即可,点击项目可进入查看构建过程,如果有错误会显示,完成后界面变成绿色。
6、增加test 环节,修改 Jenkinsfile文件
pipeline {
agent {
docker {
image 'maven:3-alpine'
args '-v /root/.m2:/root/.m2'
}
}
stages {
stage('Build') {
steps {
sh 'mvn -B -DskipTests clean package'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
post {
always {
junit 'target/surefire-reports/*.xml'
}
}
}
}
}
7、同样commit到本地仓库 ,然后到管理平台 运行
8、增加 deliver 环节,同样,修改 Jenkinsfile文件
pipeline {
agent {
docker {
image 'maven:3-alpine'
args '-v /root/.m2:/root/.m2'
}
}
stages {
stage('Build') {
steps {
sh 'mvn -B -DskipTests clean package'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
post {
always {
junit 'target/surefire-reports/*.xml'
}
}
}
stage('Deliver') {
steps {
sh './jenkins/scripts/deliver.sh'
}
}
}
}
9、同样commit到本地仓库 ,然后到管理平台 运行
一、普通版本安装
https://www.jenkins.io/zh/doc/pipeline/tour/getting-started/
1、准备:由于后面构建我们采用脚本的需要,先自行安装好 jdk、git、maven
2、安装 jenkins
(1)下载 war包:https://www.jenkins.io/zh/doc/pipeline/tour/getting-started,上传到服务器
(2)到 war包目录执行 java -jar jenkins.war --httpPort=7070 &,访问 http://ip:7070 ,密码出现在启动日志里
(3)登录进去后,安装推荐插件,最后创建自己的用户如:lin/123456,其他的默认即可
(4)到 “全局工具配置” jdk、maven、git(可看每一个配置地址如: echo $JAVA_HOME、echo $MAVEN_HOME)
(5)在服务器上用 git 生成 公私钥(用 ssh-keygen -t rsa 命令,然后到 /root/.ssh 下找到对应的文件),把公钥放到 gitlab/github上(id_rsa.pub),私钥放 jenkins服务器上的 “凭据管理”(id_rsa里内容)
(5)到 “插件管理” 安装构建插件:Deploy to container 和 Maven Integration
(6)创建项目,选 “Maven 项目”
(7)服务器上指定目录下放上两个脚本文件(stop.sh、replace.sh), jenkins构建后则会执行配置的 shell脚本,进行更新
(8)我们可以直接发送 Get接口请求来执行构建
- “触发远程构建” ,比如下图这里配置的,利用 token 就可以通过 接口的形式触发构建(拼接地址如:http://jenkins.lin.com:7070/job/lin-jenkins/build?token=linToken)
(9)可结合 钩子 webhook,做到提交代码自动触发
- 如果是 github,可以直接把上面 第八步的 Get接口请求地址直接放到配置中即可(后面的操作都不需要)
- 如果是 gitee,先要安装插件:Generic Webhook Trigger,然后到项目下勾选
- 配置 api token,先到 “全局安全配置” 打开功能,然后到 “系统管理 -- 管理用户 -- 某个用户 -- 设置”,查看
- 到 git仓库,指定项目下,配置相应的 webhook:http://<User ID>:<API Token>@<Jenkins IP地址>:端口/generic-webhook-trigger/invoke?token=xxx,这里的 token就是第八步中我们看到的令牌(如:http://lin:94205058a70a188a6e52db880727bddf@xxxx:7070/generic-webhook-trigger/invoke?token=linToken)
- 注意点:这里要特别注意,因为 git仓库上执行远程构建,会被 jenkins的 csrf 防护拦截导致构建不了,而低版本 jenkins可以直接在 “全局安全配置” 中 csrf模块关闭但高版本已经没有该按钮,所以高版本可以通过启动时增加参数来关闭该功能:
-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
完整启动命令:nohup java -jar jenkins.war --httpPort=7070 -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true &
注:如果遇到安装插件失败,可能是插件版本太新而 jenkins版本太旧导致,直接升级 jenkins,重启完成后去 “插件中心” 重新更新插件