Jenkins Piplines配置使用

释放双眼,带上耳机,听听看~!

什么是Pipline

Pipline是一套运行在Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的负载流程编排与可视化
Pipline是Jenkins2.X最核心的特性,帮助Jenkins实现从CI持续集成到CD持续部署与DevOps的转变

  • Jenkins Pipline是一组插件,让Jenkins可以实现持续交付管道落地和实施
  • 持续交付管道(CD Pipline)是将软件从版本控制阶段到交付给用户或客户的完整过程的自动化表现(软件每一次更改,提交到源代码管理系统,都要经过一个负载的过程才能被发布)
  • Pipline提供了一组可扩展的工具,通过Pipline Domain Specific Language (DSL)syntax可以达到Pipline as Code的目的
  • Pipline as Code:Jenkinsfile存储在项目的源代码库中

Pipline的优势

  • 代码:Pipline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代CD流程。
  • 可持续性:Jenkins重启或者终端后都不会影响Pipline Job。
  • 停顿:Pipline可以选择停止并等待人工输入或批准,然后再继续Pipline运行。
  • 多功能:Pipline支持现实世界的复杂CD要求,包括for/join子进程,循环和并行执行工作的能力。
  • 可扩展:Pipline插件支持其DSL的自定义扩展以及其他插件集成的多个选项。

Pipline核心概念

Node

  • 类型:节点
  • 描述:一个Node就是一个Jenkins节点,或者是Master,或者是Agent,是执行Step的具体运行环境

Stage

  • 类型:阶段
  • 描述:一个pipline可以划分为若干个Stage,每个Stage代表一组操作,例如:“Build”,“Test”,“Deploy”。

Step

  • 类型:步骤
  • 描述:Step是最基本的操作单元,小到创建一个项目,大到构建一个Docker镜像,由各类Jenkins Plugin提供,例如:sh ‘make’

创建Pipline

Jenkins主页面新建任务

编写Pipline语法

点击立即构建,结果如下:

鼠标放到各个步骤上面,点击logs,可以看到详细步骤

Pipline从GitLab拉取代码

环境:需要一台GitLab服务器,部署GitLab服务器请参考:GitLab安装
GitLab部署好之后,开始在GitLab界面操作

创建项目

GitLab创建Project,创建Project之前我们先创建组
创建组

输入组信息

创建项目

创建好之后新建一个测试文件

创建Depoly Keys

Jenkins拉取GitLab仓库的代码需要认证,所以要创建Deploy Keys来进行安全认证
在GitLab页面新建Deploy Keys

输入标题,然后在Jenkins机器上生成密钥,然后把公钥复制进去
Jenkins生成Key

