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

发布时间 2023-06-09 09:45:17作者: pzistart

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

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 来部署,所以配置如下。
image

踩坑点 1 远程目录的配置

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

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

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

  1. 踩坑点:源文件的路径配置,注意它以什么为起始,否则文件发送不成功
    image
    Source files 的路径是相对于工作路径起的,如 freedemo2/ 起,只需要配置它后面的。

image