【Jenkins】学习笔记

一、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进行设置 填入邮箱地址
在这里插入图片描述
在这里插入图片描述

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值