惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
人人都是产品经理
人人都是产品经理
博客园 - 【当耐特】
量子位
有赞技术团队
有赞技术团队
博客园 - 三生石上(FineUI控件)
博客园 - Franky
M
MIT News - Artificial intelligence
U
Unit 42
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
The Cloudflare Blog
J
Java Code Geeks
V
Visual Studio Blog
Engineering at Meta
Engineering at Meta
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
MyScale Blog
MyScale Blog
T
Tailwind CSS Blog
T
The Blog of Author Tim Ferriss
V
V2EX

Sehnsucht

记一次博客换图床的过程 观《花束般的恋爱》 读《活过》 东京 旅行篇 亲人逝去 我为什么想养鱼 防止AI爬取你的博客 「monthly 」博客重构 游戏全成就 好看的小说 人生的每一步都不会是浪费-2024年终 「weekly」星期五综合征 「weekly」听播客 杂谈 读《美丽新世界》 「weekly」社交媒体 恶性事件 新世界 「weekly」认知觉醒 美丽新世界 follow 「weekly」独立博客9问题 双十一买书 读《惊呆了!原来这就是社会学》 一次聊天与自我建设 2024-09月记 补番《relife》 树状数组简单理解 lvm简单使用 博客自动发布方案 某公众号废案 fail2ban基本使用 Podman 环境使用 Nginx Proxy Manager 最佳实践 2024-07同学聚会 vps使用podman部署freshrss Gitlab CICD 实践,思考与记录 装备升级:新的PC gitlab局域网搭建流程
Jenkins 个人搭建流程记录 集成邮件系统(qq邮箱),gitlab服务...
2021-11-18 · via Sehnsucht

目的

学习持续集成的概念与基本知识

配熟悉gitlab的基本操作

选择一个被测试的web应用系统

环境

  • windows安装jenkins(127.0.0.1:8091)

  • 虚拟机安装gitlab服务器(192.168.211.5:8092)

  • 配置的邮箱直接用qq邮箱

centos版本7.8

jenkins版本2.303.3

gitlab服务器版本13.1.2

jdk版本1.8

敏捷开发与持续集成简述

  • 增量(举例:房地产商每次增加一栋楼)
  • 迭代(举例:造火箭小火箭到大火箭)

每次迭代都是完整的软件开发周期

好处:

  • 早期交付(降低成本,例如卖10栋楼,建完一栋先卖一栋)
  • 降低风险(建完10栋楼卖不出去,建完1栋卖不出去然后改进或者停建)

持续集成:持续集成指的是,频繁地(一天多次)将代码集成到主干

持续集成的好处:

  • 降低软件故障风险,不断的构建可以很早发现问题
  • 对系统持续性的检查,减少问题
  • 减少重复性的工作
  • 持续部署,提供可部署单元包?
  • 持续交付可供使用的版本
  • 增强团队信心

安装gitlab服务器

Centos7安装Gitlab13.1.2

我是在虚拟机上安装的,然后改一下网络配置让本地电脑也可以通过ip连接到虚拟机,参考这个即可:如何使用Xshell连接VMware上的Linux虚拟机

可能出现的问题,安装失败,大概率是内存不够的问题,我虚拟机内存开到了8g,2g根本不够,或者你要开启swap分区,可以查看:创建swap分区,解决阿里云CentOS 8.3内存不足问题

一直502可以参考:Linux—gitlab访问出现502问题安装调试gitlab/gitlab-ce容器时遇到的502 Whoops, GitLab is taking too much time to respond

我不知道为什么出现了端口冲突,换了一个端口才好

记得更改防火墙设置之后要重启防火墙,更改了gitlab配置之后也要重新配置然后再重启

可能需要:

安装jenkins

Windows环境下安装Jenkins

可能的报错:

win10安装jenkins报错0x8007052e -Error logging on

邮件服务器

选择了qq

首先QQ邮箱要开启POP3/SMTP服务

jenkins配置qq邮箱

image-20211115152928401

怎么看成不成功?里面有测试,可以向邮箱发送邮件判断

image-20211115161107217

最后:

smtp协议与pop3协议

在日常构建后,需要及时将构建结果发送给相应的人员。这时就可以使用jenkins自带的邮件配置系统。

整合gitlab和jenkins

https://www.bilibili.com/video/BV1pF411Y7tq?p=12&spm_id_from=pageDriver

我看的是这个视频,gitlab的简单使用

一般给服务器的都是公钥,如果我们要clone代码的时候,服务器就可以用我们给它的公钥来匹配我们本地的私钥,如果匹配就能下载

