Ubuntu18.04基于Jenkis+Gitee+Docker部署SpringBoot应用

Ubuntu18.04安装Jenkins

由于太懒没设置图床,图片无法访问,可以移步至Jenkis安装

1.添加jenkis的软件包存储库

用于自动安装和升级。要使用此存储库,首先将密钥添加到您的系统

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

2. 添加一个 Jenkins apt 存储库条目

sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

3. 更新本地包索引,然后最后安装 Jenkins

sudo apt-get update
sudo apt-get install jenkins

apt-update过程中可能会出现以下错误:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XFehUrTY-1633522235899)(Jenkins安装/源错误.png)]

原因就是jenkis的证书好像有问题,解决如下

sudo apt install ca-certificates

然后重新apt-install,可能提示找不到jdk

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D8i6xgNs-1633522235904)(Jenkins安装/缺java.png)]

根据提示type -p java后找到jdk的安装路径,添加软链接

ln -s /home/data/java/jdk1.8.0_261/bin/java /usr/bin/java  # 前面换成自己的路径

4.验证安装

systemctl status jenkins

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7I8JIH6T-1633522235906)(Jenkins安装/1633497135575.png)]

5.更改端口

Jenkis默认端口是8080,经常会冲突

  1. 修改/etc/init.d/jenkins文件do_start函数的check_tcp_port命令,端口号从8080换成8123
vi /etc/init.d/jenkins

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GX5jULwZ-1633522235909)(Jenkins安装/1633497779633.png)]

  1. 修改/etc/default/jenkins文件,将HTTP_PORT从8080改成8123
vi /etc/default/jenkins

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aUqiUNaZ-1633522235910)(Jenkins安装/1633497825451.png)]

  1. 重启Jenkis

    systemctl restart jenkins
    
  2. 查看状态

    systemctl status jenkins
    

6.登录Web页面

ip+端口(http://192.168.0.106:8123/login?from=%2F)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bsT18rD9-1633522235911)(Jenkins安装/1633498044704.png)]

执行以下命令获取初始密码

cat /var/lib/jenkins/secrets/initialAdminPassword

接下来,图形界面安装建议的插件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P9jiJWeK-1633522235912)(Jenkins安装/1633501611018.png)]

点击“Install suggested plugins” ,安装过程将会立即开始:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ng2WQ9K2-1633522235913)(Jenkins安装/1633501638828.png)]

一旦插件被安装,你将会被提示去设置第一个管理员账号。填写必要的信息,并且点击“Save and Continue”。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pU70iq3x-1633522235914)(Jenkins安装/1633501655838.png)]

下一页将会问你,设置 Jenkins 实例的 URL 地址。这个文本域将会被自动填写生成的 URL。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HWPWYDW6-1633522235915)(Jenkins安装/1633501676850.png)]

通过点击"Save and Finish"按钮,确认 URL,并且设置过程将会完成。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BRyTOZfz-1633522235916)(Jenkins安装/1633501709840.png)]

7.插件设置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eyvYvXnY-1633522235917)(Jenkins安装/1633501758728.png)]

7.1 插件下载地址修改

因为国外地址访问比较慢,所以修改成国内下载地址会提高插件的下载速度 ,修改站点地址为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PTCpUXRE-1633522235918)(Jenkins安装/1633501816227.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FMOjmwIg-1633522235919)(Jenkins安装/1633501830274.png)]

7.2 Publish Over SSH插件安装

安装该插件的目的是为了在创建任务的构建环节添加Send files or execute commands over SSH即通过SSH的方式将包上传至指定文件夹。

在可选插件中搜索直接安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B8NyDICR-1633522235920)(Jenkins安装/1633501983561.png)]

7.3 其他插件

其他插件安装方式类似

8.全局工具配置

主要是配置Java、Maven、Git等工具

8.1 JDK配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GMNTYr8Q-1633522235920)(Jenkins安装/1633502122889.png)]

8.2 Maven配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HjHIFGHY-1633522235921)(Jenkins安装/1633502159856.png)]