[root@abcops_node1 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:tk1wDzfpSdos2Cf8y2EfGYkexUFdQG8FhvZ6esVsl2I root@abcops_node1
The key's randomart image is:
+---[RSA 2048]----+
|             +B++|
|            o+ oo|
|        . o.=.o o|
|         * X =.o |
|        S B X.oo.|
|       . + *.E.+*|
|        . . *o+o.|
|           o.+.. |
|            o..  |
+----[SHA256]-----+

复制公钥

[root@abcops_node1 ~]# cat /root/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuF6OWfef3dgLbBjMwk20MuYyQKlMTlrPWSlHNb45Dxwmx676wuIYQTcbdJSBs7IJtpuAYQtBgiswtETbOJErtp7WrcFQVI04WZ6mBsJ2mfQeOxQRzMNfTUbA22Dq5G8bJ2cVs5iRqj43EDU9GJXvRPs7vpYRq3gMiwkOHo6JLD4PpHL24TB2DEWbaROS89B2AqcXRUXiJ7LIBEMfwM5JXZLBpzq6eqK13VX2D7pbinSCFeCEYhBXY7HR79QOWBdBwfz0tJB8NY4TYwh/ZxmCEofCvlxha4CjgiUakc56Tjsiz7KToUHsUJWw7KIlBqOJkVLdET52bYaO5qhIkQ3+z root@abcops_node1

Jenkins代码拉取

这个时候需要我们自己来编写pipline语法了,jenkins从gitlab拉取代码需要使用到git,所以我们在jenkins机器上安装git

[root@abcops_node1 ~]# yum install git -y       

然后需要在pipline中写git拉取代码,如果不会,可以进行生成语法

查看git拉取命令

[root@abcops_node1 ~]# cat /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEArhejln3n93YC2wYzMJNtDLmMkCpTE5az1kpRzW+OQ8cJseu+
sLiGEE3G3SUgbOyCbabgGELQYIrMLRE2ziRK7ae1q3BUFSNOFmepgbCdpn0HjsUE
czDX01GwNtg6uRvGydnFbOYkao+NxA1PRiV70T7O76WEat4DIsJDh6OiSw+D6Ry9
uEwdgxFm2kTkvPQdgKnF0VF4ieyyARDH8DOSV2Swac6unqitd1V9g+6W4p0ghXgh
GIQV2Ox0e/UDlgXQcH89LSQfDWOE2MIf2cZghKHwr5cYWuAo4IlGpHOek47Is+yk
6FB7FCVsOyiJQajiZFS3RE+dm2GjuaoSJEN/swIDAQABAoIBADoQ8mRInG1CdFNf
bwV9trquzL5tD4aSFmucIEq4MahTo90vN0w0T6rydijesEEEZcBzD32oE16QDOff
PPtmyYMZFBQZhEIEo4//hV8XbI3SWAn7lq9hFCuMrIyudG+3XweGVj4rSOwt82f3
1IAeEn1JSLZP66nFYSBf0SxVnNURy0phw/Zc51EIyWm1vGwYcCNXi+AndzMwfA9h
mVxPA36Qk5KUQl9d1X4xgYPXD4tafZELD3AHWDZ447famE7At1matz/v6c5Fzx9q
sIaFk0lmSRhp404xkw+vJvn0rS6ix82/KY0OHIY4AAdAMeOnU5vpWw7UBCOLqN22
kIH7JFECgYEA57I9xywoQkk/OfrC+OuRijkcmgLPRRQ0FI6dgZaYk9Z1O+b83wiV
tF0mNKV3pnYYttSpKNKcxIWUhxgtkqBTBv1FFIPTtaQXXBzrH30HhFAc7PgpD1mh
soVLCyl3XjlzQS54XVQN7t7ITnZB5I8v+foZ6Bk04z64F7Fka69hWdkCgYEAwFqO
FHf2fXQGiyTrW4j/lm602Myzd4Hbnhe/0t1gxGuArNdUx8FzaBRUOdPV6g9LPRZZ
05eC5q748gfOO2M8LCN1vI6rMKTUx6q1Tu6HNbFDUcDVlEOyLg8Ly5OVWmr+78gs
siaKIgFh3kRRkScOlqecFa5CgBdPQkH4HjYRQmsCgYEAl2pffyM3aCJQJIbhFiV0
pn0uWOPPKpjKdEjDXCXbrnmvgacxyFvm4ckiJ7OfHvT8r7cImXoSI0gcybCeT71g
pSetFnwURhdngLYRXjGqUOi+Dosa4kI0LuN3KGM/9B7dWFKTLIK63ElRZB1acJC2
zMmKVqjqbDvXuPwf4VPq7fkCgYAI7CprCKWGbDthePTx6gjxEXGSHOy2Pm/RhYiA
X4R9l/8ABX0JRw/zY/4EMK9bjBoRW1gPWJfZ24Pwtiv61T+VTI/Jj1ShjQPRvzlp
z+a1tuNIh4lgt0Msn8YMS2xCJXRt6vsnyGHf8fB4PvMJqKYkluHGn662Al7K1ASO
YjOqwQKBgQDb/8+XTApmwjxm5KOwzxsgaJt4zVl3SWyTBdWQZ8tg6se9CPvTQTfL
W8o+0j1/ZWPY5FTMc1wpCYUX/+1eaEsehjQ+YKhyWIlOhtPLa+moi17ZAMmq70RX
LkLNbapleXJZLE4V4ZPZ6ySf/BkjmFegY712GyYFJTX5U84rbs0Yvg==
-----END RSA PRIVATE KEY-----

你会发现它还是报错,接着往下看,进入GitLab,进入我们创建的项目

然后到Jenkins中重新选择一下凭据,在此步骤如果重新选择过后还是报错,可在评论区留图,然后点击生成流水线,会自动生成以下代码,然后复制代码

复制代码到我们的pipline语法中

保存后点击立即构建

构建中Jenkins跟你交互,是否部署到开发环境,如果代码没问题,我们点击继续,否则abort可终止

立即构建后可查看构建日志

代码存放目录

当Jenkins从GitLab拉取代码到本地后,那么Jenkins会将代码存放在哪里呢

Jenkins会把代码存放到以下目录中,并以项目名称来区分
/var/lib/jenkins/workspace/

#可以看到我的workspace下有两个项目
[root@abcops_node1 /]# ls /var/lib/jenkins/workspace/
pipline-demo  pipline-demo@tmp

[root@abcops_node1 /]# ls /var/lib/jenkins/workspace/pipline-demo
readme

#查看代码内容
[root@abcops_node1 /]# cat /var/lib/jenkins/workspace/pipline-demo/readme 
Jenkins从GitLab拉取代码测试专用

人已赞赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索