使用docker來提升你的Jenkins演示

jopen 11年前發布 | 79K 次閱讀 項目構建 Docker

什么是Jenkins

Jenkins (http://jenkins-ci.org) 幾乎是CI(持續集成)的代名詞。 它有一個大的社區,有很多插件一起提供了很強大的功能。為了學習這些東西,最好的辦法將是通過設置環境來實踐它。

此外如果你想給別人介紹jenkins的新功能,你很想為這些功能快速創建一個演示環境。

如何可以輕松地完成? 我最喜歡用Docker來實現這一點。

使用docker來提升你的Jenkins演示

在這個博客系列,我會用一些例子一步一步來說明如何實現這一目標。

演示Jenkins的小功能 - AnsiColor插件

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

使用docker來提升你的Jenkins演示

所以我想給大家一個演示環境來可以嘗試,而無需在本地Jenkins上安裝。我一般推薦在正式部署之前嘗試一下。

結果

讓我們來立即來看看效果,或許你也可能只是對這個功能感興趣。

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

使用docker來提升你的Jenkins演示

在控制臺窗口中上Jenkins已經被啟動,然后可以打開瀏覽器訪問8080端口。

使用docker來提升你的Jenkins演示

看起來相當不錯,一個叫craft的任務(job)已經存在了,Jenkins顯示是最新的LTS版本1.580.1

點擊craft任務,并運行它,然后檢查console。太棒了,部分結果可以有顏色顯示了,這就是我們要的。

使用docker來提升你的Jenkins演示

然后回過頭來看看它是如何配置。

使用docker來提升你的Jenkins演示

現在演示完畢,可以學習怎么做到的。

它是如何工作的

這里是Dockerfile, 參見github上的源代碼

FROM ubuntu:trusty

MAINTAINER Larry Cai <larry.caiyu@gmail.com>

ENV REFRESHED_AT 2014-11-03

RUN apt-get update  && apt-get install -qqy curl openjdk-6-jdk

ENV JENKINS_HOME /opt/jenkins/data
ENV JENKINS_MIRROR http://mirrors.jenkins-ci.org

# install jenkins.war and plugins

RUN mkdir -p $JENKINS_HOME/plugins $JENKINS_HOME/jobs/craft
RUN curl -sf -o /opt/jenkins/jenkins.war -L $JENKINS_MIRROR/war-stable/latest/jenkins.war

RUN for plugin in chucknorris greenballs scm-api git-client ansicolor description-setter \
    envinject job-exporter git ws-cleanup ;\
    do curl -sf -o $JENKINS_HOME/plugins/${plugin}.hpi \
       -L $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done

# ADD sample job craft

ADD craft-config.xml $JENKINS_HOME/jobs/craft/config.xml

# start script

ADD ./start.sh /usr/local/bin/start.sh
RUN chmod +x /usr/local/bin/start.sh

EXPOSE 8080

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

使用docker來提升你的Jenkins演示

在jenkins中,任務的配置保存為config.xml。這里我們提前做好了,把它放在docker鏡像里的$JENKINS_HOME/jobs/craft目錄下。

<?xml version='1.0' encoding='UTF-8'?>
<project>
  <actions/>
  <description></description>
  <keepDependencies>false</keepDependencies>
  <properties/>
  <scm class="hudson.scm.NullSCM"/>
  <canRoam>true</canRoam>
  <disabled>false</disabled>
  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
  <triggers/>
  <concurrentBuild>false</concurrentBuild>
  <builders>
    <hudson.tasks.Shell>
      <command>#!/bin/bash
env
echo -e "\e[1;31;42m Using docker to demo is awful, v5 \e[0m"
echo see more in http://misc.flogisoft.com/bash/tip_colors_and_formatting
</command>
    </hudson.tasks.Shell>
  </builders>
  <publishers/>
  <buildWrappers>
    <hudson.plugins.ansicolor.AnsiColorBuildWrapper plugin="ansicolor@0.4.0">
       <colorMapName>xterm</colorMapName>
    </hudson.plugins.ansicolor.AnsiColorBuildWrapper>
  </buildWrappers>
</project>

最簡單的方法是直接從運行的Jenkins得到這個config.xml文件(在你的任務URL后面追加config.xml即可)。

使用docker來提升你的Jenkins演示

而在最后,加上一個小腳本start.sh,它將在啟動時啟動Jenkins。

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

然后,你可以建立自己的docker鏡像了,就這么簡單。

docker build –t larrycai/jenkins-demo1 .

如何公開分享

你可以把你的項目放到github上或者bitbucket ,并在http://hub.docker.com運行在您的構建 ,然后其他人可以簡單的運行docker的命令來運行它(您可以自己搜索具體怎么做)。

使用docker來提升你的Jenkins演示

摘要

在這篇博客中,我們演示了如何dockerize你的Jenkins應用程序,它包含了必須的插件和配置和實例任務。 這將會很容易讓你的聽眾了解你想演示的功能。

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

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

在接下來的博客中,我將展示如何更好地組織Jenkins目錄。

Docker可以幫助我們做很多事情。

來自:http://www.larrycaiyu.com/2014/11/04/use-docker-for-your-jenkins-demo-1.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!