背景:docker搭建 jenkins,通过其自带git把源码拉取到jks(jenkins简称)workspace,进行build执行mvn打包编译,然后通过ssh远程链接到目标机器(上传打好jar/war到目标机器的挂载目录),执行指令把jar/war copy/mv到目标目录下执行docker restart name (其服务也是通过docker-create-java创建的实例 )。
为了更好的写这个教程,我逐步完成最终目标,将目标拆分成3个部分。
- 第一步:gitlab代码服务器,提交maven项目(见docker搭建gitlab博文)
- 第二部:docker安装jenkins,配置环境,拉取github工程,构建war/jar包
- 第三步:构建的war/jar包自动上传推送到远程服务器中
- 第四步:执行docker restart 指令启动服务
ps:不适用 宿主机上搭建jenkins
服务,定时(或githook)的方式从github
上拉取maven工程,构建jar/war包。使用docker构建image,推送到docker registry
上。
- 第二部
搭建过程 网上尽有不再累述 简要:docker pull jenkins/jenkins:latest
docker run -itd --privileged --name="$1" --hostname="$1" -p "$2":8080 -p "$3":50000 --log-driver=json-file -v /alex/jenkins/"$1"/config/:/var/jenkins_home -v /alex/jenkins/"$1"/logs/:/var/jenkins_home/logs/tasks/ -v /alex/jenkins/"$1"/workspace/:/var/jenkins_home/workspace/ -v /alex/jenkins/maven/:/usr/local/maven -v /usr/local/jdk8:/usr/local/jdk8 jenkins/jenkins:latest
注意两个点
1:安装默认英文版:需中文版的把jks的workspace (hudson.model.UpdateCenter.xml)
2:安装提示默认offline是因为(default.json)connectionCheckUrl是Google.com ;(国内懂的吧)还能怎么样呢,当然是原谅它了。身为程序员,在程序里埋个个把bug实在是稀松平常的事情,毕竟是面向bug编程嘛。只要能及时发现并处理就ok;修改可以访问了国内就baidu.com
- 第三步 注意: 这个插件是不在默认安装插件的范围内的,需要先手动安装下。
-----Publish Over SSH远程部署
1.在系统管理中配置需要远程部署的服务器
在项目中使用插件(构建中使用的话名为Send files or execute commands over SSH,构建后使用的话名为Send build artifacts over SSH)。
Name :选择需要的服务器
Source files: 需要上传的文件。支持通配符。需要特别注意的是,需要上传的文件必须位于当前的workspace中,否则会上传失败。
Remove prefix:移除指定前缀。例如我指定了移除test,这个文件会直接上传到/home/test/html/下,否则会上传到/home/test/html/test下。
Remote directory:远程目录。注意! 此目录是基于之前设置服务器时设置远程目录的,即这里的目录是位于服务器设置目录下的相对目录。
Exec command:需要执行的命令。这里不做太多说明。
2:maven配置
2全局配置
三:构建环境
Pre Steps:构建前的操作,可以增加执行shell,配置脚本echo "Pre Steps脚本启动成功",此内容会在构建控制台中打印出来
Build:Root POM配置pom.xml(要构建的工程必须是maven,有pom文件),Goals and options配置clean package(也就是mvn的构建命令)
Post Steps:构建完成后的操作,可以增加执行shell,配置脚本echo "Post Steps脚本启动成功${WORKSPACE}",${WORKSPACE}为jenkins的环境变量。上方的3个单选项分别代表构建成功后执行、构建成功或不稳定执行、总是执行
————————————————
-ending