云服务器 docker+jenkins+gitee+spring-boot项目实现自动化部署项目
1.理论讲解
用处
一般情况下,使用jenkins的目的是为了能够自动化部署项目到服务器上,将开发环境和部署环境隔离开来,对于个人电脑而言,做一个项目运行之后会因为硬件跟不上,造成卡顿情况下。jenkins还有利于团队开发。
具体原因:主要是电脑内存实在是不够了
额外:
现在云部署服务已经很全面,可以利用各saas服务进行相应购买后可简单部署,就不需要那么麻烦配置自身了。主要是在搭建自身的同时提高一下从零开始的成长过程。
工作原理
jenkins一般部署的是一台机器上,部署环境是另一台机器上,先通过jenkins配置与gitee相联,并与之监控代码的上传情况,下载到本地之后进行由maven进行打包。之后将打包传送到远程服务器部署,部署有多种,可以用jar包形式利用java命令运行。也可以部署到docker上以容器运行。
注意
本次仅以记录为主,针对大量查询网址知识和相关帖子之后,遇到好多坑,本人还有很多不足,有些问题也是不明不白就解决了,实属有待研究。但结果是好的。可以运行并达到自己的要求了。
2.安装docker
目前买的阿里云服务器的版本内核都已到达docker安装的需求,所以不做提示
sudo yum -y install docker-ce
安装阿里云镜像
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装教程
网址链接
3.docker 安装jenkins
启动docker之后
docker serch jenkins
我这次用的是jenkinsci/blueocean
docerk pull jenkinsci/blueocean
4.配置Jenkins之前工作
原因(简称初始化工作)
在jenkins部署的服务器上,是用来编译项目和打包的,所以这次需要用到。所以要将这些先安装到部署jenkins的服务器上。
以下安装需要记住安装目录
1.jdk 8
jdk官网
2.maven
我下的是这个版本apache-maven-3.8.3-bin.tar.gz
3.git
直接yum install
(提示:要记住安装目录,可以用以下命令来安装指定目录)
yum -c /etc/yum.conf --installroot=/usr/local --releasever=/ install {这里填你想安装的软件,例如git,不用加大括号}
安装完后统一配置环境变量,vim /etc/profile(自行搜索)
安装之后记住安装目录才能jenkins配置好,这一步非常重要,别问我为什么知道,试了好多次。
例如我把jdk安装到
/usr/src/components/jdk1.8.0_301
dokcer启动jenkins *重点
一般docker是以容器来部署的,所以说一些路径和配置文件都在容器下,这时我们要进行文件的映射,将本地的文件映射(专业名词,我可能说得不对)到docker里。
# 查看镜像
docker images
docker run -d -p 8001:8080 -p 50000:50000 \
-v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/mv:/usr/bin/mv \
-v /usr/src/components/jdk1.8.0_301/bin/java:/usr/src/components/jdk1.8.0_301/bin/java \
-v /usr/src/components/jdk1.8.0_301:/usr/src/components/jdk1.8.0_301 \
-v /usr/src/components/apache-maven-3.8.3:/usr/src/components/apache-maven-3.8.3 \
-v /export/service/repository:/export/service/repository \
-v /usr/src/components/git:/usr/src/componeents/git \
-v /usr/src/components/git/bin/git:/usr/src/components/git/bin/git \
-v jenkins:/export/service/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkinsci/blueocean
\
这里的\是命令行分割
逐一分析
-v /usr/bin/docker:/usr/bin/docker \ (部署docker时要用到的, :前面的是本机,:后面的是容器里的文件路径)
-v /usr/src/components/jdk1.8.0_301/bin/java:/usr/src/components/jdk1.8.0_301/bin/java
-v /usr/src/components/jdk1.8.0_301:/usr/src/components/jdk1.8.0_301 {这里是jdk路径,也就是JAVE_HOME环境变量配置的路径}
-v /usr/src/components/apache-maven-3.8.3:/usr/src/components/apache-maven-3.8.3 {
这里是maven的路径,同上}
-v /usr/src/components/git:/usr/src/componeents/git
-v /usr/src/components/git/bin/git:/usr/src/components/git/bin/git \ { git这里需要配置两个,原因后面提及}
其余命令,根据这个帖子借鉴:
https://blog.csdn.net/x286129277/article/details/109523157
运行命令之后。就可以通过公网ip地址进入8001端口
jenkins初始化
安装推荐的插件
之后实例配置的话,直接默认也行。
5.配置公共模块
这时,经过重重磨难。终于来到了jenkins界面
点击设置
先点击插件管理
远程链接插件
安装重启jenkins(点击安装重启选择就行。不用重启docker)
进入全局,重点来了之前设置的路径在此用上了
第一步的前置配置完成。
6.配置远程服务器
远程服务器指的是你的项目部署的服务器,主要是我这里只有一条服务器,所以都配置统一服务器上了
7.与gitee进行相连
先在装好gitee之后
这里利用token令牌免登录
在gitee的网址里面(下图是gitee的网址)
生成令牌
复制过来
8配置公钥
配置公钥是为了后续添加任务能够登录到git项目并拉取项目
先进入容器
docker exec -it <容器name或者id> /bin/bash
-it 是交互客户端
执行
ssh-keygen -t rsa
查看公钥
cat /var/jenkins_home/.ssh/id_rsa.pub
包括ssh-rsa 一同复制到上面gitee的公钥中生成就确认即可
9.jenkins创建任务
这里填写gitee仓库之后,可能会出218等错误,要么你登录gitee的账号和密码错误,要么是git的路径有问题。或者你的公钥没配置
构建触发器指的是什么时候就拉取代码
要填写webhook,进入gitee项目的管理把上面url和密码填入下面
10.准备好spring-boot项目,并部署
下拉,前提是你的项目能够运行并且能够在maven打包。构建环境
先构建好maven
clean install -Dmaven.test.skip=true
编译好的jar在docker容器里面
#进入容器
docker exec -it 89f7dc9c71a7 /bin/bash
#切换到workspace目录
cd /var/jenkins_home/workspace/
11.jenkins构建任务
12.补充:运行脚本
晚上有很多关于centos的命令,但是有些并不适用,唯独找到下面引用链接里。才能够完成
刚才这里
source /etc/profile
cd 《远程部署服务器路径,上面Remote prefix填的》
ps -ef|grep《jar包名称 不加书名号》|grep -v grep|awk ‘{print $2}’|xargs kill -s 9
BUILD_ID=dontKillMe
nohup java -jar 《jar包名称 不加书名号》 > unionproject_log.file 2>&1 &
具体引用如下
这里是引用
https://blog.csdn.net/jiayou516/article/details/116997016
13.总结
自身通过很多帖子进行解决。再根据自己走过的过程一路记录过来。到最后能够实现。困难总有,唯独解决困难和不断向前走。熬夜也不成问题。