【Jenkins】学习笔记

article/2025/9/25 17:02:43

学习笔记

  • 一、Jenkins
    • 1.1、Jenkins的作用
  • 二、下载安装
    • 2.1、安装环境
    • 2.2、安装GitLab
    • 2.3、安装Jenkins
  • 三、Jenkins + Git + Maven 部署配置
    • 3.1、安装maven插件
    • 3.2、新建项目
    • 3.3、自动发布到测试服务器
  • 四、publish over ssh 配置
    • 4.1、超时机制
    • 4.2、shell的日志输出
    • 4.3、运行前清理
  • 五、自动化配置
    • 5.1、Webhooks
    • 5.2、定时拉取
  • 六、邮件通知

一、Jenkins

Jenkins,原名 Hudson,2011 年改为现在的名字。它是一个开源的实现持续集成的软件工具。

1.1、Jenkins的作用

在这里插入图片描述

官方网站

二、下载安装

2.1、安装环境

masterslave1slave2
作用Jenkins服务器GitLab服务器测试服务器
ip192.168.3.34192.168.3.35192.168.3.36
内存1G7.5G1G
线程数242

2.2、安装GitLab

本文采用dacker安装GitLab(GitLab默认占用80,我不喜欢而且ssh安装过于繁琐了)
docker 安装教程

添加容器

docker run --detach \--hostname 192.168.3.35 \--publish 443:443 --publish 8080:80 \--name gitlab \--restart always \--volume $GITLAB_HOME/config:/etc/gitlab:Z \--volume $GITLAB_HOME/logs:/var/log/gitlab:Z \--volume $GITLAB_HOME/data:/var/opt/gitlab:Z \--shm-size 256m \registry.gitlab.cn/omnibus/gitlab-jh:latest

启动容器

docker start gitlab

查看已存在的容器

docker ps -a

进入容器

docker exec -it  gitlab /bin/bash

输入192.168.3.35:8080进行访问
当首次运行出现502错误的时候

  1. 被拒绝访问了 再等等 还在加载中
  2. 访问成功但502了 也稍微再等等 还是在加载 刷新一会 就好了
  3. 虚拟机内存不够

使用管理员账号登录
用户名:root
密码存在下面文件中,登录后需要改密码不然24小时之后会失效

cat /etc/gitlab/initial_root_password

2.3、安装Jenkins

官方文档

前提需要:
Java 8 ( JRE 或者 JDK 都可以) linux安装JDK教程
Maven linux安装Maven教程
Git yum install git

Jenkins WAR包下载

将下载好的war包上传到master服务器
运行

java -jar jenkins.war

首次启动war包会在当前路径下生成配置文件.jenkins(隐藏)
同时控制台生成一串密码 密码文件使用后会自动删除
在这里插入图片描述

待完全启动成功后 访问服务器8080端口(默认)完成配置

三、Jenkins + Git + Maven 部署配置

3.1、安装maven插件

在Manage Jenkins下点击Manage Plugins
在这里插入图片描述
可选插件搜索maven 选择 Maven Integration
在这里插入图片描述

3.2、新建项目

新建item 选择maven项目
在这里插入图片描述
创建成功以后 选择源码管理 选择Git
在这里插入图片描述
填上需要拉取的分支
在这里插入图片描述
选择Build
在这里插入图片描述
进行Maven配置
在这里插入图片描述
配置完成回来之后那个提示也不会消失,不用管
在Root POM中添加到具体项目的Pom路径
在这里插入图片描述
完成
回到首页点击运行
在这里插入图片描述
点击历史 可以查看本次详情
在这里插入图片描述
在这里插入图片描述

3.3、自动发布到测试服务器

安装插件
在这里插入图片描述
配置系统:
Manage Jenkins->Configure System ->Publish over SSH->新增
在这里插入图片描述

配置完成点击Test Configuration出现success则能连通
在这里插入图片描述

更新项目配置
在这里插入图片描述
选择 Post Steps ->Add post-build step ->Send files or execute commands over SSH
在这里插入图片描述

四、publish over ssh 配置

4.1、超时机制

输出命令时一定要注意不要让窗口卡住,不然Jenkins会认为认为一直没完成

官方默认2分钟
在这里插入图片描述

4.2、shell的日志输出

nohup java -jar /root/jar/EXArea02*.jar >mylog.log 2>&1 &
数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他地方标准输入(stdin):代码为0,使用<或<<;
标准输出(stdout):代码为1,使用>或>>;
标准错误输出(stderr):代码为2,使用2>或2>>> 覆盖写
>> 追加写

4.3、运行前清理

item配置 选择Pre Steps
在这里插入图片描述
上面爆红的选项不用管 官方解释的是可以2选1 或者都选

#!/bin/bash#删除历史数据
rm -rf /root/jarappname=$1
#获取传入的参数
echo "arg:$1"#获取正在运行的jar包pid
pid=`ps -ef | grep $1 | grep 'java -jar' | awk '{printf $2}'`echo $pid#如果pid为空,提示一下,否则,执行kill命令
if [ -z $pid ];
#使用-z 做空值判断thenecho "$appname not started"elsekill -9 $pidecho "$appname stoping...."check=`ps -ef | grep -w $pid | grep java`
if [[ -z $check ]];thenecho "$appname pid:$pid is stop"elseecho "$appname stop failed"fifi

五、自动化配置

目前来说每一次push代码都要手动合并分支,再到Jenkins手动提交任务

5.1、Webhooks

安装插件用于免密登入Jenkins
在这里插入图片描述

在Jenkins项目里选择配置->构建触发器->选择 触发远程构建 (例如,使用脚本)密码自己设置
在这里插入图片描述

正常地址:http://192.168.3.34:8080/job/first/build?token=root123 这个需要登入才能运行
装上插件以后的地址
http://192.168.3.34:8080/buildByToken/build?job=first&token=root123

回到GitLab上
在这里插入图片描述
如果出现
在这里插入图片描述
菜单->管理员->设置->网络->设置->出站请求
在这里插入图片描述
然后在重新添加一遍Webhooks

5.2、定时拉取

Jenkins cron不是标准的cron表达式

