【Jenkins】学习笔记

学习笔记

  • 一、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的作用

【Jenkins】学习笔记_第1张图片

官方网站

二、下载安装

2.1、安装环境

master slave1 slave2
作用 Jenkins服务器 GitLab服务器 测试服务器
ip 192.168.3.34 192.168.3.35 192.168.3.36
内存 1G 7.5G 1G
线程数 2 4 2

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(隐藏)
同时控制台生成一串密码 密码文件使用后会自动删除
【Jenkins】学习笔记_第2张图片

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

三、Jenkins + Git + Maven 部署配置

3.1、安装maven插件

在Manage Jenkins下点击Manage Plugins
【Jenkins】学习笔记_第3张图片
可选插件搜索maven 选择 Maven Integration
【Jenkins】学习笔记_第4张图片

3.2、新建项目

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

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

安装插件
【Jenkins】学习笔记_第13张图片
配置系统:
Manage Jenkins->Configure System ->Publish over SSH->新增
【Jenkins】学习笔记_第14张图片

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

更新项目配置
【Jenkins】学习笔记_第15张图片
选择 Post Steps ->Add post-build step ->Send files or execute commands over SSH
【Jenkins】学习笔记_第16张图片

四、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
【Jenkins】学习笔记_第17张图片
上面爆红的选项不用管 官方解释的是可以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】学习笔记_第18张图片

在Jenkins项目里选择配置->构建触发器->选择 触发远程构建 (例如,使用脚本)密码自己设置
【Jenkins】学习笔记_第19张图片

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

回到GitLab上
【Jenkins】学习笔记_第20张图片
如果出现
在这里插入图片描述
菜单->管理员->设置->网络->设置->出站请求
【Jenkins】学习笔记_第21张图片
然后在重新添加一遍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进行设置 填入邮箱地址
【Jenkins】学习笔记_第22张图片
在这里插入图片描述

在这里插入图片描述
【Jenkins】学习笔记_第23张图片
在这里插入图片描述
【Jenkins】学习笔记_第24张图片
【Jenkins】学习笔记_第25张图片

你可能感兴趣的:(笔记,jenkins,学习,运维)