8.3 Git配置

Git使用默认就行,前提是提前安装了Git

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VQ5HbKDf-1633522235922)(Jenkins安装/1633502207498.png)]

9 系统配置

9.1 Publish over SSH配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bZD4tRqP-1633522235923)(Jenkins安装/1633502328556.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RlA30IIx-1633522235923)(Jenkins安装/1633502393300.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-16fDXbTy-1633522235924)(Jenkins安装/1633502433283.png)]

9.2 Gitee配置

在插件管理可选插件中搜索Gitee并安装

安装后进入系统配置中的Gitee配置

  1. 前往 Jenkins -> Manage Jenkins -> Configure System -> Gitee 配置 -> Gitee 链接
  2. 在 链接名 中输入 Gitee 或者你想要的名字
  3. Gitee 域名 URL 中输入码云完整 URL地址: https://gitee.com (码云私有化客户输入部署的域名)
  4. 证书令牌 中如还未配置码云 APIV5 私人令牌,点击 Add - > Jenkins
    1. Domain 选择 全局凭据
    2. Kind 选择 Gitee API 令牌
    3. Scope 选择你需要的范围
    4. Gitee API Token 输入你的码云私人令牌,获取地址:https://gitee.com/profile/personal_access_tokens
      ID, Descripiton 中输入你想要的 ID 和描述即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-akonh7mf-1633522235925)(Jenkins安装/1633503010615.png)]

  1. Credentials 选择配置好的 Gitee APIV5 Token
  2. 点击 Advanced ,可配置是否忽略 SSL 错误(适您的Jenkins环境是否支持),并可设置链接测超时时间(适您的网络环境而定)
  3. 点击 Test Connection 测试链接是否成功,如失败请检查以上 3,5,6 步骤。
  4. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sS4jyyqU-1633522235925)(Jenkins安装/1633503100519.png)]

10.基于Docker部署SpringBoot项目

10.1 创建任务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O6AsKWJh-1633522235926)(Jenkins安装/1633519992497.png)]

10.2 源码管理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sp7OqoiY-1633522235927)(Jenkins安装/1633520056851.png)]

10.3 构建触发器

这个一般不适合生产,推荐使用手动构建,所以这一步忽略

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tnGJeATp-1633522235928)(Jenkins安装/1633520153210.png)]

一般是通过WebHooks触发构建,红框中的URL是Gitee回调的地址,也就是当代码发生改变,Gitee会调用这个接口告诉Jenkis让其拉代码开始构建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sNezHaQk-1633522235928)(Jenkins安装/1633520278051.png)]

WebHook密码也需要填写在Gitee仓库的管理下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CRdTQOlf-1633522235929)(Jenkins安装/1633520348523.png)]

10.4 构建脚本

这一过程主要分三步:

  1. maven打包
  2. 备份,将jar包从jenkis默认目录复制到自定义指定目录,最后生成dockerfile
  3. 通过SSH连接远程服务器,再通过执行脚本使用dockerfile构建镜像后,docker run 镜像启动容器应用

maven打包


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Ag474E8-1633522235930)(Jenkins安装/1633520595481.png)]

备份,将jar包从jenkis默认目录复制到自定义指定目录,最后生成dockerfile

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JLFxkn0i-1633522235931)(Jenkins安装/1633520608940.png)]

#!/bin/bash
# 上面这个东西不加,会报空间不足异常
# 注意:所有镜像,容器和应用的命名,最好不要有大写字母

# docker镜像/容器名字
SERVER_NAME=blockchain-api
# 操作/项目路径(Dockerfile和Jar存放的路径)
BASE_PATH=/home/data/jenkis/data/$SERVER_NAME
# 备份目录
BACKUP_PATH=/home/data/jenkis/backup


# jar名字
JAR_NAME=$SERVER_NAME-0.0.1-SNAPSHOT.jar
# 源jar路径(注:更新任务名需要同步更新这个路径,例:baiduapplet)
SOURCE_PATH=/var/lib/jenkins/workspace/$SERVER_NAME/target/$JAR_NAME
# 当前日期时间
DATE=`date +%Y%m%d-%H%M%S`

