一、概要
1. 承上启下
2. 概念
Pipeline用于顺序执行应用部署所需的任务,比如Build(编译)、Test(编译)和Deploy(部署)等。Pipeline是Jenkins的核心组成部分。
Pipeline定义在Jenkinsfile中,它支持两种语法定义,一种是Declarative Pipeline syntax(声明式管道语法),另一种是Scripted Pipeline syntax(脚本式管道语法)。
Pipeline包含以下重要概念:
a. Node(节点)
节点是Jenkins环境的一部分,它用于执行Pipeline。
b. Stage(阶段)
一个Pipeline由若干Stage组成,比较通用的阶段有Build、Test和Deploy。
c. Step(步骤)
Step是Stage的组成部分,一个Step是一个具体的Task,比如执行Shell命令。
3. 官方最佳实践
a. 将JenkinsFile保存在专门的SCM中,Pipeline运行时先签出SCM,加载,然后再按照其中的定义执行;
b. Pipeline中的Stage使用脚本执行,如果全部使用Script则会使Pipeline定义过于复杂且运行时导致资源占用高的问题。
4. 方案设计
(1) Stage(阶段)设计
共设计以下几个阶段:
0. Declarative: Checkout SCM,该阶段是系统自动生成的阶段,用于签出Pipeline定义文件;
a. Initialization: 初始化阶段,工作目录清理,源代码迁出;
b. Build: 源代码编译;
c. Test: 测试阶段,该阶段可以执行TA测试,也可以运行工程师编写的单元测试;
d. Deploy: 部署阶段,该阶段读取配置文件,读取正在运行的服务端口计算出新服务端口,将应用部署至目标服务器,绑定固定端口并运行;
e. Post: 部署完成后阶段,该阶段将修改Nginx配置,将新请求转发至新服务(端口),由前向后(Nginx->Node.js->Java)执行优雅退出;
f. Clear: 清理阶段,将原有服务下线,清理工作目录。
(2) 部署文件
a. 在GitLab中创建一个单独的项目,用于存放以下文件:
i. Pipeline定义文件;
ii. 各个阶段的Shell脚本;
iii. 配置文件;
二、配置
1. 与GitLab集成
(1) 安装插件
a. 登录Jenkins;
b. 进入Dashboard->Manage Jenkins->Plugins,点击"Available plugins",搜索GitLab;
c. 点击"Install without restart",安装GitLab插件,安装完需要重启Jenkins。
(2) Personal Access Tokens
a. 登录GitLab,点击右上角的头像->Edit Profile->Access Token;
b. 设置Token name, Expiration date, Select scopes选择api,点击"Create personal access token";
c. 将顶部的Your new personal access token文本框中的内容保存下来,下面配置Jenkins需要用到;
d. 登录Jenkins,进入Dashboard->Manage Jenkins->Credentials,在Stores scoped to Jenkins下面选择System,再选择Global credentials (unrestricted),点击页面右上角"Add Credentials"按钮:
e. 设置Kind,API Token,ID,其中API Token为上面在GitLab中获取的Personal Access Token,点击"Create"。
(3) SSH Key
a. 在Jenkins的Node/Agent所在的机器上生成SSH密钥对,参考Linux Tools --- SSH;
注意:理论上,所有Node/Agent所在的机器均要生成SSH密钥对,以便访问GitLab签出代码。
b. 分别获取公钥和私钥字符串,并保存下来,后续配置会用到:
cat ~/.ssh/id_rsa #私钥 cat ~/.ssh/id_rsa.pub #公钥
c. 登录GitLab,点击右上角的头像->Edit Profile->SSH Keys:
i. 设置Key为公钥;
ii. 设置Title为生成该公钥的主机名称,比如192.168.0.1部署了Jenkins的Node1,此处可以设置Title为:
<登录名>@<IP> #格式 [email protected] #例子
iii. 点击"Add Key"。
注意:理论上,所有Node/Agent所在的机器均要配置,以便访问GitLab签出代码。
d. 登录Jenkins,进入Dashboard->Manage Jenkins->Credentials->System->Global credentials (unrestricted),点击"Add credentials":
Kind选择"SSH Username with private key";
Username是你在GitLab登录并设置公钥的那个账户名;
Key设置为私钥。
(4) 配置Jenkins的GitLab模块
a. 登录Jenkins,进入Dashboard->Manage Jenkins->System,找到GitLab配置节
可点击该配置节右下角的"Test Connection"按钮来测试配置是否正确。
(5) Pipeline
a. 登录Jenkins,进入"Dashboard"页面,点击左上角的"+ New Item"按钮:
点击"OK"进入"Configure"页面。
b. 在"Configure"页面,找到"Pipeline"配置节:
i. Definition选择Pipeline script from SCM,意思是使用存放在GitLab中的Pipeline脚本(Jenkinsfile);
ii. Repository URL填写GitLab中存储Jenkinsfile的项目地址,本例中是jenkins/springboot;
iii. Credentials选择上面"(3) SSH Key"中配置的凭据;
IV: Branches to build填写分支名称;
V: Script Path:是Jenkinfile在项目内的路径。
(6) 测试
a. 登录Jenkins,进入Dashboard->My First Pipeline,点击"Build Now":
三、参考
1. 官方
https://www.jenkins.io/doc/book/pipeline/
https://www.jenkins.io/doc/book/pipeline/jenkinsfile/
标签:pipeline,登录,GitLab,Pipeline,---,点击,SSH,Jenkins From: https://www.cnblogs.com/eagle6688/p/17530577.html