天天看點

Devops案例——jenkins,GitLab,Openshift 部署JAVA後端——Chapter 2

Devops案例——jenkins,GitLab,Openshift 部署JAVA後端——Chapter 2

  1. 前提:在openshift上已經部署好了需要配置Devops的項目了

1 根據gitlab的域名的git倉庫位址,在Chapter1中已經說明過了,不是gitlab提供的那個位址,那是和容器名相關的,無法對外開放通路。使用可用倉庫域名進行git的push,關鍵就是git倉庫的結構裡面要上傳建構項目時候一定要有Dockerfile

Devops案例——jenkins,GitLab,Openshift 部署JAVA後端——Chapter 2

2 在完成之前的準備工作後,現在對jenkins的項目配置一些建構配置了,點選進入具體項目然後單擊configure,添加build步驟,我們得清楚的是,GitLab那邊與jenkins的連接配接我們已經弄好了,GitLab發生代碼改變,那麼jenkins會發生建構,而這整個項目我們應該要知道是在你說建立的jenkins項目的workspace目錄下的,當然也包括我們添加的Dockerfile

我們的Dockerfile編寫是使用添加jar包的方法實作的,是以要想辦法把項目打成jar包,jenkins也提供了maven打包的選項,在build裡面添選如下選項

Devops案例——jenkins,GitLab,Openshift 部署JAVA後端——Chapter 2

為其填寫打jar包指令,如下圖所示

Devops案例——jenkins,GitLab,Openshift 部署JAVA後端——Chapter 2

先完成jar包的打包後,這樣在opnshift上jenkins具體項目的檔案下就有了項目jar包和Dockerfile檔案,接下來我們要考慮的就是如何讓他自動建構

通過build選項的Execute Shell可以達到自動在openshift上執行指令的功能,主要要執行的内容為:我們為該過程建立一個獨立檔案夾,然後把maven打成的jar包copy進去,還有Dockerfile也同樣copy進去,這樣就形成了一個建構的标準結構了,這一切内容隻需要在build選項的Execute Shell欄添加相應的指令即可,我們通過日志可以看到maven是在workspace下建立了一個target檔案,把jar包放入其中,且包名被規範的命名為

project-0.0.1-SNAPSHOT.jar

,其中project為項目名稱。

Execute Shell的大緻步驟

1.删除之前(上一次建構)的同名獨立檔案夾(用來存放Dockerfile和jar包的)

2.建立新的獨立檔案

3.把jar包和Dockerfile檔案copy進入獨立檔案

4.執行oc new build指令使openshift建構新的build出發整個項目的重新建構部署

具體Shell代碼如下

Devops案例——jenkins,GitLab,Openshift 部署JAVA後端——Chapter 2
rm -rf builds && mkdir builds
cp Dockerfile builds/
cp target/console-0.0.1-SNAPSHOT.jar builds/
oc start-build public-service-back --from-dir builds --follow -n y-test2
           

其中builds為我提到的獨立檔案夾名稱用來建構的,y-test2為openshift的項目名稱,public-service-back為opnshift項目名下的應用程式名稱。

最後要注意的是如果你在openshift上部署jenkins的命名空間(也就是項目名)和你要自動化部署的應用程式的命名空間不同,那麼要把應用程式項目添加到jenkins的權限當中,在節點上執行如下代碼

oc policy add-role-to-user edit system:serviceaccount:tourcicd:jenkins01 -n Application-project
           

其中

Application-project

是應用程式所在的項目名稱,

system:serviceaccount:tourcicd:jenkins01

tourcicd:jenkins01

為jenkins位置即

“jenkins所在項目:jenkins應用程式名”