Jenkins持續集成流水線(上)

目錄

前言

一、啓動Jenkins

1、前置條件

2、插件安裝

3、配置 

二、持續集成 - CI(GitLab+Maven+Nexus)

1、先創建一個任務

 2、配置憑據

3、繼續配置剩餘配置項

4、構建任務

5、自動觸發構建(CI)

三、集成自動化部署(Linux)

1、配置SSH

2、配置構建任務

3、構建任務


前言

 

一、啓動Jenkins

1、前置條件

Wins10上已經通過Jenkins.msi預安裝了Jenkins,同時如果要啓動Jenkins有以下兩種方法:

第一種:在Jenkins安裝目錄下執行這條命令,該模式以後臺服務的方式啓動Jenkins。該辦法好處是在於每次可以指定不同http端口(特別針對缺省8080被佔用),不好的地方是每次重啓都要在命令中顯式指定端口。

java -jar jenkins.war --ajp13Port=-1 --httpPort=8082

第二種:在Jenkins安裝目錄下把Jenkins.xml文件的屬性httpPort改爲其他未被佔用的端口,並必須使用以下命令啓動Jenkins。此時如果直接使用命令java -jar jenkins.war,你會發現啓動的jenkins服務還是用的默認端口8080。

#啓動jenkins服務
net start jenkins

2、插件安裝

第一步:初始登錄,需要從/secrets/initialAdminPassword中獲取初始密碼
第二步:進入安裝插件界面
第三步:基本插件正在安裝

 

部分失敗,但是後面可以重新下載
創建第一個用戶

2.2 如果在安裝期間部分插件安裝失敗,可以通過兩種辦法重新安裝。

第一種:可以通過更改源,然後重新安裝。

http://updates.jenkins-ci.org/update-center.json

替換爲清華的鏡像源

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

第二種:在網上下載Deploy Plugin插件,下載文件爲deploy.hpi

 

3、配置 

3.1 爲了實現自動化構建,首先安裝以下插件:

- Deploy to container(自動化部署插件)

- Maven Integration(Maven集成插件)

- Publish Over SSH(SSH遠程連接插件)

- GitLab(該插件允許Gitlab觸發Jenkins構建並把構建結果展示在Gitlab UI上)

- Gitlab Hook(該插件能夠使用web hook去觸發在gitlab項目上進行SCM polling)

- Gitlab Authentication(Gitlab的權限校驗插件)

3.2 在全局工具配置中設置Maven、JDK、git、GitLab

Maven + JDK:

maven setting + JDK

Maven + Git:

maven home
git run path setup

GitLab:

配置GitLab
在GitLab中的【User Setting】中生成access token
添加access token
配置完後,測試連通性是否正常

 

3.3 設置郵件通知(SMTP協議)

126郵箱相關服務器服務器信息如下,具體其他如QQ郵箱,foxmail等請諮詢相應客服。

126免費郵客戶端設置POP3和SMTP地址

第一步
第二步
第三步

二、持續集成 - CI(GitLab+Maven+Nexus)

持續集成是一種軟件開發實踐,即團隊開發成員經常集成他們的工作,通常每個成員每天至少集成一次,也就意味着每天可能會發生多次集成。每次集成都通過自動化的構建來驗證,從而儘早地發現集成錯誤。因此,整個持續集成應該包含三步:編譯、發佈、自動化測試。

1、先創建一個任務

創建Job
設置通用項
標題

 2、配置憑據

首先,在git bash中找到對應的公鑰和私鑰。

justyman@DESKTOP-7GNOQPJ MINGW64 ~/IdeaProjects/callcenter (master)
$ git config user.name
root

justyman@DESKTOP-7GNOQPJ MINGW64 ~/IdeaProjects/callcenter (master)
$ git config user.email
[email protected]

justyman@DESKTOP-7GNOQPJ MINGW64 ~
$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1ycsffweAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASSBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBvFUlscXERQK4hhHH9YcAxgr6c8rDrhCdiXJZwsmME/aPF5qTOF09YiIvozFlFGNpFm1cIO7wdgCnlZNEj5MdLx2aboiz7FZDafYb3KtNTPS0zI8GwwFVrO6nLMI6uYIyEKNlACv/3yWpZ7XRlJv0+SgIQbXzJyp/FTViilu71JRUqaJ [email protected]

justyman@DESKTOP-7GNOQPJ MINGW64 ~
$ cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA0qWxiOW0t+KFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
sssssssssssssssssssssssssssssssssssssssssssssssssssssswQ==
-----END RSA PRIVATE KEY-----

 接着,把公鑰保存到GitLab的SSH Keys中。

標題

然後,把私鑰保存到Jenkins的憑據中,類型選擇“SSH Username with private key”,Username 填寫git bash設置的用戶名。

標題

 

標題

3、繼續配置剩餘配置項

當成功添加完憑據後,在【Source Code Management】項中就可以選擇剛纔的憑據。

另外,針對下圖的【Version】,可以通過以下命令查詢,即得到版本號爲11.7.6,但是只需要填兩位,即11.7。

[root@localhost ~]# rpm -qa|grep gitlab
gitlab-ce-11.7.6-ce.0.el7.x86_64

4、構建任務

從上圖可以看到,構建任務執行成功並生成對應的jar包到Jenkins的工作空間D:\Tools\Jenkins\workspace下面。如果是需要構建成功後把包上傳到Nexus進行製品管理的話,請參考我的另外一篇文章:Nexus製品庫安裝使用指南

如果需要實現參數化構建(如基於Tag進行構建),請參考我的另外一篇文章:Jenkins任務基於Tag進行構建

5、自動觸發構建(CI)

該部分我會單獨另外一篇文章專門介紹【這裏留個隨意門】。

三、集成自動化部署(Linux)

整個相對完整的持續構建環境(即CI)基本搭建完後,後續就要搭建持續部署。這裏的目的是把上面構建的包自動上傳到目的服務器進行部署。

1、配置SSH

前提: 已經安裝了【publish over ssh】插件

第一步:把Jenkins服務器的公鑰保存到目標服務器的目標登錄用戶的.ssh/authorized_keys文件中;(具體在linux中如何生成RSA 公私鑰這裏不再詳述)

第二步:把Jenkins服務器的私鑰保存到以下地方,並同時配置目標服務器IP、登錄用戶即目標文件夾。

2、配置構建任務

在上面配置過的構建任務中配置構建步驟。

第一步:在【Pre Steps】選擇maven及設置對應的Goals爲‘clean package’

第二步:在【Post-build Actions】中選擇‘Send build artifacts over SSH’ 

第三步:配置以下信息:

 Name:選擇剛纔新配置的服務器- SIT_Server;

Source files:指定要上傳的文件,這裏指定裏以jar結尾的包。其中**/指的是Jenkins的工作目錄(本機Jenkins的工作目錄爲D:\Tools\Jenkins\workspace)

Remove prefix:指去掉source files處填寫的jar包所在的工作Jenkins目錄之後(即D:\Tools\Jenkins\workspace)和*.jar包之前的那幾層文件夾(即target文件夾)。否則,到時傳到SIT服務器上的文件爲帶target文件夾的*.jar包。

3、構建任務

 從下圖構建日誌可以看到,對應構建完的callcenter-1.0.0.jar都被上傳到SIT服務器上的對應目錄/tmp/onboard/中。

另外,當構建成功後,會收到系統發出來的類似以下的一封郵件。

 

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