Jenkins+Gitee+Docker+maven自动化构建Springboot项目

2 篇文章 0 订阅
1 篇文章 0 订阅

jenkins安装

环境:

  • CentOS 7.5 64位
  • Docker version 19.03.5
  • Java version “1.8.0_241”
  • Maven version 3.6.3

项目代码存放在gitee,不是github

方式一:docker安装
docker安装jenkins涉及容器化的知识,搞了一整天没搞出来…
推荐使用方式二

## 执行该命令可以搜索jenkins镜像
docker search jenkins
## 执行该命令可以搜索jenkins安装包
docker run --name jenkins  -u root -d -p 8010:8010 -v $HOME/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
  • -v $HOME/jenkins:/var/jenkins_home 表示将当前计算机登录用户主目录jenkins 文件夹映射到jenkins容器中的/var/jenkins_home目录。如果你的当前登录用户是root,运行该命令后,会在/root目录下自动生成jenkins子目录。
  • -v /var/run/docker.sock:/var/run/docker.sock 表示允许jenkinsci/blueocean容器与Docker守护进程通信,如果 jenkinsci/blueocean 容器需要实例化其他Docker容器,则该守护进程是必需的!!!如果运行声明式管道,其语法包含agent部分,例如:agent { docker { ... } }此选项是必需的。

方式二:war文件安装

  sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
  sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
  
  yum install jenkins

线上的linux服务器下载可能会很慢。我们可以自己下载好rpm包,上传上去再安装。
安装命令:

yum install ./jenkins-2.250-1.1.noarch.rpm

安装完成之后,我希望可以把jenkins默认的8080端口改为8010:

vi /etc/sysconfig/jenkins

找到8080,修改成8010。

检查jenkins是否配置jdk,在candidates后面加上自己的jdk路径:

vi /etc/rc.d/init.d/jenkins

启动jenkins:

service jenkins start

访问jenkins:http://ip:8010

然后就是按照提示去找初始密码解锁jenkins,选择安装推荐的插件,创建一个管理员帐号。

jenkins插件安装

1. Gitee插件

插件安装之后,打开“系统管理” --> “系统设置”,找到Gitee 配置,配置如下:

https://gitee.com/profile/personal_access_tokens

2. Docker插件

安装完插件记得重启一下才会生效。http://ip:8010/restart

jenkins设置

1. 设置用户权限
选择“系统管理”-“全局安全配置”

按下图设置用户权限。Anonymous Users和Authenticated Users设置为只读,刚刚新建的用户设置为管理者权限。(如果没有刚刚新建的用户点击下方的“Add user or group…”,输入你的用户名即可)

2. 配置JDK、Maven、Git、Docker
选择“系统管理”-“全局工具配置”

a. 配置JDK

b. 配置Maven

c. 配置Git

d. 配置Docker
如果没有docker配置选项。去“插件管理”中搜索安装“docker build step”。(插件安装完记得restart)

3. 设置通知邮件
选择“系统管理”-“系统配置”
【记得要先设置“系统管理员邮箱地址”!!!】不然后面配置了也测试不通过

设置邮件默认内容:

<hr/>
(本邮件是程序自动下发的,请勿回复!)<br/><hr/>
项目名称:$PROJECT_NAME<br/><hr/>
构建编号:$BUILD_NUMBER<br/><hr/>
svn版本号:${SVN_REVISION}<br/><hr/>
构建状态:$BUILD_STATUS<br/><hr/>
触发原因:${CAUSE}<br/><hr/>
构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><hr/>
构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><hr/>
变更集:${JELLY_SCRIPT,template="html"}<br/><hr/>

配置发送邮箱信息:

4. 创建任务
a. 新建任务


b. 配置项目代码路径、git帐号密码

c. 配置远程触发器

d. 配置maven构建参数
每次构建前,删除工作空间

配置maven构建参数



/home/project/postman/bin目录要在服务器上先创建好,run.sh文件要放到bin目录中。

run.sh文件内容如下:

#操作/项目路径(Dockerfile存放的路劲)
BASE_PATH=/home/project/postman
# 源jar路径
SOURCE_PATH=/var/lib/jenkins/workspace/postman/target
# jar包名称
JAR_NAME=postman-1.0-SNAPSHOT
#容器id
CID=$(docker ps | grep "postman" | awk '{print $1}')
 
DATE=`date +%Y%m%d%H%M`
 
# 最新构建代码 移动到项目环境
function transfer(){
    echo "最新构建代码 $SOURCE_PATH/$JAR_NAME.jar 迁移至 $BASE_PATH ...."
        sudo cp $SOURCE_PATH/$JAR_NAME.jar $BASE_PATH
    echo "迁移完成"
}
 
# 备份
function backup(){
	if [ -f "$BASE_PATH/$JAR_NAME.jar" ]; then
    	echo "$JAR_NAME.jar 备份..."
        	sudo cp $BASE_PATH/$JAR_NAME.jar $BASE_PATH/backup/$JAR_NAME-$DATE.jar
			sleep 3
			sudo rm -rf $BASE_PATH/$JAR_NAME.jar
        echo "备份 $JAR_NAME.jar 完成"
    else
    	echo "$BASE_PATH/$JAR_NAME.jar不存在,跳过备份"
    fi
}
 
# 构建docker镜像
function build(){
	echo "开始构建镜像..."
	cd $BASE_PATH
	sudo docker build -t postman .
}
 
# 运行docker容器
function run(){
	backup
	transfer
	build
	if [ -n "$CID" ]; then
		echo "存在postman容器,CID=$CID,重启docker容器 ..."
			sudo docker stop $CID
			sudo docker rm $CID	
			sudo docker run --name postman -d -p 8091:8091 postman
		echo "postman容器重启完成"
	else
		echo "不存在postman容器,docker run创建容器..."
			sudo docker run --name postman -d -p 8091:8091 postman 
		echo "postman容器创建完成"
	fi
}
 
#入口
run 

e. 配置构建后操作
配置邮件通知:

在以下红框部分加入想要通知的成员邮箱,多个邮箱以“,”或空格进行分割:


开始构建

第一次构建:
发生错误:sudo: no tty present and no askpass program specified

原因:Jenkins服务器在执行sudo命令时的上下文有误,导致这个命令执行的异常。

解决办法:

sudo visudo
# 在文件的末尾加上一行
jenkins ALL=(ALL) NOPASSWD: ALL
# 重启Jenkins服务
/etc/init.d/jenkins restart

第二次构建:
发生错误:sudo: ./bin/run.sh: command not found

可能原因:文件是从winodws搬过来的会显示dos格式,要把它改成unix格式
vim编辑文件,利用:set ff命令查看文件格式
可以看到如下信息:
fileformat=dos 或 fileformat=unix
解决办法:

cd /home/project/postman/bin/
vim run.sh

# 设置文件格式为unix 
:set ff=unix 
# 保存退出
:wq

第三次构建:
发生错误:sudo: ./bin/run.sh: command not found

可能原因:jenkins没有权限读取文件
解决办法:

chmod a+x run.sh

第四次构建:

完结,撒花✿✿✿

123

想多了,邮件通知这块虽然能用,但好像有点问题…

参考文章:
https://blog.csdn.net/June_D/article/details/84563662

https://www.cnblogs.com/wfd360/p/11314697.html

https://www.cnblogs.com/ming-blogs/p/10903408.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值