| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 一文搞懂jenkins -> 正文阅读 |
|
[系统运维]一文搞懂jenkins |
简介Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。 为什么要使用Jenkins为什么要用Jenkins?我说下我以前开发的痛点,在一些中小型企业,每次开发一个项目完成后,需要打包部署,可能没有专门的运维人员,只能开发人员去把项目打成一个exe包,可能这个项目已经上线了,需要把服务关,在部署到服务器上,将项目启动起来,这个时候可能某个用户正在操作某些功能上的东西,如果你隔三差五的部署一下,这样的话对用户的体验也不好,自己也是烦的很,总是打包拖到服务器上。希望小型企业工作人员学习一下,配置可能复杂,但是你配置好了之后,你只需要把代码提交到Git或者Svn上,自动构建部署,非常方便。 jenkins的安装和配置1.安装java
2.下载jenkins https://mxshop-files.oss-cn-hangzhou.aliyuncs.com/jenkins-2.284-1.1.noarch.rpm 3.上传安装包并安装
4.修改jenkins配置
可以修改下面两个配置
5.启动jenkins
6.关闭防火墙
7.在浏览器中访问 输入 http://192.168.0.104:8088 会看到下面页面 看到下面内容:
接下来进入插件安装提示页面
然后安装提示一路点击 最后进入主界面 jenkins插件管理jenkins本身功能简单,但是jenkins提供的插件机制使得jenkins可以开发很多插件来使得jenkins很强大。 但jenkins插件默认从国外官方地址下载,速度会很慢,所以需要在安装插件前将下载地址改为国内的下载地址 1. 修改插件下载地址1.修改default.json文件
1.进入 Manage Jenkins -》 Manage Plugin -> Advanced 最下面有 Update Site 设置为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
2. 安装常用插件1.汉化 课程中常用的插件地址, Localization: Chinese (Simplified)(汉化)
3.git Jenkins Pipeline 参数详解pipeline模式相对style free门槛较高, 比较复杂的构建 ,以及构建过程很重要 Pipeline 是什么Jenkins Pipeline 实际上是基于 Groovy 实现的 CI/CD 领域特定语言(DSL),主要分为两类,一类叫做 Declarative Pipeline,一类叫做 Scripted Pipeline。 Declarative Pipeline 体验上更接近于我们熟知的 travis CI 的 travis.yml,通过声明自己要做的事情来规范流程,形如:
而 Scripted Pipeline 则是旧版本中 Jenkins 支持的 Pipeline 模式,主要是写一些 groovy 的代码来制定流程:
一般情况下声明式的流水线已经可以满足我们的需要,只有在复杂的情况下才会需要脚本式流水线的参与。 过去大家经常在 Jenkins 的界面上直接写脚本来实现自动化,但是现在更鼓励大家通过在项目中增加 Jenkinsfile 的方式把流水线固定下来,实现 Pipeline As Code,Jenkins 的 Pipeline 插件将会自动发现并执行它。 语法Declarative Pipeline 最外层有个 pipeline 表明它是一个声明式流水线,下面会有 4 个主要的部分: agent,post,stages,steps,我会逐一介绍一下。 Agentagent 主要用于描述整个 Pipeline 或者指定的 Stage 由什么规则来选择节点执行。Pipeline 级别的 agent 可以视为 Stage 级别的默认值,如果 stage 中没有指定,将会使用与 Pipeline 一致的规则。在最新的 Jenkins 版本中,可以支持指定任意节点(any),不指定(none),标签(label),节点(node),docker,dockerfile 和 kubernetes 等,具体的配置细节可以查看文档,下面是一个使用 docker 的样例:
Tips:
Stages && StageStages 是 Pipeline 中最主要的组成部分,Jenkins 将会按照 Stages 中描述的顺序从上往下的执行。Stages 中可以包括任意多个 Stage,而 Stage 与 Stages 又能互相嵌套,除此以外还有 parallel 指令可以让内部的 Stage 并行运行。实际上可以把 Stage 当作最小单元,Stages 指定的是顺序运行,而 parallel 指定的是并行运行。 接下来的这个 case 很好的说明了这一点: 除了指定 Stage 之间的顺序关系之外,我们还可以通过 when 来指定某个 Stage 指定与否:比如要配置只有在 Master 分支上才执行 push,其他分支上都只运行 build Stepssteps 是 Pipeline 中最核心的部分,每个 Stage 都需要指定 Steps。Steps 内部可以执行一系列的操作,任意操作执行出错都会返回错误。完整的 Steps 操作列表可以参考 Pipeline Steps Reference,这里只说一些使用时需要注意的点。
Postpost 部分将会在 pipeline 的最后执行,经常用于一些测试完毕后的清理和通知操作。文档中给出了一系列的情况,比较常用的是 always,success 和 failure。 比如说下面的脚本将会在成功和失败的时候更新 gitlab 的状态,在失败的时候发送通知邮件,每个状态其实都相当于于一个 steps,都能够执行一系列的操作,不同状态的执行顺序是事先规定好的,就是文档中列出的顺序。 Shared Libraries同一个 Team 产出的不同项目往往会有着相似的流程,比如 golang 的大部分项目都会执行同样的命令。这就导致了人们经常需要在不同的项目间复制同样的流程,而 Shared Libraries 就解决了这个问题。通过在 Pipeline 中引入共享库,把常用的流程抽象出来变成一个的指令,简化了大量重复的操作。 在配置好 lib 之后,Jenkins 会在每个 Pipeline 启动前去检查 lib 是否更新并 pull 到本地,根据配置决定是否直接加载。 所有的 Shared Libraries 都要遵循相同的项目结构: 目前我们的使用比较低级,所以只用到了 vars 来存储全局的变量。 常用技巧发送邮件通知 结果同步到 gitlab 同样需要配置好 gitlab 插件,在 Pipeline 中指定 options: 然后就可以在 post 中根据不同的状态来更新 gitlab 了: 文档参考:Build status configuration 构建过程中可用的环境变量列表 Jenkins 会提供一个完整的列表,只需要访问 /env-vars.html/ 即可,别忘了需要使用 “${WORKSPACE}” 在 checkout 前执行自定义操作 部署到远程服务器并运行Send build artifacts over SSH插件 这个插件是jenkins连接linux系统的时候使用。以下针对插件的每个属性进行说明。 Name SSH Server的Name属性就是你希望连接的服务器。 Source files 这里输入的是你希望传到服务器的文件夹和文件。路径是相对jenkins的workspace的项目名称的。例如项目名称是Test_Project的go项目,编译打包后的路径为Test_Project文件夹下的target,则Surce files填入target/*.go。 Remove prefix 如果Source files为target/*.jar,但是不想把target目录创建到服务器端,这个时候就可以在Remove prefix里填入target。 Remote directory 这里指定文件将被拷贝到服务器的路径。 PS:被拷贝文件在服务器上的完整路径=登录服务器账号的默认路径+Remote Exec command 这里就是连接服务器之后需要执行的命令。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 0:41:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |