【Jenkins】学习笔记

news2024/11/19 17:23:29

学习笔记

  • 一、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/jar

appname=$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 做空值判断
        then
                echo "$appname not started"

        else
               kill -9 $pid
                echo "$appname stoping...."

check=`ps -ef | grep -w $pid | grep java`
if [[ -z $check ]];

        then
                echo "$appname pid:$pid is stop"
        else
                echo "$appname stop failed"

fi


fi

五、自动化配置

目前来说每一次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~59

H * * * *
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://www.coloradmin.cn/o/112447.html

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

相关文章

网络地址转换NAT

目录 IP 地址空间即将面临耗尽的危险 NAT 缓解 IP 地址空间耗尽的问题 NAT 的基本方法 VPN 的要点 IP 地址空间即将面临耗尽的危险 互联网采用了无分类编址方式、动态分配IP地址等措施来减缓IP地址空间耗尽的速度 但由于互联网用户数目的激增&#xff0c;特别是大量小型办公…

Linux搭建DHCP服务

DHCP(Dynamic Host Confifuration Protocol,动态主机配置协议)它可以为客户自动分配IP地址、以及缺省网关、DNS服务器的IP地址等TCP/IP参数。 简单说,就是在DHCP服务器上有一个存放着IP地址、网关、DNS等参数。当客户端请求使用时,服务器则负责将相应的参数分配给客户端,…

win10环境下基于face_recognition搭建自己的人脸识别软件

在win10环境下安装face_recognition&#xff0c;了解face_recognition中api的使用&#xff0c;如人脸截取、人脸矫正、人脸特征提取、人脸关键点提取、人脸mask获取、人脸特征比对等功能。最后构建自己的人脸数据库&#xff0c;使用knn实现人脸识别软件。 1、安装face_recogni…

【圣诞特辑】码一个漂漂亮亮的圣诞树(Single Dog版)

目录 前言 一、C语言版圣诞树 1.代码实现 2.效果图 二、python版圣诞树 1.代码实现 2.效果图​ 三、html5版圣诞树 1.代码实现 2.效果图 总结 前言 圣诞节即将来临&#xff0c;圣诞树也是必不可少的装饰之一。圣诞树是一棵绿叶繁茂的树&#xff0c;上面挂满了彩色的灯…

Nginx学习笔记2【尚硅谷】

host文件修改时&#xff0c;可以更改用户组权限或者复制到某个有权限的位置修改完再复制替换之前的文件。 在server{}中&#xff0c;listenserver_name两个加一起是唯一的。 代理服务器就是一个网关。 配置Nginx反向代理&#xff1a; 注意&#xff1a;在写proxy_pass时&#xf…

java+selenium环境搭建

目录 1.写在前面的话: 2.下载谷歌驱动 3.添加Selenium依赖(我这里添加的是4.0.0版本的) 4.在操作过程中可能出现的问题&解决办法 目录 1.写在前面的话: 2.下载谷歌驱动 3.添加Selenium依赖(我这里添加的是4.0.0版本的) 1.写在前面的话: (1)java版本最低要求为8,Chro…

SpringBoot整合Activemq

目录 一、Pom.xml 二、Spring配置文件 三、队列 四、主题 一、Pom.xml <dependencies><!-- activemq核心依赖包 --><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId><version>…

终生学习——读书有什么坏处

一般爱读书者往往受到赞扬&#xff0c;但仍然需要谨记一些读书的原则 目录 一、读书的整体观点 二、为什么需要知道读书的坏处 三、何时会出现读书的坏处 四、读书有什么坏处 1、100%全部相信书中的观点&#xff0c;进而实践了错误观点 2、不实践 五、如何杜绝读书的害处…

程序员为了少加班想了这几招

&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3; &#x1f38d;大家好&#xff0c;我是慕枫 &#x1f38d;前阿里巴巴高级工程师&#xff0c;InfoQ签约作者、阿里云专家博主&#xff0c;一直致力于用大白话讲解技术知识 &#x…

一个简单的Linux内核字符驱动程序编写