# 备份
function backup(){
	if [ ! -d $BACKUP_PATH  ]; then
  		mkdir $BACKUP_PATH
	else
  		echo "备份文件夹已存在"
	fi

	if [ -f "$BASE_PATH/$JAR_NAME" ]; then
    	echo "$JAR_NAME 备份..."
        	cp $BASE_PATH/$JAR_NAME $BACKUP_PATH/$SERVER_NAME-$DATE.jar
        echo "备份 $JAR_NAME 完成"
    else
    	echo "$BASE_PATH/$JAR_NAME不存在,跳过备份"
    fi
}

# 迁移,构建好的Jar包,复制到DockerFile一起
function transfer(){

    echo "迁移代码开始"
    
    rm -rf $BASE_PATH
    
    mkdir -p $BASE_PATH
    
    echo "最新构建代码 $SOURCE_PATH 迁移至 $BASE_PATH ...."
        cp $SOURCE_PATH $BASE_PATH 
        
    echo "迁移完成"
    
}

# 生成Dockerfile文件
function dockerfile(){
	echo "开始生成Dockerfile文件"
    
echo """

FROM java:8

ADD $JAR_NAME $JAR_NAME

#更改容器时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 容器启动后执行的操作
CMD java -jar $JAR_NAME

""" > $BASE_PATH/Dockerfile
	echo "生成Dockerfile文件成功"

}


#入口
backup		# 1:备份
transfer	# 2:迁移
dockerfile	# 3:生成dockerfile


通过SSH连接远程服务器,再通过执行脚本使用dockerfile构建镜像后,docker run 镜像启动容器应用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gyF6MFoC-1633522235931)(Jenkins安装/1633520958819.png)]

#!/bin/bash
# 上面这个东西不加,会报空间不足异常
# 注意:所有镜像,容器和应用的命名,最好不要有大写字母

# docker镜像/容器名字
SERVER_NAME=blockchain-api
# 操作/项目路径(Dockerfile和Jar存放的路径)
BASE_PATH=/home/data/jenkis/data/$SERVER_NAME

# 端口号
APP_PORT=8081 #应用的端口
E_PORT=8081 #服务暴露给外部调用的端口
# 容器id
CID=$(docker ps -a | grep "$SERVER_NAME" | awk '{print $1}')
# 镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')

function dockerBuild(){
	if [ -n "$CID" ]; then
		echo "存在$SERVER_NAME容器,CID=$CID,删除容器 ..."
			docker rm -f $CID 
		echo "$SERVER_NAME容器删除完成..."
	else
		echo "不存在$SERVER_NAME容器..."
	fi


	if [ -n "$IID" ]; then
		echo "存在$SERVER_NAME镜像,IID=$IID"
        docker rmi -f $IID
        echo "镜像删除完成"
		cd $BASE_PATH
		docker build -t $SERVER_NAME .
        echo "镜像构建完成"
	else
		echo "不存在$SERVER_NAME镜像,开始构建镜像"
		cd $BASE_PATH
        docker build -t $SERVER_NAME .
        echo "镜像构建完成"
	fi
    
    echo "启动容器..."
    docker run --name $SERVER_NAME -d --privileged -p $E_PORT:$APP_PORT $SERVER_NAME
    echo "容器启动完成"
}

dockerBuild	# 4:停止->删除旧容器,删除旧镜像,重建镜像,run容器



10.5 构建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jRoi75vG-1633522235932)(Jenkins安装/1633521144678.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IokBfJtN-1633522235933)(Jenkins安装/1633521172563.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lSCnrmEa-1633522235933)(Jenkins安装/1633521186039.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HMeT3Spm-1633522235934)(Jenkins安装/1633521198044.png)]

参考

Jenkins+Dcoker+Gitee+Rancher实现SpringBoot项目的持续集成自动化部署以及管理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值