关于docker:Docker安装Jenkins实现自动化部署Maven项目

1次阅读

共计 2124 个字符,预计需要花费 6 分钟才能阅读完成。

Jenkins version 2.277.4
Docker version 20.10.5

Jenkins 中武官网 ->https://www.jenkins.io/zh/

装置 Jenkins

docker 装置一切都是那么简略,留神查看 8080 是否曾经占用!

docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean

如果没改端口号的话
装置实现后拜访地址 -> http://{部署 jenkins 所在服务 IP}:8080

初始化 Jenkins

详情见官网教程 ->https://www.jenkins.io/zh/doc…

第一个简略的工作

小试牛刀,先创立简略的工作,工作内容:执行服务器的 shell 脚本。
因为 jenkins 部署在 docker 容器内,没方法间接执行宿主机上的 shell 脚本 ,须要 ssh 登录到宿主机上执行。这就须要Publish Over SSH 插件。(如果 Jenkins 不是用 docker 部署的就不会有这个懊恼)同样的情理,如果 jenkins 和我的项目不在一台服务器也能够应用这个插件,近程拷贝打包的文件或者执行脚本等。

装置插件

首页 -> 系统管理 -> 插件治理 -> 搜寻 Publish Over SSH 并装置.

配置 Publish Over SSH

首页 -> 系统管理 -> 系统配置 ->

创立工作

首页 -> 新建工作 -> 填写工作名称 -> 抉择:构建一个自在格调的软件我的项目
间接在切到【构建】选项卡,点击【增加构建步骤】抉择 Send files or execute commands over SSH
在 SSH service 上面抉择刚刚在【系统配置】配置的服务器。
Exec command 一栏间接输出命令即可,无妨能够试试 echo $(pwd) 命令。

保留,第一个工作建胜利了,回到工作详情页,点击立刻构建,找到【控制台输入】能够看到执行详情。


创立一个自动化部署 maven 我的项目的工作

原理:jenkins 用 git 插件将我的项目拉下来,用 Maven Integration 插件打包,用 Publish Over SSH 插件将打包的 jar 或者文件夹发送到部署我的项目的服务器,并执行 shell 脚本启动~

先决条件:

  1. git 插件:在初始化的时候就默认装置的;
  2. Maven Integration 插件:装置办法同上;
  3. Maven 配置:首页 -> 系统管理 -> 全局工具配置,勾选主动装置,抉择 maven 版本即可;
  4. Publish Over SSH: 创立上一个工作的装置 / 配置过了;

git 拉取代码

同样创立工作,来到配置页面,切到【源码治理】选项卡配置仓库地址和密钥:

这个时候能够保留并点击 立刻构建 看看代码是否拉下来。

Maven 打包

切到【构建】选项卡,点击【增加构建步骤】抉择“调用顶层 Maven 指标

maven 版本抉择在【全局工具配置】外面配置的 maven, 如果没有就是你不配,不,是你没配!
指标一栏填写打包命令:clean install -Dmaven.test.skip=true,或者依据状况填写。

这个时候能够保留并点击 立刻构建 看看代码是否失常打包。

运行启动脚本

代码拉下来了,jar 也打包好了,然而 jar 包在容器外面,能够在【构建】模块增加个 Send files or execute commands over SSH,应用 Source files(工作的工作空间目录)
和 Remote directory(登录我的项目服务器的家目录)传输 jar 文件, 然而我部署 jenkins 的 docker 和部署我的项目的服务器是同一台,应用命令 docker cp 命令就能够将 docker 容器外面的 jar 文件拷贝进去,并和启动我的项目的脚本写在一起。就省去了文件传输,间接执行脚本即可。
docker cp 详见《蛮吉学 Docker》

一个部署 maven 我的项目的工作就创立完了


Send files or execute commands over SSH 的文件传输性能

Source files(工作的工作空间目录):就是代码拉下来的根目录,如果要传输文件夹用 ** 示意
Remote directory(登录我的项目服务器的家目录):ssh 登录的家目录,比方 root 登录这个目录就是 /root, 且文件只能传输到这个目录下或这个目录的上级目录!
Exclude files:不传输的文件。能够过滤不须要的文件比方README.md.gitignore
多个用逗号隔开,保障 Pattern separator 配置的是[,]+

注意事项

  1. 系统配置里配置 Publish Over SSH,服务器的登录最好用 root 用户,否则执行脚本可能会权限有余!
  2. Send files or execute commands over SSH 的文件传输性能配置的 Remote directory 只能是用户的家目录!
  3. docker 部署的 Jenkins 不能间接运行宿主机上的 shell 脚本,且拉取的代码,打包的文件都在 docker 容器内!要借助 Publish Over SSH 插件。
  4. 宿主机不须要装置 git、maven!

正文完
 0