中国领先的IT技术网站
|
|

使用docker来提升你的Jenkins演示1

Jenkins (http://jenkins-ci.org) 几乎是CI(持续集成)的代名词。 它有一个大的社区,有很多插件一起提供了很强大的功能。为了学习这些东西,最好的办法将是通过设置环境来实践它。

作者:larrycaiyu来源:larrycaiyu.com|2014-11-05 20:05

沙龙活动 | 去哪儿、陌陌、ThoughtWorks在自动化运维中的实践!10.28不见不散!


什么是Jenkins

Jenkins (http://jenkins-ci.org) 几乎是CI(持续集成)的代名词。 它有一个大的社区,有很多插件一起提供了很强大的功能。为了学习这些东西,最好的办法将是通过设置环境来实践它。

此外如果你想给别人介绍jenkins的新功能,你很想为这些功能快速创建一个演示环境。

如何可以轻松地完成? 我最喜欢用Docker来实现这一点。

在这个博客系列,我会用一些例子一步一步来说明如何实现这一目标。

演示Jenkins的小功能 - AnsiColor插件

Jenkins AnsiColor plugin 是我最喜欢的小插件之一,它可以把你控制台日志看起来更好。

所以我想给大家一个演示环境来可以尝试,而无需在本地Jenkins上安装。我一般推荐在正式部署之前尝试一下。

结果

让我们来立即来看看效果,或许你也可能只是对这个功能感兴趣。

docker run –p 8080:8080 –t larrycai/jenkins-demo1

在控制台窗口中上Jenkins已经被启动,然后可以打开浏览器访问8080端口。

看起来相当不错,一个叫craft的任务(job)已经存在了,Jenkins显示是最新的LTS版本1.580.1

点击craft任务,并运行它,然后检查console。太棒了,部分结果可以有颜色显示了,这就是我们要的。

然后回过头来看看它是如何配置。

现在演示完毕,可以学习怎么做到的。

它是如何工作的

这里是Dockerfile, 参见github上的源代码

  1. FROM ubuntu:trusty  
  2.  
  3. MAINTAINER Larry Cai <larry.caiyu@gmail.com>  
  4.  
  5. ENV REFRESHED_AT 2014-11-03  
  6.  
  7. RUN apt-get update  && apt-get install -qqy curl openjdk-6-jdk  
  8.  
  9. ENV JENKINS_HOME /opt/jenkins/data  
  10. ENV JENKINS_MIRROR http://mirrors.jenkins-ci.org  
  11.  
  12. # install jenkins.war and plugins  
  13.  
  14. RUN mkdir -p $JENKINS_HOME/plugins $JENKINS_HOME/jobs/craft  
  15. RUN curl -sf -o /opt/jenkins/jenkins.war -L $JENKINS_MIRROR/war-stable/latest/jenkins.war  
  16.  
  17. RUN for plugin in chucknorris greenballs scm-api git-client ansicolor description-setter \  
  18.     envinject job-exporter git ws-cleanup ;\  
  19.     do curl -sf -o $JENKINS_HOME/plugins/${plugin}.hpi \  
  20.        -L $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done  
  21.  
  22. # ADD sample job craft  
  23.  
  24. ADD craft-config.xml $JENKINS_HOME/jobs/craft/config.xml  
  25.  
  26. # start script  
  27.  
  28. ADD ./start.sh /usr/local/bin/start.sh  
  29. RUN chmod +x /usr/local/bin/start.sh  
  30.  
  31. EXPOSE 8080  
  32.  
  33. CMD [ "/usr/local/bin/start.sh" ]  

开始安装openjdk/curl包,并设置Jenkins启动时所需要的相关环境。

Jenkins 的应用程序 (.war)可以在http://jenkins-ci.org/找到, 你可以选择最新的版本或LTS(长期支持)版本稳定,这里我选择LTS版本http://mirrors.jenkins-ci.org/war-stable/latest/jenkins.war

所有的插件可以在镜像站点上找到:http://mirrors.jenkins-ci.org/, 你需要找到你的插件Plugin Id像ansicolor,它会映射到http://mirrors.jenkins-ci.org/plugins/ansicolor/latest/ansicolor.hpi

在jenkins中,任务的配置保存为config.xml。这里我们提前做好了,把它放在docker镜像里的$JENKINS_HOME/jobs/craft目录下。

  1. <?xml version='1.0' encoding='UTF-8'?> 
  2. <project> 
  3.   <actions/> 
  4.   <description></description> 
  5.   <keepDependencies>false</keepDependencies> 
  6.   <properties/> 
  7.   <scm class="hudson.scm.NullSCM"/> 
  8.   <canRoam>true</canRoam> 
  9.   <disabled>false</disabled> 
  10.   <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding> 
  11.   <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding> 
  12.   <triggers/> 
  13.   <concurrentBuild>false</concurrentBuild> 
  14.   <builders> 
  15.     <hudson.tasks.Shell> 
  16.       <command>#!/bin/bash  
  17. env  
  18. echo -e "\e[1;31;42m Using docker to demo is awful, v5 \e[0m"  
  19. echo see more in http://misc.flogisoft.com/bash/tip_colors_and_formatting  
  20. </command> 
  21.     </hudson.tasks.Shell> 
  22.   </builders> 
  23.   <publishers/> 
  24.   <buildWrappers> 
  25.     <hudson.plugins.ansicolor.AnsiColorBuildWrapper plugin="ansicolor@0.4.0"> 
  26.        <colorMapName>xterm</colorMapName> 
  27.     </hudson.plugins.ansicolor.AnsiColorBuildWrapper> 
  28.   </buildWrappers> 
  29. </project> 

最简单的方法是直接从运行的Jenkins得到这个config.xml文件(在你的任务URL后面追加config.xml即可)。

而在最后,加上一个小脚本start.sh,它将在启动时启动Jenkins。

exec java -jar /opt/jenkins/jenkins.war

然后,你可以建立自己的docker镜像了,就这么简单。

docker build –t larrycai/jenkins-demo1 .

如何公开分享

你可以把你的项目放到github上或者bitbucket ,并在http://hub.docker.com运行在您的构建 ,然后其他人可以简单的运行docker的命令来运行它(您可以自己搜索具体怎么做)。

摘要

在这篇博客中,我们演示了如何dockerize你的Jenkins应用程序,它包含了必须的插件和配置和实例任务。 这将会很容易让你的听众了解你想演示的功能。

所有的代码你都可以在github上的jenkins-demo1上找到。

现在,您可以把您的漂亮的Jenkins新功能打包到Docker到处演示。

在接下来的博客中,我将展示如何更好地组织Jenkins目录。

Docker可以帮助我们做很多事情。

本文出自:larrycaiyu

【编辑推荐】

  1. Docker与微软展开战略合作 实现基于Container的跨平台应用开发
  2. Docker自动化:StackEngine如何计划让生产环境的容器井然有序?
  3. 让Docker功能更强大的10个开源工具
  4. Azure CTO畅谈微软为何拥抱开源技术Docker
  5. 阿里云ECS拥抱Docker
【责任编辑:林师授 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

信息安全风险评估

信息安全风险评估理论研究日趋成熟,相关资料比较充分,但有关评估实际工作的参考资料很少。本书以信息安全风险评估实践为基础,围绕评估工...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
× Python最火的编程语言