SSH,公钥,私钥的理解

ssh-keygen -t rsa ,即生成公钥私钥的命令

步骤

我用的是自由风格的jenkins项目

1. 配置本地的公钥到gitlab

目的:让本地可以提交代码到远程gitlab上面

过程略

2. 配置jenkins的公钥并存放到gitlab所在的服务器

大致流程:在jenkins所在的服务器生成公钥和私钥,然后把公钥copy一份

然后打开gitlab,在设置里面有个ssh keys(凭证管理),然后把公钥放到里面去,这样jenkins就可以直接从gitlab拉取项目

3. 设置jenkins的自动构建

我们在jenkins创建项目后,在源码管理那里点击git,然后输入对应的gitlab项目的url,并选择正确的ssh凭证

这时候点击build now就会从远程拉取代码

4. 设置jenkins的编译打包

在项目的设置里,有一个构建,这里我们可以用mvn命令进行构建

image-20211117164154754

5. 设置jenkins将本地打包好的jar包推送到远程服务器并运行

这里的远程服务器我用的是个人的阿里的云服务器

jenkins需要下载publish over ssh插件

可以看看这个:jenkins配置publish over ssh遇到的问题

和这个Jenkins部署war包和部署jar包的详细步骤

测试通过是下面这样

image-20211117164333371

手把手教你搭建Jenkins实现自动化部署Jar

我按照上面的博客进行配置但是还是出现了很多问题,改来改去的,大概是配置那里错了,我的配置就不重复放上来了,

sh ~/run.sh / 8081这条命令是我写在Exec command那里的,

下面是抄的run.sh模板(有一说一,这个模板挺好用的,但是需要改,可能你nohup没有用就是模板的问题)

Project_name=$1
Port_no=$2

#echo $Project_name
#echo $Port_no

. /etc/profile

# 进入到项目
cd projects/$Project_name

# 找到原进程,kill
pid=$(ps -ef | grep java| grep $Project_name|awk -F '[ ]+' '{print $2}')
kill -9 $pid

#启动jar
nohup java -jar $Project_name-1.0-SNAPSHOT.jar --server.port=$Port_no -server -Xmx1000m -Xms1000m -Xmn700m -XX:+UseParallelGC &

echo "starting service..."
sleep 20

#根据重启后是否有当前应用判断启动是否成功
pid=$(ps -ef | grep java| grep $Project_name|awk -F '[ ]+' '{print $2}')
#echo $pid
if [ -z $pid ];then
  echo "启动失败"
  exit 1
else
  echo $Project_name :  $pid  "SUCCESS"
fi

image-20211117193434962

但是这里不太行的是,构建完成之后就…程序关闭了,在linux上面是有文件的(而且jenkins显示构建成功),如果单纯在linux中进行sh run.sh是可以运行的,但是用jenkins的话nohup无效(我发现问题了,模板有个地方错了)

我命令执行的是两行

export BUILD_ID=dontKillMe
sh run.sh shendun 8081

网上最开始的解决方案就是加上export BUILD_ID=dontKillMe但是我没有解决,改了run.sh的模板才解决

集成邮件系统(踩坑大全)

使用qq邮箱

我根据网上的博客来写,但是很多不一样,也没管他

Jenkins的QQ邮箱配置

但是最后出现一个大问题,邮箱显示正常发送,但是实际上并没有接收到邮件(可以打开debug模式来进行调试查看错误信息+)

太多报错了,我是将新版的email插件卸载换成旧版的重新配置才好,但是中间其实发生了很多报错

最开始是2.85版本的Email Extension Plugin ,最开始的报错AuthenticationFailedException,有人说是版本的问题,有bug,回退2.84(相同的配置不同版本报错都不同),又报错,搜出来的和jenkins没关系,那我回退到2.10,太低了报错都很奇怪,现在是2.40的版本

MessagingException message: Can't send command to SMTP host

这里可以开启Use SMTP Authentication这个选项来开启,注意密码不是邮箱密码,是stmp的授权码,我之前的邮箱授权码是mfywusvkaxvmbagi1,看看太长和太短都不对

结果

前提,环境都配置好了,且可以正常运行

在IDEA中集成maven和git,推送到你部署的gitlab服务器上

image-20211118145109691

查看gitlab上面的项目,正常

image-20211118145154227

打开jenkins进行拉取和自动部署

image-20211118145347819

构建完成

image-20211118145603365

网站正常

image-20211118145626941

查看邮件

image-20211118145707173