在AWS EC2上搭建jenkins並且整合git+maven+docker自動化部署環境(三)

      前面幾小節我們成功在AWS EC2上部署安裝好了jenkins,這小節就來說下jenkins的一些基本配置以及如何與我們的git,maven還有docker一塊串聯起來構建我們的一鍵部署自動化構建的環境。

jenkins初始化配置

在前兩節的基礎之上,我們可以通過我們的瀏覽器去訪問我們的jenkins,訪問路徑一般是http://ip:8080,如果你安裝jenkins的時候這些都沒修改的話,默認地址就是這個。

首次打開會讓你輸入驗證碼,可以從頁面提示的路徑中獲取,輸入密碼,這個密碼是一圖中第二處劃紅線的的內容,也可以在 /root/.jenkins/secrets 目錄下的initialAdminPassword獲取,可以使用

cat /root/.jenkins/secrets/initialAdminPassword

填入後進入 Jenkins,Jenkins 會下載必要的插件(此過程可能會很長),然後讓你設置一個賬戶和密碼,設置完成後 Jenkins 會初始化一些配置相關信息(此過程可能會很長),一段時間後
刷新下,會出現登錄頁面,到此 Jenkins 安裝完成。 Jenkins 登錄頁面:

輸入用戶名和密碼進入如下頁面:

配置Jenkins插件

jenkins擁有各種各樣的插件,我們可以在插件管理裏面下載安裝自己所需要的插件,這裏我們選擇默認的方式,如果有需要安裝的插件可以在控制檯的系統管理中的插件管理中去安裝。

2、 配置全局工具:
(1) 配置 JDK

(2) 配置 Git

(3)配置 MAVEN

3、 安裝可選插件

(1) 安裝 Maven Integration plugin 或者 Pipeline Maven Integration 插件, 理論上這兩個插件一樣,此次安裝的是第一種, 也可以不安裝此插件,不安裝此插件可以在創建任務時選擇 Freestyle project, 選擇了 Freestyle project,那麼構建Java 項目時要用腳本,調用 mvn 命令打包, 因爲 Java 項目現在基本都是 Maven項目所以安裝此插件。
選擇可選插件,過濾 Maven, 然後找到插件,勾選插件, 點擊直接安裝
 

(2)安裝 Publish Over SSH 插件, 此插件可以把構建好的項目包發送到其他服務器上,本次就是把構建好的項目包發送到 Docker 服務器上, 安裝步驟類似上一個,不再贅述。
4、 系統配置:
 

(1)這裏可以修改下,修改成自己的 Jenkins 訪問路徑

(2)可以配置一下 Github 服務器

配置 Github 服務器不是重點,重點關注 “覆蓋 Hook URL”, 以此方式與 Github結合, 可以做到代碼提交就自行激活 Jenkins 進行構建。

GitHub中的結合:

(3)配置 Publish over SSH

Passphrase:登錄另一臺服務器的密碼, SSH 的密碼
Path to key: SSH 私鑰的文件路徑,私鑰文件的路徑,可以是絕對路徑,也可以是相對$JENKINS_HOME 的相對路徑
Key:私鑰私鑰導出後的文本內容
如果“Key”和“Path to key”都設置, 則“Key”的優先級較高
Disable exec:禁止在目標機上執行命令
SSH Server 配置:
指定遠程服務器的 ip,存放目錄。可以配置多個 ssh server , jenkins 自動將打包成果發送到多個遠程服務器
內部參數說明
Name:SSH 節點配置的名稱, 在 Job 中使用 Publish over SSH 插件時, 此名稱將出現在“SSH Server”中“Name”的下拉列表中
Hostname:通過 SSH 連接到的機器的主機名或 IP
Username:SSH 服務使用的用戶名,使用 key 進行連接時爲 key 指定的用戶名
Remote Derictory:運程機器上真實存在的目錄, 並且“Username”指定的用戶要有訪問此目錄的權限,插件將把文件傳送到此目錄下。
配置完成後, 可以 通過 “Test Configuration” 測試是否配置正確。
以上配置中: Key 本次沒有填寫也成功了,但是最好還是設置一個,通過做 SSH互信導出這個私鑰。
至此配置結束

Jenkins 關聯 Github,打包測試

1、創建構建任務

2、完成配置填寫:
(1)填寫 Github 項目地址,項目 URL 是在 Github 上覆制來的

(2)配置源碼管理

(3)配置構建觸發器,根據需要配置, 本次沒配置

build whenever a snapshot dependency is built:當job依賴的快照版本被build時,執行本job。

build after other projects are built:當本job依賴的job被build時,執行本job

build periodically:隔一段時間build一次,不管版本庫代碼是否發生變化。可以如下進行配置:0 2 * * *  (每天2:00 必須build                                   一次源碼)

