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

文章目录

      • jenkins安装
      • jenkins插件安装
      • jenkins设置
      • 开始构建

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+Gitee+Docker+maven自动化构建Springboot项目_第1张图片

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

vi /etc/rc.d/init.d/jenkins
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第2张图片

启动jenkins:

service jenkins start

访问jenkins:http://ip:8010
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第3张图片
然后就是按照提示去找初始密码解锁jenkins,选择安装推荐的插件,创建一个管理员帐号。

jenkins插件安装

Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第4张图片

1. Gitee插件

Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第5张图片

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

Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第6张图片

https://gitee.com/profile/personal_access_tokens
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第7张图片

Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第8张图片

2. Docker插件

Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第9张图片

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

jenkins设置

1. 设置用户权限
选择“系统管理”-“全局安全配置”
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第10张图片

按下图设置用户权限。Anonymous Users和Authenticated Users设置为只读,刚刚新建的用户设置为管理者权限。(如果没有刚刚新建的用户点击下方的“Add user or group…”,输入你的用户名即可)
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第11张图片

2. 配置JDK、Maven、Git、Docker
选择“系统管理”-“全局工具配置”
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第12张图片
a. 配置JDK
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第13张图片
b. 配置Maven
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第14张图片
c. 配置Git
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第15张图片
d. 配置Docker
如果没有docker配置选项。去“插件管理”中搜索安装“docker build step”。(插件安装完记得restart)
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第16张图片
3. 设置通知邮件
选择“系统管理”-“系统配置”
【记得要先设置“系统管理员邮箱地址”!!!】不然后面配置了也测试不通过
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第17张图片
设置邮件默认内容:
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第18张图片


(本邮件是程序自动下发的,请勿回复!)

项目名称:$PROJECT_NAME

构建编号:$BUILD_NUMBER

svn版本号:${SVN_REVISION}

构建状态:$BUILD_STATUS

触发原因:${CAUSE}

构建日志地址:${BUILD_URL}console

构建地址:$BUILD_URL

变更集:${JELLY_SCRIPT,template="html"}

配置发送邮箱信息:
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第19张图片
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第20张图片

4. 创建任务
a. 新建任务
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第21张图片
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第22张图片
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第23张图片

b. 配置项目代码路径、git帐号密码
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第24张图片
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第25张图片

c. 配置远程触发器

Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第26张图片 Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第27张图片

d. 配置maven构建参数
每次构建前,删除工作空间
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第28张图片

配置maven构建参数
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第29张图片
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第30张图片
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第31张图片
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第32张图片

/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. 配置构建后操作
配置邮件通知:
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第33张图片

在以下红框部分加入想要通知的成员邮箱,多个邮箱以“,”或空格进行分割:
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第34张图片


开始构建

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

Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第35张图片 原因:Jenkins服务器在执行sudo命令时的上下文有误,导致这个命令执行的异常。

解决办法:

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

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

Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第36张图片

可能原因:文件是从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+Gitee+Docker+maven自动化构建Springboot项目_第37张图片

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

chmod a+x run.sh

第四次构建:
Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第38张图片

完结,撒花✿✿✿

Jenkins+Gitee+Docker+maven自动化构建Springboot项目_第39张图片

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

参考文章:
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

你可能感兴趣的:(jenkins,docker,springboot,docker,centos,spring,boot,项目管理)