Jenkins操作文档

news2024/12/23 4:24:02

前言

jenkins概述

持续集成是一种实践,而jenkins可以帮助团队去尽量好的去完成这种实践

  • jenkins是⼀个开源软件项⽬,是基于Java开发的⼀种持续集成⼯具,⽤于监控持续重复的⼯作,旨在提供⼀个开放易⽤的软件平台,使软件项⽬可以进⾏持续集成
  • Jenkins是基于java语言的开源持续集成工具,提供了一套非常易用的用户界面
  • jenkins类似于eclipse,基于插件化的架构,方便功能的扩展,目前有几百个现成插件可以使用,这些插件涵盖从版本控制、构建工具、代码质量、构建通知、集成外部系统、UI定制、游戏等等各个方面

持续集成作用

  • 场景一:某项目本地更新时未拉取最新代码导致更新后的服务和其他人员联调出现接口不通,请求错误等异常。
  • 场景二:每次更新需要人手动去编译打包最新的代码并上传到服务器进行部署。
  • 场景三:同一套服务需要部署多个环境进行测试、发布等等,需要手动去拷贝上传部署等等。
  • 场景四:团队成员或者teamleader想了解当前项目的状态,以及更新部署历史记录等。

持续集成就是用来解决以上问题,它的价值主要在于减少重复的步骤,降低项目的风险,任何时间任何地点生成可用的软件,增强项目的可见性等。

1. 登录jenkins

浏览器访问:http://127.0.0.1:8080/
首次启动会出现如下界面:
在这里插入图片描述
首次进入需要输入初始密码来解锁,初始密码查看方法: sudo cat /var/lib/jenkins/secrets/initialAdminPassword

因为部署过程已经配置过了,所以这里我们直接输入账户/密码登录:admin/root
在这里插入图片描述
登录后显示界面如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/f21dfa3ace554a5096aab8e3951ef1ad.png

2.Jenkins基本设置

Jenkins的基本设置都在系统的后台设置中,具体路径为:系统管理->系统配置

2.1 设置JDK

在这里插入图片描述
可以在这里进行JAVA_HOME设置,当前系统已经设置JAVA_HOME,可以不需要再进行配置,同时可以让Jenkins再安装一个不同版本的JDK。

2.2 设置Maven

在这里插入图片描述

2.3 设置SSH Server

系统配置在最下方找到 “新增”
在这里插入图片描述
点击“高级”,进行配置下面的内容。
这里我们通过密钥的方式进行连接,已有秘钥无须在生成,只需要吧公钥配置到将要配置的ssh server服务器上即可。
在这里插入图片描述
在这里插入图片描述

配置完成,点击“Test Configuration”,出现 success即为成功!

第一次配置需要秘钥,找到一台服务器执行:ssh-keygen -m PEM -t rsa -b 4096
会在目录/root/.ssh生成id_rsa私钥、id_rsa.pub公钥,将公钥的内容写入到同目录下的authorized_keys文件(jenkins连接多台服务器,将公钥写入到相应服务器的authorized_keys文件即可)

3.Jenkins插件

系统管理->插件配置

3.1 Jenkins初次启动时直接进行安装

在这里插入图片描述

3.2 进入jenkins后找到插件管理页面进行安装

在这里插入图片描述
jenkins 的所有插件安装后需要重启才能够生效,如果jendkins国外官方插件地址的下载速度很慢,我们可以修改为国内镜像地址:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

在这里插入图片描述
备注:所有的插件安装完毕后,必须重启Jenkins才能使插件生效,不支持即插即用模式。