一、背景 为了了解设备驱动程序的框架&#xff0c;在此编写一个简单的字符驱动程序&#xff0c;以此来对驱动程序的框架进行一个简单的了解。 二、设备驱动程序 所谓设备驱动程序&#xff0c;其实就是计算机硬件与外部设备进行通信的接口。由于硬件设备各式各样&#xff0c;…

【Ctfer训练计划】——(四)

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座右…

【kafka】学习笔记(三)

学习笔记七、Kafka-Eagle 监控7.1 环境准备7.2 Eagle 安装7.3、修改配置文件7.4、添加环境变量7.5、启动Eagle八、Kafka-Kraft 模式8.1、Kafka-Kraft 集群部署8.2、初始化集群数据目录8.3、启动 kafka 集群8.4、测试8.5、集群启动脚本九、SpringBoot集成Kafka七、Kafka-Eagle 监…

RabbitMQ 第一天 基础 4 RabbitMQ 的工作模式 4.3 Routing 路由模式

RabbitMQ 【黑马程序员RabbitMQ全套教程&#xff0c;rabbitmq消息中间件到实战】 文章目录RabbitMQ第一天 基础4 RabbitMQ 的工作模式4.3 Routing 路由模式4.3.1 模式说明4.3.2 代码编写4.3.3 小结第一天 基础 4 RabbitMQ 的工作模式 4.3 Routing 路由模式 4.3.1 模式说明 …

React 学习笔记总结(四)

文章目录1. 创建组件流程(以及脚手架环境流程)2. 样式 的模块化3. 常用快捷生成4. 通用性 组件编码流程5. React脚手架 配置代理5.1 React 引入 ajax库5.2 第一种配置代理方式(package.json)5.3 第二种代理方式(setupProxy.js)6. React List列表效果实现7. React 消息订阅与发布…

“内卷之王”vivo:成败即将见分晓

文丨熔财经 作者|XL 12月22日&#xff0c;随着年底收官之作S16系列正式发布&#xff0c;vivo完成了自己的年度答卷。2022年&#xff0c;vivo总体风头正盛&#xff0c;尤其在第三季度一马当先稳居国内出货量榜首&#xff0c;市占比提升到20.0%&#xff0c;领先第二名3%。这是一…

elementUI中el-table每行异常高度原因排查,累死

理论上不单独设置高度的话&#xff0c;表格每一个应该是默认的高度才对&#xff0c;我说的没错吧&#xff0c; 但是请看实际情况&#xff1a; 这是默认情况下的高度为48 还有两外一个表格&#xff0c;我也没有设置高度&#xff0c;但是但是&#xff1a;这个高度竟然达到了71&…

深入理解蓝牙BLE之“无线通信的调制解调”

FSK&#xff1a; Frequency Shift Keying&#xff0c;频移键控&#xff0c;即一种允许根据数字调制信号改变载波频率而进行数据传输的数字调制技术&#xff0c;比如在BFSK中&#xff0c;二进制1和二进制0期间传输不同频率的载波信号。由于这种调制解调方式容易实现&#xff0c…

我国水产养殖行业现状及趋势分析:不断推进产业机械化高质量发展

水产养殖业主要是人类利用适宜水域养殖水产经济动植物的生产事业&#xff0c;是渔业的重要组成部分。按养殖水域&#xff0c;水产养殖可分为淡水养殖、海水养殖、浅海滩涂养殖&#xff1b;按养殖对象&#xff0c;可分为鱼类养殖、贝类养殖、虾类养殖、蟹类养殖、藻类栽培&#…

AndroidR兼容性适配指南

AndroidR Android 11 基于 Android 早期版本构建&#xff0c;增加了多种功能和更新&#xff0c;以保障用户安全并提高透明度和可控性。所有开发者都应查看隐私功能并测试他们的应用。具体影响可能会因每个应用的核心功能、目标平台和其他因素而异。 Android 11介绍 Android 1…

day 10 模拟和高精度

P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布 #include<bits/stdc.h> using namespace std; int n, na, nb, fa, fb;//f:得分 int a[205], b[205];void fun(int ta, int tb){if(ta 0 && tb 1) fb;if(ta 1 && tb 0) fa;if(ta 0 && tb …