1. 程式人生 > >jenkins自動化部署搭建。jenkins+docker+maven+git+springboot

jenkins自動化部署搭建。jenkins+docker+maven+git+springboot

這兩天在學jenkins。在網上找了一大堆資料。從一臉懵逼到現在的自動化部署。說來都是淚啊。

jenkins:一個可以自動化部署的軟體。平時我們程式設計師都是。擼碼-測試-打包-上傳-部署。這一迴圈。而jenkins的功能就是為了讓我們程式設計師能夠安心擼碼的,其他的事情交給jenkins去做。

jenkins的安裝。jinkins可以安裝在自己的客戶端,也可以安裝在伺服器。一般推薦安裝在伺服器。而考慮到環境和易維護的因素。我打算把jenkins安裝在docker裡。

伺服器執行:docker pull jenkins   就能自動幫你下載jenkins映象。由於docker的官方Dockerfile檔案裡,jenkins的uid(使用者)為1000 即www使用者。所以我們要是Dockefile來建立的話,也要加上這一點,不然會報許可權錯誤。

起初我也是用Dockerfile來建立jenkins映象,因為jenkins需要用到jdk,git,maven。而git,jdk在我們pull映象的時候,他自動安裝了。但是maven沒有。起初我是想在容器裡安裝的。但是我們安裝容器後自動是jenkins使用者,沒有許可權,又不知道root密碼。所以只能放棄,用Dockerfile試試。但是Dkerfile也是很麻煩。在From centos 7的前提下,還要RUN wget ..下載安裝jdk什麼的,還要ENV配置環境變數。所以就換另外一種方法

由於我們需要maven,所以我們先在我們的伺服器上先下載好maven :

 wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz

由於linux一切皆檔案。所以我們解壓他就安裝好了:tar -xvf apache-maven-3.3.9-bin.tar.gz 

接下來是重要的一步。因為我們啟動jenkins容器了,之前說過。我們的jenkins容器需要uid為1000的使用者來執行。所以我們建立一個jenkins目錄,把他額屬性設為1000,然後再掛載到容器裡,這樣容器的屬性也就變成了我們所需要的1000了。

mkdir jenkins       chown -R 1000:1000 jenkins   

第一步:建立容器:docker run -d -p 8088:8080 -p 50000:50000 --name jenkins  --privileged=true -v $PWD/jenkins:/var/jenkins_home -v $PWD/apache-maven-3.3.9:/apache-maven-3.3.9 -e MAVEN_HOME=/apache-maven-3.3.9 -e PATH=/apache-maven-3.3.9/bin:${PATH}  jenkins

(後來不知道為什麼,這種方法不行了,所以還是用DockerfileZ)

--privileged=true:  在CentOS7中的安全模組selinux把許可權禁掉了,引數給容器加特權。至於selinux可以去看《鳥哥的私房菜》 這還是我們當初的課本,巨厚。。。用setenforce 0就可以把他暫時關閉。雖然他很強大,但是因為和很多服務都衝突了。所以很多人都選擇把他關掉。

$PWD:當前目錄下

-v:目錄

-e:設定環境變數

這樣我們的容器就建立成功了。

登入我們的ip地址:8088 。就可以看到jenkins的登入頁面了。初始密碼放在容器內的 /var/jenkins_home/secrets/initialAdminPassword裡。

第二步:登入成功後,我們下載一些外掛。系統管理-管理外掛  搜尋然後直接安裝 Git plugin , Maven Integration plugin ,SSH plugin

第三步:然後,系統管理-Global Tool Configuration 設定我們的JDK 和Maven (不同自動安裝,因為我們之前已經掛載進去容器裡了)。 兩個都隨便起個名字。path就填容器裡的路徑。如果不知道的話就whereis ...  查詢

第四步:接下來,系統管理-系統設定  找到 SSH remote hosts 配置好自己的資訊。在Credentials裡新增自己的使用者名稱和密碼。可以Check connection試下成不成功

第五步:終於到這一步了。那就是新建一個專案。 在新建那裡 選擇 構建一個maven專案

進去之後。 在原始碼管理裡選擇Git 填好url  如果是ssh的形式的話,就要在自己的容器裡 ssh-keygen -t rsa -C生成公鑰,再配置

接下來可以選擇構建觸發器。我選的是 poll SCM 定時更新 H/2* * * * 兩分鐘更新一次 也可以選在Build periodically 定時建立

其他不選。來到BuildGoals and options 裡填上clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true

因為我的mysql和redis都在自己的容器裡。所以需要跳過測試執行 

Post Steps 裡 選擇 Run only if build succeeds 

Add post-build step裡選 Execute shell script on remote host using ssh 。在我們的ssh裡填寫指令碼

docker stop test
docker rm test
docker rmi test
cd /usr/local/docker/jenkins/jenkins/workspace/test2
cp Dockerfile target/
cd target/
docker build -t test .

docker run -p 8090:8080 --name test --link mysql:mysql --link redis:redis -d test

這是我自己的指令碼。點選儲存就行了。

第六步:如果沒有設定定時的話。進去專案中 點選立即構建就可以看到我們在build了。有設定定時的話,當我們的程式碼push到git的master分支後,如果有改變的話,就會自動構建。

可以在裡面點選 Console Output檢視輸出

最後就可以在伺服器裡看到一個新的容器了。