实战一:在Jenkins基于pipeline拉取Gitlab代码,部署到后端tomcat服务器上
1、pipeline介绍
官网地址:https://jenkins.io/2.0/
pipline是帮助Jenkins实现CI到CD转变的重要角色,是运行在 jenkins 2.X版本的核心插件,简单来说 Pipline 就是一套运行于 Jenkins 上的工作流框架,将原本独立运行
于单个或者多个 节点的任务连接起来,实现单个任务难以完成的复杂发布流程, 从而实现单个任务很难实现的复杂流程编排和任务可视化 Pipeline 的实现方式是一套
Groovy DSL ,任何发布流程都可以表述为 一段 Groovy 脚本。
2、pipline语法
Stage阶段:一个pipline可以划分为若干个 stage ,每个 stage 都是一个操作,比如clone 代码、代码 编译 、 代码 测试和代码部署 阶段是一个逻辑分组, 可以 跨多个 node执行。
Node节点:每个node都是一个jenkins节点,可以是jenkins master也可以是jenkins agent node是执行step 的具体服务器。
Step:步骤 step 是 jenkins pipline 最基本的操作单元 从 在 服务器创建目录到 构建容器 镜像 ,由各类 Jenkins 插件 提供实现,例如: sh “make”
3、pipline优势
可持续性: jenkins 的重启 或者 中断后不影响已经执行的 Pipline Job
支持暂停: pipline 可以选择 停止并 等待人工输入 或 批准后再继续执行。
可扩展通过 groovy 的编程更容易的扩展插件。
并行执行: 通过 groovy 脚本可以实现 step stage 间的并行执行,和更复杂的相互依赖关系 。
4、创建一个pipeline-test任务
1、创建一个pipeline-test任务,jenkins--->创建New任务

2、创建一个简单的pipeline job测试,丢弃旧的构建,设置保留的时间,也可以不设置。

选择流水线语法的选项,可以查看克隆gitlab网站上代码的pipeline语法:
git credentialsId: '26375340-9ad6-41f6-82b9-73571c30e266', url: 'git@192.168.7.100:linux_gitlab/web1.git' # pipeline克隆gitlab语法
3、开始创建pipeline脚本,先选择pipeline范例

4、配置pipeline语法脚本,其中192.168.7.104的地址是后端tomcat服务器的IP地址
node("jenkins-node1"){ # 括号中指定用jenkins-slave的主机进行克隆代码并进行一系列的操作。
stage("clone 代码"){
sh 'cd /var/lib/jenkins/workspace/pipeline-test && rm -rf ./*' # 注意,一开始没有此目录,用shell命令切换此目录下无法成功,刚开始构建时,可以创建此目录。
git credentialsId: '26375340-9ad6-41f6-82b9-73571c30e266', url: 'git@192.168.7.100:linux_gitlab/web1.git'
echo "代码 clone完成"
}
stage("代码打包"){
sh 'cd /var/lib/jenkins/workspace/pipeline-test && tar czvf code.tar.gz ./*'
echo "代码打包完成"
}
stage("停止tomcat服务"){
sh 'ssh www@192.168.7.104 "/apps/tomcat/bin/shutdown.sh"'
}
stage("代码复制"){
sh 'cd /var/lib/jenkins/workspace/pipeline-test && scp code.tar.gz www@192.168.7.104:/data/tomcat/tomcat_appdir/'
}
stage("代码部署"){
sh 'ssh www@192.168.7.104 "cd /data/tomcat/tomcat_appdir/ && rm -rf /data/tomcat/tomcat_webdir/myapp/* && tar xvf code.tar.gz -C /data/tomcat/tomcat_webdir/myapp/ "'
}
stage("启动tomcat服务"){
sh 'ssh www@192.168.7.104 "/apps/tomcat/bin/startup.sh"'
}
}如果使用jenkins-node1的主机,需要将本主机的ssh公钥复制到后端tomcat服务器上,实现免秘钥登录
[root@jenkins-slave ~]# ssh-keygen
[root@jenkins-slave ~]# ssh-copy-id www@192.168.7.104
5、立即构建pipeline-test

