目录

一、Master-Slave架构

1.1、开始部署jenkins-slave节点

1.2、slave构建任务

二、Pipeline流水线

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配置里调用脚本

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