共计 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 脚本启动~
先决条件:
- git 插件:在初始化的时候就默认装置的;
- Maven Integration 插件:装置办法同上;
- Maven 配置:首页 -> 系统管理 -> 全局工具配置,勾选主动装置,抉择 maven 版本即可;
- 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 配置的是[,]+
注意事项
- 系统配置里配置 Publish Over SSH,服务器的登录最好用 root 用户,否则执行脚本可能会权限有余!
- Send files or execute commands over SSH 的文件传输性能配置的 Remote directory 只能是用户的家目录!
- docker 部署的 Jenkins 不能间接运行宿主机上的 shell 脚本,且拉取的代码,打包的文件都在 docker 容器内!要借助 Publish Over SSH 插件。
- 宿主机不须要装置 git、maven!