6、查看此时构建执行的脚本结果
Started by user 974212253@
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on jenkins-node1 in /var/lib/jenkins/workspace/pipeline-test
[Pipeline] {
[Pipeline] stage
[Pipeline] { (clone 代码)
[Pipeline] sh
+ cd /var/lib/jenkins/workspace/pipeline-test
+ rm -rf ./code.tar.gz ./index.html
[Pipeline] git
using credential 26375340-9ad6-41f6-82b9-73571c30e266
Fetching changes from the remote Git repository
> git rev-parse --is-inside-work-tree # timeout=10
> git config remote.origin.url git@192.168.7.100:linux_gitlab/web1.git # timeout=10
Fetching upstream changes from git@192.168.7.100:linux_gitlab/web1.git
> git --version # timeout=10
using GIT_SSH to set credentials
> git fetch --tags --progress git@192.168.7.100:linux_gitlab/web1.git +refs/heads/*:refs/remotes/origin/* # timeout=10
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
Checking out Revision 5bd130b5a0936bafeb55b3a3617308902feb29e4 (refs/remotes/origin/master)
> git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
> git config core.sparsecheckout # timeout=10
> git checkout -f 5bd130b5a0936bafeb55b3a3617308902feb29e4 # timeout=10
> git branch -a -v --no-abbrev # timeout=10
> git checkout -b master 5bd130b5a0936bafeb55b3a3617308902feb29e4 # timeout=10
Commit message: "Add index.html"
[Pipeline] echo
代码 clone完成
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (代码打包)
[Pipeline] sh
> git rev-list --no-walk 5bd130b5a0936bafeb55b3a3617308902feb29e4 # timeout=10
+ cd /var/lib/jenkins/workspace/pipeline-test
+ tar czvf code.tar.gz ./index.html
./index.html
[Pipeline] echo
代码打包完成
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (停止tomcat服务)
[Pipeline] sh
+ ssh www@192.168.7.104 /apps/tomcat/bin/shutdown.sh
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (代码复制)
[Pipeline] sh
+ cd /var/lib/jenkins/workspace/pipeline-test
+ scp code.tar.gz www@192.168.7.104:/data/tomcat/tomcat_appdir/
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (代码部署)
[Pipeline] sh
+ ssh www@192.168.7.104 'cd /data/tomcat/tomcat_appdir/ && rm -rf /data/tomcat/tomcat_webdir/myapp/* && tar xvf code.tar.gz -C /data/tomcat/tomcat_webdir/myapp/ '
./index.html
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (启动tomcat服务)
[Pipeline] sh
+ ssh www@192.168.7.104 /apps/tomcat/bin/startup.sh
Tomcat started.
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS7、此时可以看到jenkins-slave服务器上已经有代码
[root@jenkins-slave ~]# cd /var/lib/jenkins/workspace/pipeline-test
[root@jenkins-slave pipeline-test]# ls
code.tar.gz index.html
[root@jenkins-slave pipeline-test]# cat index.html
linux web 123456[root@jenkins-slave pipeline-test]#8、后端tomcat服务器上也已经有了代码
[root@tomcat-web1 ~]# cd /data/tomcat/tomcat_webdir/myapp/
[root@tomcat-web1 myapp]# cat index.html
linux web 123456[root@tomcat-web1 myapp]#9、访问tomcat网站,成功访问网页,此时基于pipeline流水线拉取代码成功。

Jenkins视图
1、列表视图
1、我的视图----->列表视图使用场景比较多,用于将一个业务的job保存至一个列表视图进行分类管理,即不同业务的job放在不同的列表视图中 。

2、创建一个列表视图,命名为pipeline-view

3、创建完pipeline-view,选择自己已经创建的项目。

4、在新创建的pipeline-view列表视图后,可以查看到分配的相同业务的项目。

















