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

275 阅读2分钟

Jenkins+Gitee

一些步骤可参考此文,但是该文章仍然存在一些坑。

在以下进行了一些步骤说明以及避坑点。

juejin.cn/post/712786…

踩坑点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 服务跑在同一台服务器):

  1. 在流程中指定使用 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。

image.png

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

SSH Publishers 配置的注意点:

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

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

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