天天看點

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

測試Github項目位址:https://github.com/cbamls/eureka-registry

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

##第一步 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/

,效果如下:

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

按照提示我們執行

cat /var/lib/jenkins/secrets/initialAdminPassword

得到

Administrator password

,注意

var

要改成

home

,輸入後點選Continue,如下:

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

設定初始賬戶和密碼

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

設定完成後進入界面:

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

###下載下傳其它插件

系統管理 -->管理插件

在可選插件中下載下傳如下兩個插件

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試
Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

###配置Publish Over SSH

系統管理 --> 系統設定 -->Publish over SSH
Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

配置GitHub Plugin

系統管理 --> 系統設定 --> GitHub --> Add GitHub Sever

如下圖所示

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

API URL 輸入

https://api.github.com

,Credentials點選Add添加,Kind選擇Secret Text,具體如下圖所示。

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

設定完成後,點選

TestConnection

,提示

Credentials verified for user UUserName, rate limit: xxx

,則表明有效。

第六步 github配置

sercret text

注:此處需要一個對項目有寫權限的賬戶

進入github --> setting --> Personal Access Token --> Generate new token
Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試
Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

自己先儲存此

token

,如果丢失,之後再也無法找到這個

token

GitHub webhooks 設定

進入GitHub上指定的項目 --> setting --> WebHooks&Services --> add webhook --> Payload URL為下圖要求
Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

這部分内容等到在jenkins新增任務時會遇到 這裡大家可以回頭再配

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

jenkins

中點開使用者, 拿到

api token

最後

Payload URL

完整寫法是

http://

userName

:

userApiToken

@

JENKENINS_URL

/job/

projectName

?build?token=

APITOKEN

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

##第七步 建構一個maven項目

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

配置此項目

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試
Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試
  1. 填寫項目的git位址, eg.

    https://github.com/your_name/your_repo_name.git

  2. 添加github使用者和密碼
  3. 選擇githubweb源碼庫浏覽器,并填上你的項目URL,這樣每次建構都會生成對應的changes,可直接鍊到github上看變更詳情

-設定鈎子token,觸發遠端建構

通過鈎子 隻要Github有push操作就會自動建構, 這裡token就是上面的在Github配置的token=?

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

- 建構觸發器,建構環境

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

- maven build 設定

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

-

maven

通過

ssh

遠端部署設定

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

參數說明:

  1. Transfer SetSource files:表示要上傳的本地的jar包及路徑,可到工作空間去看。
  2. Remove prefix:表示要上傳時要去除的檔案夾,即隻上傳jar包。
  3. remote driectory:即表示執行時的路徑,相當于把jar包上傳到這裡了。這裡的

    base dir

    Publish Over SSH

    設定的

    /jenkins_release

  4. 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" ]                                                                                  
           

- 建構後操作

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

##第八步 測試建構效果:

-可以用

curl

模拟

curl -s -u cbam:c4118bbe83b80a855eafc7939fd0xxxx -X POST http://222.27.196.8:8080/job/eureka-registry/build?token=yyyyy
           

如果出現Error 403 No valid crumb was included in the request錯誤, 在

jenkins

全局安全設定中取消 對 防止跨站點請求僞造 的勾選

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

-或着直接在

IDEA

中直接編輯項目并

push

到remote ,看效果已經開始建構:

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

-Github效果

-測試效果1

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

-測試效果2

Git+Spring-boot+Docker+ Maven +Registry私有倉庫 +jenkins 持續內建測試

##參考

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