3.3 jenkins常用插件汇总

  • Git:支持使用Github、GitLab、Gerrit等系统管理代码仓库。
  • Subversion:支持Subversion系统管理源代码。
  • Build-timeout Plugin:任务构建超时插件
  • Naginator Plugin:任务重试插件
  • Build User Vars Plugin:用户变量获取插件
  • Build Pipeline Plugin View :Pipeline 管道流图表展示插件
  • Build Flow Plugin:工作流插件,支持DSL脚本定义工作流
  • Build Graph View Plugin:build Flow插件视图(安装后需要重新才能生效)
  • Multijob Plugin:多任务插件
  • Build-timeout Plugin:job构建超时插件
  • Build Timestamp Plugin :任务log时间戳插件,使得job log的每次输出前面都增加当时的时间
  • Parameterized Trigger Plugin:这是一个扩展型的插件,使各个job连接的时候可以传递一些job相关的信息
  • Join Plugin:这也是一个触发job的插件,亮点在于它触发job的条件是等待所有当前job的下游的job都完成才会发生。
  • Files Found Trigger:检测指定的目录,如果发现指定模式的文件则启动build。
  • BuildResultTrigger Plugin:根据其他的job的成功或失败来启动此build。
  • Publish Over SSH Plugin:通过ssh发布文件
  • Rebuild Plugin:重新执行插件
  • ws-cleanup Plugin :workspace清理插件
  • Cron Column Plugin: 通过定时任务例行的运行一些job
  • Job Configuration History Plugin:使用心得:使job具备版本管理的能力,diff和rollback功能更是非常赞
  • HTTP Request Plugin:使用心得:在构建前后可以通过该插件以http形式调用各种api接口实现和内部系统的联动
  • Periodic Backup:使用心得:备份是运维一个系统必须要保障的事情,该插件的恢复功能可能不可用,需要手工进行,好处在于可以定时备份
  • Job Import Plugin:使用心得:可以快速导入其他jenkins集群的已有job,需要认证的jenkins系统导入需要提供凭证才可以
  • Status Monitor Plugin:构建状态插件
  • Build Monitor View :基于该插件可以实现dashboard功能
  • Build Environment Plugin:构建环境插件,可以进行构建环境比较。

4. 新建任务

4.1 在控制面板中点击新建任务

输入项目名称后,这里我们选择构建一个自由风格的软件项目,然后点击确定
在这里插入图片描述
创建完成后的界面显示如下:
在这里插入图片描述

4.2 配置项目参数

点击配置

4.2.1 General

丢弃旧的构建,可以指定保留历史构建的天数和最大个数,超过限制会自动清理,避免磁盘空间浪费
在这里插入图片描述

4.2.2 源码管理

指定项目源码地址,并配置拉取代码需要的账号密码
在这里插入图片描述

4.2.3 构建触发器

可以指定当前项目的父项目,并在其父项目构建后可触发当前项目的构建
在这里插入图片描述
Jenkins支持多种Build 触发方式,尤其一些自动化触发方式非常有用

  • Build periodically,Jenkins 内置功能,可以设置类似crontab时间,周期性地自动触发构建。
  • Poll SCM,Jenkins 内置功能,类似Build periodically,可以设置类似crontab时间,不同的是不是直接进行构建,而是周期性地在后台检查所配置的SCM有没有更新,只有当有代码更新时才会触发构建。
  • Trigger builds remotely (e.g., from scripts),Jenkins 内置功能,远程触发构建,通过设置token可以支持远程脚本中触发Jenkins构建。
  • Gerrit Trigger,这个插件将Jenkins集成到Gerrit code review中,支持Jenkins配置Gerrit服务器等信息,实现Gerrit event 触发Jenkins 构建。
  • GitLab, 这个插件将Jenkins 集成到GitLab web hook中,支持Gitlab 分支及Merge Request等相关事件触发Jenkins构建。
  • GitHub Integration,这个插件将Jenkins集成到GitHub中,支持Gitgub分支及Pull requests 触发Jenkins 构建。
  • JIRA Trigge,这个插件将Jenkins集成到Jira WebHooks中,支持Jira issue的状态等变化时触发Jenkins构建。

这里也可以选择定时构建(提供一个类似cron的特性来定期执行这个项目)或者轮询SCM(对于CVS来说,这将是一个耗费资源的操作,因为每次轮询都需要Jenkins扫描整个工作区并与服务器进行验证)
在这里插入图片描述
定时构建语法如下:

  • 第一个*表示分钟,取值0~59
  • 第二个*表示小时,取值0~23
  • 第三个*表示一个月的第几天,取值1~31
  • 第四个*表示第几月,取值1~12
  • 第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日

例如:
每小时执行一次
H/59 * * * *
每两个小时执行一次
H H/2 * * *
每隔15分钟。(或许:07, :22, :37, :52)
H/15 * * * *

4.2.4 Build Steps

添加构建步骤->执行shell

运行shell脚本(默认为sh,但这是可配置的)以构建项目。脚本将以工作区作为当前目录运行,这里我们写入maven打包项目的相关命令
在这里插入图片描述

4.2.5 构建后操作

