目錄
二、持續集成 - CI(GitLab+Maven+Nexus)
前言
一、啓動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、插件安裝
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 + Git:
GitLab:
3.3 設置郵件通知(SMTP協議)
126郵箱相關服務器服務器信息如下,具體其他如QQ郵箱,foxmail等請諮詢相應客服。
二、持續集成 - CI(GitLab+Maven+Nexus)
持續集成是一種軟件開發實踐,即團隊開發成員經常集成他們的工作,通常每個成員每天至少集成一次,也就意味着每天可能會發生多次集成。每次集成都通過自動化的構建來驗證,從而儘早地發現集成錯誤。因此,整個持續集成應該包含三步:編譯、發佈、自動化測試。
1、先創建一個任務
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/中。
另外,當構建成功後,會收到系統發出來的類似以下的一封郵件。