第一个 * 表示每个小时的第几分钟,取值0~59H * * * *
H:每小时执行一次第二颗 * 表示小时,取值0~23* 15 * * * 表示每天下午3点
* 1 * * *  表示每天凌晨1点第三颗 * 表示一个月的第几天,取值1~31
* 1 5 * *  表示每月5日凌晨1点第四颗 * 表示第几月,取值1~12
* 15 5 1 *  表示每年几月执行第五颗 * 表示一周中的第几天,取值0~7,其中0和7代表的都是周日H * * * *`表示一小时内的任意时间*/10 * * * *						每10分钟
H/10 * * * *						每10分钟,可能是7,17,27,起始时间hash,步长不变
45 3 * * 1-6						每个周一至周六,凌晨3点45 执行1次
45 3-5 * * 1-6 						每个周一至周六,凌晨3点45 ,凌晨4点45,凌晨5点45 各执行1次
H(40-48) 3-5 * * 1-6 				在40~48之间取值 其他同上
45 3-5/2 * * 1-6 					每个周一至周六,凌晨3点45 ,凌晨5点45 各执行1次45 0-6/2 * * 1-6 * * 1-6			0点开始,每间隔2小时执行一次 0:45、2:45、4:45

六、邮件通知

需要有POP3/SMTP的邮箱

在Configure System进行设置 填入邮箱地址
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/UTSfxgEr.shtml

相关文章

快速了解KEGG

我们有时候很关心基因所在的pathway、上下调控以及一堆基因富集到的pathway&#xff0c;再或者同源基因等信息&#xff0c;KEGG数据库也算是目前&#xff08;注释&#xff09;常用的明星数据库 KEGG&#xff1a;京都基因和基因组百科全书&#xff1a;KEGG项目于1995年5月在日本…

【Jenkins基础知识学习笔记】

文章目录 1、Master/Slave架构2、搭建步骤3、工作流程4、配置建议5、通信方式参考文档 1、Master/Slave架构 Jenkins采用Master/Slave架构&#xff0c;Master/Slave相当于Server和agent的概念&#xff0c;Master提供web接口让用户来管理Job和Slave&#xff0c;Job可以运行在Ma…

Gherkin语法详解之Scenario outline(四)

如果我想要对于不同的数据集&#xff0c;重复一个场景的所有步骤?这是一个数据驱动测试的经典案例。这将通过使用一个场景大纲来实现

BDD - BDD Automation Framwork 自动化框架

BDD - BDD Automation Framwork 自动化框架 引言BDD 测试框架Jenkins 集成Framework Components 框架组件IDEs 集成开发环境NotepadEclipseJetBrains IntelliJ IDEAMicrosoft Visual Studio 引言 BDD 自动化框架使得 QA 工程师很容易将 Gherkin Scenarios 转换成自动化测试用例…

zipkin

zipkin zipkin为分布式链路调用监控系统&#xff0c;聚合各业务系统调用延迟数据&#xff0c;达到链路调用监控跟踪。 architecture 如图&#xff0c;在复杂的调用链路中假设存在一条调用链路响应缓慢&#xff0c;如何定位其中延迟高的服务呢&#xff1f; 日志&#xff1a; 通…

Cucumber之二Gherkin语言学习

在本教程中&#xff0c;我们将向您介绍Gherkin - BDD语言(业务驱动开发)。我们将尽力详细回答这些问题原文点击这里 免费英语视频教程可见微信公众号&#xff1a;【软测小生】里面&#xff0c;请关注公号更新相关文章和视频资源。 另外有一个中国团队在做类似的事情&#…

Artifactory 简介

产品特点 http://www.jfrogchina.com/artifactory/features/ 产品对比 https://binary-repositories-comparison.github.io/

pom文件里的groupId和artifactId是什么

在学习maven项目的时候发现所有pom文件里的<dependency>下有都有两个带Id的东东&#xff1a; 它们是什么&#xff1a; groupId&#xff1a;存储的包的路径&#xff0c;一般分为多段&#xff0c;第一段为域&#xff0c;第二段为公司名。。。。。。如图&#xff0c;org是域…

artifactId到底什么意思?

打开https://repo1.maven.org/maven2/org/apache/flink/flink-table-common/1.11.2/ 会看到: 对应的依赖是: <dependency><groupId>org.apache.flink</groupId><artifactId>flink-table-common</artifactId><version>1.11.2</version…

maven项目的groupId和artifactId什么意思?

首先要知道groupId和artifactId的存在是为了定位到你的项目&#xff0c;所以它们充当着坐标的角色。 groupId&#xff1a;group意思为组&#xff0c;所以理解为是组织Id&#xff0c;也是公司Id&#xff0c;通常它的写法与公司域名类似。一般分三段&#xff0c;即“域.公司名称.…

maven中的ArtifactId和groupId是什么

文章目录 1、了解2、举例3、说明 1、了解 之前建项目、用maven时常遇到GroupID和ArtifactID&#xff0c;一直说要弄清楚却迟迟拖延&#xff0c;今天查了一下&#xff0c;在这里做个小结。 最简单的来说&#xff1a;GroupID被俗称为包结构 ArtifactID被俗称为项目名 GroupId和…

maven中的groupId和artifactId是指什么?

groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的&#xff0c;如果你要把你项目放到maven本地仓库去&#xff0c;你想要找到你的项目就必须根据这两个id去查找。   groupId一般分为多个段&#xff0c;这里我只说两段&#xff0c;第一段为域&#xff0c;第二…

关于idea配置Spring后,在pom.xml中“<artifactId>spring-boot-maven-plugin</artifactId>”出现报红现象

(1&#xff09;出现问题&#xff0c;如图 当我们出现问题时&#xff0c;解决问题要从根源解决&#xff01; 介绍一个神奇的方法&#xff08;不建议使用&#xff09; 在<artifactId>spring-boot-maven-plugin</artifactId>下一行加上<version>2.3.5.RELEASE&l…

简单分享Maven中的groupId和artifactId

【辰兮要努力】&#xff1a;hello你好我是辰兮&#xff0c;很高兴你能来阅读&#xff0c;昵称是希望自己能不断精进&#xff0c;向着优秀程序员前行&#xff01; 博客来源于项目以及编程中遇到的问题总结&#xff0c;偶尔会有读书分享&#xff0c;我会陆续更新Java前端、后台、…

<artifactId>spring-boot-maven-plugin</artifactId>报错问题

刚创建好项目就报错了&#xff0c;进入到maven库中Reposiory\org\springframework\boot\spring-boot-maven-plugin\下查看发现存在相关插件&#xff0c; 这种情况可以在pom.xml文件中补充上相应的版本号<version>2.3.5.RELEASE</version>&#xff0c;不知道应该补充…

Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理

Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理 Spring Boot概述 微服务概述 微服务Microservices是一种软件架构风格&#xff0c;他是以专注于单一责任与功能的小型功能区块Small Building Blocks 为基础&#xff0c;…

<artifactId>mysql-connector-java</artifactId>

// 加载MySQL驱动程序 Class.forName("com.mysql.cj.jdbc.Driver");// 建立连接 String url "jdbc:mysql://localhost/database_name"; String username "username"; String password "password"; Connection conn DriverManager.…

Maven中的GroupID和ArtifactID指的是什么?

最近用Maven创建工程&#xff0c;一直搞不懂Maven中的GroupID和ArtifactID是什么&#xff0c;直到看了网上的一篇文章才明白&#xff0c;在此与大家分享分享 本文转载于一问网友的回答&#xff08;略修改&#xff09; 地址&#xff1a;https://zhidao.baidu.com/question/1639…

maven中groupId和artifactId的含义

groupid和artifactId都统称为“坐标”&#xff0c;是为了保证项目唯一性而提出的&#xff0c;如果你要把你的项目弄到maven仓库去&#xff0c;你想要找到你的项目就必须根据这两个id去查找。 GroupId是项目组织的唯一标识符&#xff0c;在实际开发中对应JAVA的包的结构&#x…