Jenkins持续集成工具 - Master-Slave架构以及Pipeline流水线
目录一、Master-Slave架构1.1、开始部署jenkins-slave节点1.2、slave构建任务二、Pipeline流水线2.1、利用pipeline-script方式直接执行流水线2.2、利用pipeline-script-from-SCM方式执行流水线一、Master-Slave架构实际生产环境jenkins主节点一般不直接处理job,而是分发至下属...
目录
2.1、利用pipeline-script方式直接执行流水线
2.2、利用pipeline-script-from-SCM方式执行流水线
一、Master-Slave架构
实际生产环境jenkins主节点一般不直接处理job,而是分发至下属slave节点构建任务
1.1、开始部署jenkins-slave节点
# slave构建job也需要java支持
[root@linux-node2 ~]# java -version
[root@linux-node2 ~]# mkdir /var/lib/jenkins
# 新增slave节点
Manage Jenkins---Manage Nodes---新建节点
选项解释参考:https://www.jianshu.com/p/2c5b19f587c2
# slave正常启动
# 网传节点机器slave进程可能是老版本,目前出现remoting.jar进程
[root@linux-node2 jenkins]# ps -ef | grep jenkins
root 1494 1448 0 14:35 ? 00:00:00 bash -c cd "/var/lib/jenkins" && java -jar remoting.jar -workDir /var/lib/jenkins -jar-cache /var/lib/jenkins/remoting/jarCache
root 1501 1494 9 14:35 ? 00:00:10 java -jar remoting.jar -workDir /var/lib/jenkins -jar-cache /var/lib/jenkins/remoting/jarCache
root 1623 1299 0 14:37 pts/0 00:00:00 grep --color=auto jenkins
1.2、slave构建任务
# job根据标签配置slave执行
# 任务在哪构建在哪部署,slave构建成功后同步至相应目录
# 也可以继续同步或者共享至其他生产服务器
[root@linux-node2 jenkins]# ll /var/lib/jenkins/workspace/web-01
总用量 12
-rw-r--r-- 1 root root 7 4月 12 14:47 123.html
-rw-r--r-- 1 root root 4 4月 12 14:47 1.html
-rw-r--r-- 1 root root 4 4月 12 14:47 index.html
-rw-r--r-- 1 root root 0 4月 12 14:47 master.html
二、Pipeline流水线
特点:
1、项目发布可视化,明确阶段,方便定位问题
2、一个Jenkinsfile文件管理项目整个生命周期
3、Jenkinsfile文件可以放项目代码中进行版本管理
2.1、利用pipeline-script方式直接执行流水线
# 创建流水线任务
# 直接写流水线代码执行
# 流水线怎么写可参考直接生成片段模板功能
2.2、利用pipeline-script-from-SCM方式执行流水线
# 让整个构建过程通过读取配置文件的方式开始执行,jenkins页面job无需太多配置,
# 如果有更新直接修改配置文件重新提交git库,jenkins直接再次构建即可。
# 本次构建直接读取git服务器内pipeline版本库的配置文件
# 创建pipeline版本库
[git@linux-node3 repos]$ pwd
/home/git/repos
[git@linux-node3 repos]$ mkdir pipeline.git && cd pipeline.git
[git@linux-node3 pipeline.git]$ git --bare init
初始化空的 Git 版本库于 /home/git/repos/pipeline.git/
# 本地上传pipeline脚本至版本库
[root@linux-node2 app]# pwd # 本地git库位置
/root/test-git/app
[root@linux-node2 app]# git clone git@192.168.56.13:/home/git/repos/pipeline.git # 首先下载好pipe版本库
正克隆到 'pipeline'...
warning: 您似乎克隆了一个空版本库。
[root@linux-node2 app]# cd pipeline # 准备往pipe版本库扔东西
[root@linux-node2 pipeline]# vim pipeline-script # 配置构建全过程
[root@linux-node2 pipeline]# cat pipeline-script # 注意:配置读取是pipeline版本库,不一定实际同步也是pipe库文件,具体看脚本怎么配置
node ('web') { //配置slave标签,否则默认jenkins服务端执行
stage('Checkout') { //pipeline语法片段生成的,用来checkout git库
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'dee660c8-a39d-4ce6-805a-744e33004e14', url: 'git@192.168.56.13:/home/git/repos/app.git']]])
}
stage('Build') { //模拟下其他过程而已
// Run the maven build
echo 'Build...'
}
stage('Results') {
echo 'Results...'
}
}
[root@linux-node2 pipeline]# git add pipeline-script # 告诉Git,把文件添加到仓库
[root@linux-node2 pipeline]# git commit pipeline-script -m 'pipe-test01' # 告诉Git,把文件提交到仓库:
[root@linux-node2 pipeline]# git branch # 告诉Git,当前是哪个分支在搞事情
* master
[root@linux-node2 pipeline]# git push origin master # 提交到共享库
Counting objects: 3, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 502 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.56.13:/home/git/repos/pipeline.git
* [new branch] master -> master
# 流水线job配置里调用脚本
更多推荐
所有评论(0)