poll scm:隔一段時間比較一次源代碼如果發生變更,那麼就build。否則,不進行build

 

(4)配置構建環境,根據需要配置, 本次沒配置

(5)選擇構建項目前操作選項,有執行腳本等操作(把構建好的項目放到別處也可以在此利用腳本完成)

(6)配置構建操作,配置構建 pom.xml 和能用到的全局參數和命令

Goals and options 填寫 clean package -Dmaven.test.skip=true,跳過構建項目的(測試階段)
(7) 配置構建項目後操作,有執行腳本等操作,根據需求選擇單選按鈕


(8)構建設置,可以配置 Email

這裏可以設置你每次構建後需不需要發送郵件提醒

(9)配置構建後操作,在這裏配置 SSH 操作

參數說明
Name:下拉選擇一個 系統設置已配置的名字。
Transfer Set Source files:需要上傳的文件(注意:相對於工作空間根目錄。
工作區根目錄配置:系統管理->系統設置->主目錄->高級->工作空間根目錄看後面的配置可以填寫多個,默認用,分隔,)
target/test-0.0.1-SNAPSHOT.jar
Remove prefix:
Source files”配置的路徑中要移除的前綴,即: target
Remote directory:遠程目錄, 此目錄是相對於“SSH Server”中的“Remote directory”的, 如果不存在將會自動創建。
Exec command:通過 ssh 連接遠程服務器後,在遠程服務器上執行的腳本。
(10) 配置完成後保存和應用


以上步驟都配置完之後就可以開始構建了,是不是挺激動的,下圖是小編自己構建的歷史記錄,都有列表記錄展示出來

我們點進去看下其中一個記錄,我們就選擇#6這個構建歷史,查看下構建的歷史日誌,都一目瞭然:

我們選中一下控制檯輸出,看下具體日誌:

Jenkins 關聯 Docker 容器發佈項目

1、 在配置 Jenkins 任務時,最後一步是 SSH 操作,上次構建沒有加入這步,本次加入這步。 配置好必要的配置(請參考 Jenkins 任務配置),最重要的是配置好 Exec
command 中 docker 服務器上的腳本。本次的腳步: startup_jar.sh,內容如下:

#!/bin/sh
image_name=springboottest
container_name=mytest
container_id=`docker ps -a | grep $container_name | awk '{print $1}'`
echo $container_id
for id in $container_id
do
docker kill $id
echo "killed container $id"
docker rm "$container_name"
echo "remove container $container_name"
done
image_id=`docker images -a | grep $image_name | awk '{print $3}'`
echo $image_id
for id in $image_id
do
docker rmi $id
echo "remove image $id"
done
docker build -t $image_name /usr/local/src/docker_sl/
docker run --name $container_name -p 8088:8088 -d $image_name

這裏還需要一個Dockerfile文件去構建你項目的鏡像,這裏寫的比較簡單,你可以根據你項目打包的業務需求進行編寫,我的Dockerfile文件內容如下:(想要比較詳細地瞭解Dockerfile的命令,可以參考這篇博客:https://www.cnblogs.com/dazhoushuoceshi/p/7066041.html)

From java:8-alpine
ADD springboot-demo-0.0.1-SNAPSHOT.jar test.jar
EXPOSE 8088
ENTRYPOINT ["java","-jar","/test.jar"]

2、 配置好後重新構建
構建成功
3、我們訪問下瀏覽器,驗證下我們的構件是否真的有效果了

 注意事項、 遇到的問題和遺留事情

1、 防火牆一定要關徹底,關閉服務並禁止開機啓動,禁止內核防火牆,如果你是專業人士此條忽略。
2、 如果虛擬機啓動後網絡有錯誤,請按照文章中所寫進行設置,還是不行就重複設置,肯定會成功,如果是動態 IP,那麼動態 IP 可能會發生變化。
3、 時間同步可以選做,建議還是做一下
4、 Jenkins 獲取插件錯誤,不要擔心,一般都是因爲網絡的問題,重試幾次就可以,是在不行就重裝,或者用安裝版
5、 Jenkins 配置任務配置,在配置 git 時錯誤: Unable to find remote helper for 'https,去查看 gitcore, git 目錄下 libexec/git-core/,如果缺少 git-remote-http, gitremote-https,說明安裝的不正確,缺少必要的支持包,請重新安裝。
6、 Docker 錯誤: WARNING: IPv4 forwarding is disabled. Networking will notwork. 需要重啓 docker
7、 技術上很多的一些其他的內容還要研究

以上就是小編完整構建的過程,有不到之處還望多多指正,按照小編的步驟一步一步操作,基本沒什麼問題,後續可能還會補充一些自動化構建項目的一些比較細節的地方,比如對每一步構建配置每項內容的具體介紹等等,或許以上寫的有點囉嗦,請不要介意,後面繼續改進!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章