首页 > 其他分享 >Jenkins 系列3 --- pipeline

Jenkins 系列3 --- pipeline

时间:2023-07-16 14:11:52浏览次数:39  
标签:pipeline 登录 GitLab Pipeline --- 点击 SSH Jenkins

一、概要

1. 承上启下

Jenkins系列

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

相关文章

  • 随笔-解决登录校验问题
    问题:在退出登录后(广义场景)在未重新登录的情况下仍能进入界面,用户数据保密问题没有解决。分析问题:需要进行登录校验(即当服务端接收到请求后,首先要将请求进行校验,如果已经登录,则正常访问,没有则返回错误结果)如何实现(会话技术,统一拦截技术):1.在登录成功后将登录成功的信息在一个地方......
  • 后端编程开发 --- 学习路线
    1.选择一门后端语言。比如脚本语言,python、ruby、php、nodejs(typescript)。函数语言,elixir、scala、erlang、clojure、haskell。其他语言,java,.net,golang,rust。新人推荐nodejs或php。2.写一些入门程序。比如爬虫,json解析,自动化任务。3.学习依赖包管理和项目创建。比如java的maven,p......
  • AI-5 深度学习计算
    5.1块和层我们一直在通过net(X)调用我们的模型来获得模型的输出。这实际上是net.__call__(X)的简写。这个前向传播函数非常简单:它将列表中的每个块连接在一起,将每个块的输出作为下一个块的输入。importtorchfromtorchimportnnfromtorch.nnimportfunctionalasFnet......
  • 仿微信聊天程序 - 01. 开篇
    本文是仿微信聊天程序专栏的第一篇文章,主要简要说明仿微信聊天程序的功能需求及架构设计。仿微信聊天程序专栏主要记录了使用JavaFX+Netty开发仿微信聊天程序---米虫IM。功能需求米虫IM已经完成的功能如下:用户注册功能用户登录功能搜索好友功能添加好友功能文本聊天......
  • 仿微信聊天程序 - 02. 注册界面
    本文是仿微信聊天程序专栏的第二篇文章,主要记录了【注册界面】的实现。界面设计仿微信聊天程序的注册界面,是一个表单,由三个输入框和一个按钮组成,具体UI展示如下图所示:界面布局页面布局使用fxml,采用VBox从上到下布局,中间的表单使用formsfx,所以只需要预留一个StackPane给表单即......
  • 仿微信聊天程序 - 03.登录界面
    本文是仿微信聊天程序专栏的第三篇文章,主要记录了【登录界面】的实现。界面设计仿微信聊天程序的登录界面跟注册界面差不多,只是比注册界面少了一个昵称输入框,如下图所示:界面布局登录界面的界面布局和注册界面的布局差不多,也是使用fxml,采用VBox从上到下布局,中间的表单使用form......
  • 仿微信聊天程序 - 04. 主界面
    本文是仿微信聊天程序专栏的第四篇文章,主要记录了【主界面】的实现。界面设计仿微信聊天程序的主界面总体跟微信的主界面差不多,但是比微信的主界面简单得多,如下图所示:界面布局主界面整个界面采用HBox布局,分为左中右三个部分,最左边是菜单栏,中间是联系人列表或对话信息列表,最右......
  • 仿微信聊天程序 - 05. 聊天列表
    本文是仿微信聊天程序专栏的第五篇文章,主要记录了【聊天列表】的界面实现。界面设计聊天列表在主界面左边,主要显示最近的聊天记录,以及添加好友的信息等,总体界面设计如下:界面布局聊天列表的布局分为两部,列表布局和列表中的每一行的布局,其中列表布局的完整fxml如下:<HBoxprefH......
  • 仿微信聊天程序 - 07. 好友信息
    本文是仿微信聊天程序专栏的第七篇文章,主要记录了【好友信息】的界面实现。界面设计这里的好友信息界面没有处理复杂的功能,仅仅显示好友信息,支持在此界面中发起聊天而已,总体的界面设计如下图所示:界面布局好友信息仅仅只是信息展示,布局相对比较简单,这里采用VBox和HBox组合使用......
  • 仿微信聊天程序 - 06. 好友列表
    本文是仿微信聊天程序专栏的第六篇文章,主要记录了【好友列表】的界面实现。界面设计好友列表在主界面左边,界面UI风格跟聊天列表类似,只不过相比聊天列表更加简单,不需要显示聊天信息,时间等,总体界面设计如下:界面布局跟好友列表一样,聊天列表的布局也分为两部,列表布局和列表中的每......