全网Jenkins+Gitee+Docker/SSH 部署避坑点总结

Posted pzistart

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全网Jenkins+Gitee+Docker/SSH 部署避坑点总结相关的知识,希望对你有一定的参考价值。

一些步骤可参考此文,但是该文章仍然存在一些坑。
在以下进行了一些步骤说明以及避坑点。

https://juejin.cn/post/7127860325777014791#heading-21

踩坑点0: 容器少配置无法运行docker

运行 jenkins 容器并且挂载目录以及 Docker sock 文件
(sock作用:可以在jenkins容器中使用宿主机的 docker )
docker run -d --name myjenkins -p 8088:8080 -p 50000:50000 -v /data/myjenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -u root jenkins/jenkins
ps: 以 root 权限运行该容器,挂载工作目录,挂载 jenkins 容器运行宿主机 docker 所需文件。这样才能在容器中正常运行 docker。

查看 admin 登录密码
cat /var/jenkins_home/secrets/initialAdminPassword

安装插件并且配置 SSH、Gitee
● Maven Integration:Maven 构建工具
● Publish Over SSH:整个工具,将来把 Jenkins 打包好的 jar 上传到应用服务器上。
● Gitee:协助使用 Gitee 仓库。

配置 maven 和 jdk
maven:
将宿主机的 maven 包拷贝到 jenkins 容器中供其配置
docker cp /pzi/dev_env/maven/apache-maven-3.9.2/ jenkins:/opt/
配置路径
/opt/apache-maven-3.9.2

jdk:
/opt/java/openjdk

打包构建:
打包后的文件,会放到工作目录里面,我们对该目录中的 jar 包,使用 dockerfile 进行创建容器并且运行,就可以实现提交代码后,一键部署。

配置 Webhook :
先配置 jenkins 中的,再配置 gitee 中的,在 gitee 中要记得加上 jenkins 的账号密码。
格式:http://username:password@11.11.11.11:8088/xxxx

部署流程
部署方式 1:

  1. 将 jar 包通过 ssh 发到宿主机
  2. 然后执行宿主机的 shell 脚本,脚本中包含:构建镜像并且运行该镜像称为容器
    部署方式 2 ( 适用于 jenkins 和 docker 服务跑在同一台服务器):
  3. 在流程中指定使用 Dockerfile 来构建镜像即可

shell
// 执行脚本时的默认目录,就是在当前工作目录
docker stop rpa_app || true
docker rm rpa_app || true
docker rmi rpa_app || true
docker build -t rpa_app .
docker run -d -p 8899:80 --name rpa_app rpa_app:latest

我才用的是使用 docker 来部署,所以配置如下。

踩坑点 1 远程目录的配置

配置 SSH Servers
如果采用 ssh 的方式发送,需要注意这个 Remote Directory,如果构建的时候报错说找不到目录,ssh Publishers 的远程目录可能失效,那么就需要修改下图中的 Remote Directory。
配置 SSH Servers
如果采用 ssh 的方式发送,需要注意这个 Remote Directory,如果构建的时候报错说找不到目录,ssh Publishers 的远程目录可能失效,那么就需要修改下图中的 Remote Directory。

踩坑点 2:源文件路径的配置

SSH Publishers 配置的注意点:
发送文件到宿主机(其他服务器主机)时的配置:

  1. 踩坑点:源文件的路径配置,注意它以什么为起始,否则文件发送不成功

    Source files 的路径是相对于工作路径起的,如 freedemo2/ 起,只需要配置它后面的。

Jenkins使用Jenkins构建Gitee上的项目

在Gitee上有一个自己的仓库,已经在上面上传了自己的代码,具体操作可以参考:

https://www.cnblogs.com/wuyizuokan/p/11191694.html

 

下面演示创建Jenkins任务,自动从gitee上拉取代码后进行构建:

新建任务:

技术图片

输入任务名称,选择“构建一个自由风格的软件项目”,点击确定:

技术图片

 在源码管理中,加入你的项目地址,以及你的登陆账号,比如这边输入Gitee的项目,以及登陆Gitee需要的账号密码,还有要构建的代码分支:

技术图片

在构建触发器中,可以配置构建规则,这边配置的是定时构建,即一个小时构建一次:

技术图片

下面是配置构建脚本,注意Jenkins支持任何语言编写的项目的构建,所以它提供shell脚本的配置方式,让使用者自行编写构建脚本,而它只是负责调用而已。这边这个项目是基于Maven的SpringBoot项目,所以直接使用Maven命令进行编译打包即可:

技术图片

构建后,Jenkins支持很多策略,比如把软件包归档到指定位置,对软件包进行部署,这里配置的是构建完成后进行部署,部署到APP服务器上去,当然不配置也不影响Jenkins的打包部署任务:

技术图片

以上配置OK之后,点击保存,构建任务即创建成功:

技术图片

然后选择点击任务:

技术图片

进入任务,点击立即构建:

技术图片

在Build History中即可看见新启动了构建任务:

技术图片

点击任务,进入任务页面,选择控制台输出,可以看到构建的详细日志,如果构建失败,可以在日志中查看失败原因:

技术图片

 

以上,就是Jenkins进行软件构建的过程。

以上是关于全网Jenkins+Gitee+Docker/SSH 部署避坑点总结的主要内容,如果未能解决你的问题,请参考以下文章

全网最全!小白搭建hexo+Github/Gitee/Coding

Gitee + Jenkins

持续集成 - 基于gitee的jenkins配置(从gitee拉取代码并运行)

持续集成 - 基于gitee的jenkins配置(从gitee拉取代码并运行)

Jenkins和Gitee自动化部署SpringBoot项目

Jenkins和Gitee自动化部署SpringBoot项目