Git+Spring-boot+Docker+ Maven +Registry私有仓库 +jenkins 持续集成测试
2017-05-21 12:40
1061 查看
测试Github项目地址:https://github.com/cbamls/eureka-registry
我们需要赋予jenkins用户sudo权限以便能在容器内运行Docker命令。当然,也可以将jenkins用户加入到Docker组中来避免在所有Docker命令前使用‘sudo’,不过由于这个组gid的不同会造成不可移植(如Pini文中所述)。
最后两行用于处理plugins.txt文件中定义的插件。如果你不需要任何插件可以忽略这两行,不过我推荐至少包括如下内容:
如果不想安装任何插件,可创建个空文件或将相关指令从Dockerfile中删除。本文并不需要上述插件。
现在来构建并运行容器,将Docker socket和程序映射进来。
按照提示我们执行
设置完成后进入界面:
在可选插件中下载如下两个插件
如下图所示
API URL 输入
设置完成后,点击
进入github –> setting –> Personal Access Token –> Generate new token
自己先保存此
这部分内容等到在jenkins新增任务时会遇到 这里大家可以回头再配
在
http://
配置此项目
填写项目的git地址, eg.
添加github用户和密码
选择githubweb源码库浏览器,并填上你的项目URL,这样每次构建都会生成对应的changes,可直接链到github上看变更详情
-设置钩子token,触发远程构建
通过钩子 只要Github有push操作就会自动构建, 这里token就是上面的在Github配置的token=?
- 构建触发器,构建环境
- maven build 设置
-
参数说明:
Transfer SetSource files:表示要上传的本地的jar包及路径,可到工作空间去看。
Remove prefix:表示要上传时要去除的文件夹,即只上传jar包。
remote driectory:即表示执行时的路径,相当于把jar包上传到这里了。这里的
exec commad:要执行的命令脚本。
脚本
最后点击保存即可
可以看到把通过
- 构建后操作
第一步 pull docker-registry
#:docker pull registry // 此/opt/data/registry目录为私有仓库镜像宿主机映射目录 #:/usr/bin/docker -d -v -v /opt/data/registry:/tmp/registry --insecure-registry 222.27.196.8:5000
第二步 build jekins镜像
创建一个包容以下内容的Dockerfile:FROM jenkins USER root RUN apt-get update \ && apt-get install -y sudo \ && rm -rf /var/lib/apt/lists/* RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers USER jenkins COPY plugins.txt /usr/share/jenkins/plugins.txt RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt
我们需要赋予jenkins用户sudo权限以便能在容器内运行Docker命令。当然,也可以将jenkins用户加入到Docker组中来避免在所有Docker命令前使用‘sudo’,不过由于这个组gid的不同会造成不可移植(如Pini文中所述)。
最后两行用于处理plugins.txt文件中定义的插件。如果你不需要任何插件可以忽略这两行,不过我推荐至少包括如下内容:
$ cat plugins.txt scm-api:latest git-client:latest git:latest greenballs:latest
如果不想安装任何插件,可创建个空文件或将相关指令从Dockerfile中删除。本文并不需要上述插件。
现在来构建并运行容器,将Docker socket和程序映射进来。
$ docker build -t myjenkens. ... Successfully built 471fc0d22bff $ docker images
第四步 启动myjenkins容器
/home/jenkins_home 目录为jenkins的主目录本地映射, 只有这样jenkins容器干掉后,数据才不会丢失#: docker run -d -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v /lib64/libdevmapper.so.1.02:/usr/lib/libdevmapper.so.1.02 -v /lib64/libsystemd.so.0:/usr/lib/libsystemd.so.0 -v /lib64/libgcrypt.so.20:/usr/lib/libgcrypt.so.20 -v /lib64/libudev.so.0:/usr/lib/libudev.so.0 -v /home/jenkins_home:/var/jenkins_home myjenkins
第五步 jenkins设置
经过上面的配置,你可以访问你的Jenkins了,在浏览器中输入:http://your server ip:8080/,效果如下:
按照提示我们执行
cat /var/lib/jenkins/secrets/initialAdminPassword得到
Administrator password,注意
var要改成
home,输入后点击Continue,如下:
设置初始账户和密码
设置完成后进入界面:
下载其它插件
系统管理 –>管理插件在可选插件中下载如下两个插件
配置Publish Over SSH
系统管理 –> 系统设置 –>Publish over SSH配置GitHub Plugin
系统管理 –> 系统设置 –> GitHub –> Add GitHub Sever如下图所示
API URL 输入
https://api.github.com,Credentials点击Add添加,Kind选择Secret Text,具体如下图所示。
设置完成后,点击
TestConnection,提示
Credentials verified for user UUserName, rate limit: xxx,则表明有效。
第六步 github配置
sercret text
注:此处需要一个对项目有写权限的账户进入github –> setting –> Personal Access Token –> Generate new token
自己先保存此
token,如果丢失,之后再也无法找到这个
token。
GitHub webhooks 设置
进入GitHub上指定的项目 –> setting –> WebHooks&Services –> add webhook –> Payload URL为下图要求这部分内容等到在jenkins新增任务时会遇到 这里大家可以回头再配
在
jenkins中点开用户, 拿到
api token最后
Payload URL完整写法是
http://
userName:
userApiToken@
JENKENINS_URL/job/
projectName?build?token=
APITOKEN
第七步 构建一个maven项目
配置此项目
填写项目的git地址, eg.
https://github.com/your_name/your_repo_name.git
添加github用户和密码
选择githubweb源码库浏览器,并填上你的项目URL,这样每次构建都会生成对应的changes,可直接链到github上看变更详情
-设置钩子token,触发远程构建
通过钩子 只要Github有push操作就会自动构建, 这里token就是上面的在Github配置的token=?
- 构建触发器,构建环境
- maven build 设置
-
maven通过
ssh远程部署设置
参数说明:
Transfer SetSource files:表示要上传的本地的jar包及路径,可到工作空间去看。
Remove prefix:表示要上传时要去除的文件夹,即只上传jar包。
remote driectory:即表示执行时的路径,相当于把jar包上传到这里了。这里的
base dir为
Publish Over SSH设置的
/jenkins_release
exec commad:要执行的命令脚本。
脚本
deploy.sh
#!/bin/sh REGISTRY_URL=222.27.196.8:5000 cd /jenkins_release cp *.jar /opt/jenkinsWeb/release cd /opt/jenkinsWeb/release path=`pwd` echo $path if docker images | grep ${REGISTRY_URL}/eureka-registry then docker rmi ${REGISTRY_URL}/eureka-registry fi docker build -t ${REGISTRY_URL}/eureka-registry . docker push ${REGISTRY_URL}/eureka-registry if docker ps -a | grep -i eureka-registry then docker rm -f eureka-registry fi docker create --name eureka-registry ${REGISTRY_URL}/eureka-registry sh /opt/jenkinsWeb/bin/bootstrap.sh ~
最后点击保存即可
可以看到把通过
ssh传过来的
jar扔到
/opt/jenkinsWeb/release目录, 此目录下还有个
Dockerfile用来构建
Spring-boot应用镜像。内容:
FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD kitty-eureka-registry.jar app.jar ENV JAVA_OPTS="-Dlogging.path=/var/log" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
- 构建后操作
第八步 测试构建效果:
-可以用curl模拟
curl -s -u cbam:c4118bbe83b80a855eafc7939fd0xxxx -X POST http://222.27.196.8:8080/job/eureka-registry/build?token=yyyyy[/code]
如果出现Error 403 No valid crumb was included in the request错误, 在jenkins全局安全设置中取消 对 防止跨站点请求伪造 的勾选
-或着直接在IDEA中直接编辑项目并push到remote ,看效果已经开始构建:
-Github效果
-测试效果1
-测试效果2参考
Spring-boot日志管理:http://www.jianshu.com/p/59787a123b05
知秋大佬持续集成:https://github.com/muyinchen/woker/blob/master/%E9%9B%86%E6%88%90%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/%E6%89%8B%E6%8A%8A%E6%89%8B%E6%95%99%E4%BD%A0%E6%90%AD%E5%BB%BAJenkins%2BGithub%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90%E7%8E%AF%E5%A2%83.md
jenkins maven Spring Boot git Linux持续集成环境搭建教程 http://www.jianshu.com/p/d4f2953f3ce0
相关文章推荐
- jenkins maven Spring Boot git Linux持续集成环境搭建教程
- Springboot Gitlab Jenkins Maven Docker 持续集成/持续交付
- Jenkins-Docker-SpringBoot-java-git-gradle-持续集成与自动部署-实现跨服务器部署
- gitlab+jenkins+maven+docker持续集成(六)——.Jenkins获取git tags代码进行持续集成
- jenkins + git+maven做持续集成测试版本控制(未完成版)
- jenkins+git+maven+docker持续集成部署
- Jenkins 持续集成平台构建之使用nexus搭建maven私有仓库
- 持续集成框架jenkins介绍02-持久集成git仓库+maven项目
- jenkins自动化部署搭建。jenkins+docker+maven+git+springboot
- springboot项目maven打包成dockerImage推送到私有仓库dockerhub上
- Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记
- Jenkins+Git+Maven+Shell+Tomcat持续集成
- 老李分享:持续集成学好jenkins之Git和Maven配置
- Jenkins+maven+git+sonar 系统持续集成&代码单測管理
- Jenkins学习总结(3)——Jenkins+Maven+Git搭建持续集成和自动化部署的
- Java开发流程自动化(svn+maven+nexus+jenkins) --自动编译,持续集成,测试,打包,发布/部署
- Jenkins+Github+Docker+Maven实现持续集成
- 老李分享:持续集成学好jenkins之Git和Maven配置
- Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记