添加构建后操作,选send build artifact over SSH,将构建后的项目包通过SSH发送。
在这里插入图片描述

  • Name 选我们在设置中添加的SSH服务器;
  • Source files 配置需要send的项目jar包,如xxx/project.jar。注意该路径是相对.jenkins/workspace/taskName的,即完整路径是.jenkins/workspace/taskName/xxx/project.jar
  • Remove prefix 移除前缀
  • Remote directory 远程文件夹,(注意这里的跟是我们在系统配置中配置的文件夹为跟文件夹,而并非linux系统的"/")
  • Exec command 这里配置我们在远程服务器上提前编写好的脚本,Jenkins只是将打好的war包发送到远程服务器,但是发送到服务器之后的的操作则需要我们自己编写脚本实现,比如需要修改包名,移动位置,等。我这里配置的执行的命令如下:
    cd /usr/local/test/business-service
    mv …/target/*.jar ./
    docker-compose down
    docker-compose up -d --build
    docker image prune -f

最后点击确定即可。

4.3 构建项目

4.3.1 立即构建

当一个任务配置完成后,可以采用手动构建和触发器构建两种方式,在项目验证阶段,可以通过手动触发方式,点击任务区的“立即构建”,会在Build History中出现以下进度条:
在这里插入图片描述

4.3.2 查看构建信息

在这里插入图片描述

4.3.3 变更记录

可以查看CVS工具相关提交记录
在这里插入图片描述

4.3.4 控制台输出

构建过程的相关日志可在此处进行查看,便于排查问题
在这里插入图片描述

4.3.5 删除构建

点击确定即可删除当前构建历史记录
在这里插入图片描述

4.4 任务构建状态

Jenkins通过当前构建状态和构建稳定新
当前构建状态分为以下几种
项目构建完成,同时被认为是稳定的
项目构建完成,但被认定为不稳定
构建失败
作业已经禁止

Jenkins会基于一些后处理器任务为构建发布一个稳健指数(从0-100 ),越高越稳定
构建成功率>80%
构建成功率60%-79%
构建成功率40%-59%
构建成功率20%-39%
构建成功率0-19%

5. Docker部署脚本

进入SSH Server中配置的服务器目录下(这里以我配置的business-service服务为例):
远程服务器目录:/usr/local/test/business-service
在这里插入图片描述
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。

5.1 docker-compose.yml

使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。

version: '3.1'  
services:  
  business:  
    build:  
      context: ./  
      dockerfile: Dockerfile  
    image: business:v1.0.0  
    container_name: business  
    ports:  
      - 10890:10890  
    network_mode: host  
    volumes:  
      - /home/rts/nginx/userHelp:/opt/rts/userHelp  

5.2 Dockerfile

FROM openjdk:8-jdk-alpine  

ENV LANG en_US.UTF-8  
ENV LANGUAGE en_US:en  
ENV LC_ALL en_US.UTF-8  
  
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  
RUN echo 'Asia/Shanghai' >/etc/timezone  
  
COPY business-service-latest.jar  /usr/local/  
COPY application.properties  /usr/local/  
COPY bootstrap.yml  /usr/local/  
WORKDIR /usr/local/  
CMD java -jar business-service-latest.jar -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 

6. 用户管理

6.1 全局安全配置

Jenkins安装完成后,默认是不进行安全控制的,需要在系统配置中添加安全控制后,具体位置在系统管理的安全域中,Jenkins支持Jenkins专用用户数据库、LDAP、Servlet容器代理、MySql数据库。授权策略包括采用安全矩阵、登陆后可以做任何事、任何用户可以做任何事(没有任何限制)、项目矩阵授权策略、遗留模式等。建议采用Jenkins专用数据库,安全策略采用安全矩阵方式,已经能够基本满足现有的模式。如下图:
在这里插入图片描述
选择Jenkins专用用户数据库后,勾选允许用户注册选项。在添加用户或组,对其进行附权限。
用户注册入口在登录页,如下:
在这里插入图片描述
在这里插入图片描述
添加用户的基本信息,点击注册按钮后,用户注册完成,用户没有赋权限,登陆后的界面如下:
在这里插入图片描述
然后我们在登录管理员账号对新加的账号授权即可:
在这里插入图片描述

6.2 个性化设置

Jenkins对用户视图支持个性化定制,保证登陆用户只关注自身关注的项目视图,用户登陆后,默认一般显示如下图:
在这里插入图片描述
可以点击“+”增加个性化视图,出现如下视图:
在这里插入图片描述
在这里插入图片描述
选择列表视图选项,填写“视图名称”,以及需要的任务选项,同时可以选择需要展示的列,选择完成后保存即可,可以在首页上显示。
在这里插入图片描述

7. 钉钉机器人

Jenkins整合dingding json pusher,发送自定义消息到钉钉群
每个机器人每分钟最多发送20条消息到群里,如果超过20条,会限流10分钟。

7.1 获取access_token

下载钉钉,建群,添加机器人,获得Webhook中的access_token值
选择需要添加机器人的群聊,然后依次单击群设置 > 智能群助手。
在这里插入图片描述
在这里插入图片描述

7.2 下载钉钉插件

主页面-系统管理-插件管理-可选插件 搜索Dingding JSON Pusher Plugin
在这里插入图片描述

7.3 添加钉钉推送配置

项目配置完成后,添加构建后操作,选择Dingding JSON Pusher
在这里插入图片描述
钉钉access token填入access_token,不是整个路径只是路径后的access_token的值,比如
https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx,要填入的是xxxxxxxx

7.4 自定义钉钉推送内容

Json文件内容格式如下:

{  
    "at": {  
        "atMobiles":[  
            "@人员的手机号"  
        ],  
        "atUserIds":[  
            "@人员的账户"  
        ],  
        "isAtAll": false  
    },  
    "text": {  
        "content":"这里写自定义的消息内容"  
    },  
    "msgtype":"text"  
} 

附录

Jenkins 遇到检查更新中心: None of the tool installer metadata passed the signature check 时发生错误

默认:https://updates.jenkins.io/update-center.json
url 地址设置为:https://jenkins-zh.gitee.io/update-center-mirror/tsinghua/current/update-center.json

Docker脚本执行异常

提示异常:-bash: docker-compose: 未找到命令

cd /usr/local/bin #切换到安装路径
wget https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-Linux-x86_64 # 下载安装源
rename docker-compose-Linux-x86_64 docker-compose docker-compose-Linux-x86_64 # 重命名安装下载的安装包
chmod +x /usr/local/bin/docker-compose #授权
docker-compose version # 查看是否安装成功

Jenkins构建时间显示不正确

使用过程中发现 Jenkins 构建的时候和实际的时间相差8小时
访问URL:Jenkins访问地址/script
执行:System.setProperty(‘org.apache.commons.jelly.tags.fmt.timeZone’,‘Asia/Shanghai’)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/155051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“锂”想护航|深耕重点工段,用AI为锂电池安全生产加倍提速!

行业发展DEVELOPMENT -受益于新能源汽车市场的爆发增长、“双碳”政策影响下的储能市场扩大等影响,中国锂电行业现已进入高度产业化、规模化发展时期。锂电池生产工艺较长,生产设备庞杂,专用性强,而当前已迈入国际化竞争的锂电行业…

【Vue】032-尚硅谷-尚品汇-mockjs模拟数据---20230111

032-尚硅谷-尚品汇-mockjs模拟数据 官网链接 第一步:安装依赖包mockjs 安装mockjs npm install --save mockjs第二步:在src文件夹下创建一个文件夹mock。 第三步:准备模拟的数据。! mock/banner.json [{"id": "1","imgUrl": &q…

哪种蓝牙耳机音质好?2023公认音质最好的蓝牙耳机推荐

现如今,蓝牙耳机的使用频率越来越高,其在音质上的表现也越来越好。那么,在众多的蓝牙耳机当中,哪种蓝牙耳机音质好?下面,我来给大家推荐几款公认音质最好的蓝牙耳机,一起来看看吧。 一、南卡小…

(十七)Java的时间与日期(1)

目录 前言: ①Date类 ②SimpleDateFormat类 ③Calendar 前言: 时间和日期. 在系统开发中,日期与时间作为重要的业务因素,起到十分关键的作用,例如同一个时间节点下的数据生成,基于时间范围的各种数据统计和分析,集群节…

深入浅出变长结构体

1、 问题的引出 项目中用到数据包的处理,但包的大小是不固定的,其长度由包头的2字节决定。比如如下的包头:88 0f 0a ob cd ef 23 00 。长度由头2个字节880f决定,考虑字节序,转为0f88,转为10进制3976个字节的…

汽车零部件行业追溯系统的应用

汽车行业正处于一个蓬勃发展的阶段,随着客户需求的不断变化,生产厂商推出新款商品的速度也越来越快,新项目和变更的不断出现,就可能导致在交付的产品质量方面遇到各种各样的问题。如果这些质量问题得不到及时有效地追溯和控制&…

知识点滴 - PLC培训笔记

如上图所示,这个设备就是PLC的应用场景,对外控制很多接口电路,交流直流,不同大小电流、电压的电路。在工业上使用很多。 而开发PLC程序时,是在相应的集成开发环境中,画出如下的梯形图: 什么是PL…

Vue使用Element-UI生成并展示表头序号

前言 序号算是在展示数据的时候,一种很普遍的属性了,我们可以自己写生成序号的规则,也可以借助第三方。 这里我选择后者,使用Element-UI自带的一个table属性,去生成并展示需要 首先看下我的页面,是没有序…

Apache Sling App CMS <1.1.4 存在反射型XSS漏洞(CVE-2022-46769)

漏洞描述 Apache Sling 是一个基于可扩展内容树(extensible content tree)的 RESTful Web 应用框架。 1.1.4 之前版本的 Apache Sling 中的 cms.js#confirmMessage 方法未对用户可控的 title 和 message 参数进行过滤,攻击者可将精心构造的…

dubbo源码实践-总结

自己大概花了一个月的时间,断断续续的看了一遍dubbo源码,之前的文章从实践出发搭建了dubbo各层的例子!Dubbo源码的学习也暂时告一段落。这篇就谈谈自己对dubbo源码学习个人感受!1 dubbo是什么?dubbo是一个RPC框架&…

网站优化包括对什么优化(网站优化有哪些方面)

互联网时代下,各行各业都想在在互联网中占据市场,目前网站优化成为时代的潮流,很多站长,在对网站进行优化时,稍不注意就会造成网站优化过度,这也是各位最头疼的事情,网站优化能急于求成&#xf…

KubePi <1.6.4 存在会话固定漏洞(CVE-2023-22479)

漏洞描述 KubePi 是一个 K8s 面板,允许管理员导入多个 Kubernetes 集群,并且通过权限控制将不同 cluster、namespace 的权限分配给指定用户。 1.6.4 之前版本的 KubePi 在用户登录后未刷新用户 cookie,攻击者可通过诱导用户点击恶意链接等劫…

maven创建web工程,使用模板方式(二)

一,选择webapp模板 二,填写完信息后,创建后是如下的结构: 可以看到只有web目录,没有其他的java,resources,test目录等。 三,创建Java,resources,test目录 右键-> ma…

【C语言进阶】 指针强化练习

目录题目一题目二题目三题目四题目五题目六题目七题目八题目一 下面这段代码的执行结果是? int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d\n", *(a 1), *(ptr - 1));return 0; }解决这种数组与指针相结合的问题…

【Leetcode面试常见题目题解】2. 无重复字符的最长子串

题目描述 本文是LC第3题:无重复字符的最长子串。 题目描述如下 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 举例 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 输入:…

html实现酷炫的公司年会抽奖(附源码)

文章目录1.设计来源1.1 主界面1.2 抽奖效果1.2 中奖效果2.效果和源码配置2.1 动态效果2.2 员工信息配置2.3 奖品信息配置2.4 抽奖音效配置2.5 源代码源码下载作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/128640998 ht…

AI绘画日漫欧漫动态表情换脸游戏风生成红包封面流量主小程序开发

AI绘画日漫欧漫动态表情换脸游戏风生成红包封面流量主小程序开发 因全网AI绘画大量小程序被封禁下架。只有采用合规稳定运营引擎。 文生图图动日漫图生欧漫图转动图人物表情变脸换脸3D动漫集成7大AI制图模式 支持个人模式和企业支付。趣味AI制图支持流量主。 打造一款适合个人…

uniapp 画中画悬浮窗(视频) Ba-VideoPip

简介(下载地址) Ba-VideoPip 是一款画中画方式的视频悬浮窗插件。支持点播、直播;支持官方、三方播放器无缝切换;支持动态刷新(如切换视频或进度)。 支持点播、直播支持官方、三方播放器无缝切换支持动态…

【unity3D】Collider碰撞器组件

💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是unity的Collider碰撞器组件 Collider碰撞器组件▶碰撞器类别▶Box Collider▶Sphere Collider▶Box Collider 2D▶Composite Collider 2…

Aspose.Words for .NET Crack 23.1.0

Aspose.Words for .NET Crack Aspose.Words 及其产品系列是一组 Word 文档,它们处理 API 以创建、编辑、打印、阅读和稍后转换所有格式化的 Word 文档和文件格式,就在 .NET、Java、Android 中、Cloud、SSRS、SharePoint 以及最后但并非最不重要的 Jasper…