jenkins與gitlab整合
上一篇文章,我們學習了有關jenkins外掛的安裝與配置,這篇文章我們再來介紹下jenkins與gitlab的整合。
PS:本篇文章還是以編譯、打包jenkins原始碼為例,進行jenkins的構建。
有關jenkins原始碼的編譯、打包,可以參考這篇文章《爛泥:jenkins原始碼編譯和打包》。
jenkins原始碼是java語言開發的,通過maven進行專案的管理。所以本篇文章中會牽涉到maven相關的配置。
如果你的程式碼是其他語言開發的話,比如php,nodejs等,是不需要maven的。
一、 基礎環境配置
在正式整合之前,需要我們在jenkins伺服器上進行相關的基礎環境配置。
安裝git、maven和jdk等基礎配置,可能會有童鞋問,jenkins不是有這幾個軟體相關的外掛嗎?
為什麼還需要在jenkins伺服器上安裝呢?
原因是這樣的,儘管jenkins本身是有以上軟體外掛的,但是實際上jenkins是通過這些外掛去jenkins伺服器上呼叫這些軟體,這也是jenkins外掛的大致工作原理。所以,我們必須在jenkins伺服器上安裝這些軟體。
1.1 安裝jdk
jdk這個是基礎環境必須的,在此我就直接給出相關的命令:
wget http://mirrors.linuxeye.com/jdk/jdk-7u80-linux-x64.tar.gz
tar -xf jdk-7u80-linux-x64.tar.gz -C /usr/local/
chown root:root -R /usr/local/jdk1.7.0_80/
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.7.0_80
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
java –version
1.2 安裝git
有關git的安裝與配置,可以參考這篇文章《爛泥:git伺服器搭建》。在此我們只需要安裝git即可,相關命令如下:
yum -y install git
1.3 安裝maven
有關maven的安裝與配置,可以參考這篇文章《爛泥:依賴管理maven3.3安裝與配置》。
相關命令如下:
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
tar -xf apache-maven-3.3.9-bin.tar.gz -C /usr/local/
cd /usr/local/
mv apache-maven-3.3.9 maven
vim /etc/profile
export M2_HOME=/usr/local/maven/
export PATH=$PATH:/usr/local/mysql/bin:$M2_HOME/bin
source /etc/profile
java –version
mvn -v
二、gitlab相關配置
既然是jenkins與gitlab整合,那麼我們現在來介紹下gitlab的相關配置,有關gitlab的安裝,我會在後續的文章中介紹。在此只介紹gitlab建立ilannigit倉庫,以及相關的配置。
2.1 建立gitlab倉庫
登入到gitlab管理頁面,並切換到相應的使用者下,然後建立ilannigit倉庫,在此我們是在devuser使用者下操作的,如下:
上圖中,我們建立ilannigit倉庫。
給gitlab中的ilanni使用者配置ilannigit訪問的許可權。
通過上圖,我們可以看到,ilanni使用者對ilannigit這個倉庫具有master許可權。
2.2 初始化ilannigit倉庫
ilannigit倉庫建立完畢後,現在倉庫裡面是空的,現在我們來把jenkins原始碼上傳到該倉庫中,即對ilannigit倉庫進行初始化。
ilannigit倉庫的初始化,我們是在Windows下使用TortoiseGit這個工具進行的。
下面的操作,主要是截圖,文字說明比較少,如下:
現在我們切換到gitlab上檢視ilannigit倉庫的相關資訊,如下:
通過上圖,我們可以很明顯的看出目前ilannigit倉庫已經初始化完成。
PS:以下所有的操作都是在jenkins的UI介面上完成的。
三、安裝與配置git和gitlab外掛
gitlab倉庫相關的配置完畢後,現在我們開始安裝jenkins幾個經常使用的到的外掛。
有關jenkins外掛的安裝,可以參考這篇文章《爛泥:jenkins外掛安裝與解除安裝》
先以git和gitlab外掛的安裝與配置為例。
3.1 安裝git和gitlab外掛
安裝git和git client plugin外掛如下:
系統管理→外掛管理→可選外掛
git外掛官方幫助文件:
https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin
git外掛官方最新幫助文件:
https://plugins.jenkins.io/git
git client plugin外掛官方幫助文件:
https://wiki.jenkins-ci.org/display/JENKINS/Git+Client+Plugin
git client plugin外掛官方最新幫助文件:
https://plugins.jenkins.io/git-client
安裝gitlab外掛如下:
gitlab外掛官方幫助文件:
https://wiki.jenkins-ci.org/display/JENKINS/GitLab+Plugin
gitlab外掛官方最新幫助文件:
https://plugins.jenkins.io/gitlab-plugin
3.2 配置git和gitlab外掛
git和gitlab外掛安裝完畢後,我們現在來配置下。
在配置之前,我們需要知道jenkins伺服器上git的所在路徑,如下:
通過上圖,我們可以很明顯的看出git所在的路徑是/usr/bin/git。
現在開始正式配置git,如下:
上圖中Path to Git executable中填入jenkins伺服器上git的路徑即可。
四、配置不同版本jdk
由於不同的專案會牽涉到使用不同的jdk版本,所以在此我們也會jenkins配置不同的jdk。
檢視jenkins伺服器上,已經安裝的jdk,如下:
配置不同jdk,如下:
系統管理→Global Configureation
到此配置不同版本jdk完畢。
五、安裝與配置push over ssh外掛
當我們把該專案編譯、打包完畢後,想進行後續的操作,比如把打包後的軟體包上傳到遠端伺服器,並在遠端伺服器上執行相關操作時,我們就可以通過push over ssh外掛來實現。
5.1 安裝push over ssh外掛
安裝push over ssh外掛,如下:
系統管理→外掛管理→可選外掛
push over ssh外掛官方幫助文件:
https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin
push over ssh外掛官方最新幫助文件:
https://plugins.jenkins.io/publish-over-ssh
5.2 配置push over ssh外掛
push over ssh外掛安裝完畢後,我們現在來對其進行配置。
配置push over ssh外掛,也就是配置我們需要遠端登入的伺服器。登入遠端伺服器,必須是通過ssh方式的,在此我們使用的是ssh的祕鑰方式。如下:
系統管理→系統配置
以上圖中,需要輸入遠端伺服器的IP地址、使用者名稱和該使用者的sshkey。
到此push over ssh外掛安裝與配置完畢。
六、安裝與配置maven外掛
push over ssh外掛安裝與配置完畢,現在我們來安裝maven相關的外掛。
6.1 安裝maven外掛
安裝maven外掛,如下:
系統管理→外掛管理→可選外掛
maven外掛官方幫助文件:
https://wiki.jenkins-ci.org/display/JENKINS/Maven+Project+Plugin
maven外掛官方最新幫助文件:
https://plugins.jenkins.io/maven-plugin
6.2 配置maven外掛
檢視jenkins伺服器上的maven安裝路徑,如下:
通過上圖我們可以很明顯的看出maven安裝到/usr/local/maven路徑下。
現在開始正式配置maven外掛,如下:
系統管理→Global Configureation
到此安裝與配置maven外掛完畢。
七、建立job
所有相關的外掛安裝與配置完畢後,我們現在在jenkins建立一個job,如下:
上圖中我們建立了一個ilannigit的jenkins任務,並且該專案是一個maven專案。
注意:如果沒有安裝maven外掛的話,在建立任務時,是看不到“構建一個maven專案”,這個選項的。
同時,如果你不是一個maven專案的話,建議選擇“構建一個自由風格的專案”。
當然你也可以建立一個其他型別的專案,這個我們在以後的文章會相繼介紹的。
通過上圖,我們可以看到目前ilannigit這個job已經建立完畢。
PS:以下所有配置都是在job任務中進行的。
八、配置ilannigit任務
ilannigit這個jenkins任務建立完畢後,我們現在來配置下。
8.1 選擇jdk版本
在該job中jenkins原始碼的編譯、打包,我們使用的是jdk1.7版本,如下:
8.2 配置gitlab倉庫
在前面的章節中,我們建立了ilannigit這個gitlab倉庫,現在我們複製該倉庫地址,到原始碼管理選項中,如下:
上圖中,我們可以看到目前jenkins是無法連線該gitlab倉庫的,需要我們填寫相關的認證資訊。
在此連線gitlab的認證我們是通過ilanni這個使用者,以及使用sshkey方式的。所以上面的資訊中,填寫的就是有關gitlab使用者ilanni和其對應的sshkey。
上圖就說明,jenkins已經可以連線ilannigit倉庫。
8.3 配置maven外掛
在job中maven外掛比較簡單,我們只需要把Gloals and options選項中填寫maven的相關命令即可,如下:
clean install -Dmaven.test.skip=true
8.4 配置 push over ssh外掛
在該job中,maven打包完畢後,我們把打包後的war包上傳到遠端伺服器使用push over ssh外掛,如下:
增加構建後操作步驟→Send build artifacts over SSH
上面這個截圖中,有幾個選項我們要講解下:
name是我們在第5.2章節中配置的push over ssh伺服器名稱,在此是ilannigit這臺伺服器。
Source files是jenkins下該job編譯、打包後的包名及其相對路徑,在此jenkins原始碼打包後是war/target/ilannijenkins.war。
Remove prefix是排除Source files中包名前的路徑,也就是說我們只把war包上傳到遠端伺服器。
Exec command是在遠端伺服器進行操作的相關linux命令或者shell指令碼。在此我們使用的是linux命令。如下:
ps -ef | grep tomcat7070| grep -v grep | awk ‘{print $2}’|xargs kill -9
find /data/ilannitomcat/tomcat7070/logs/ -mtime +3 -name “*.*” | xargs rm -f
rm -fr /data/ilannitomcat/tomcat7070/work/*
cp /data/ilannitomcat/tomcat7070/webapps/ilannijenkins.war /data/backup/`date +”%Y%m%d_%H%M%S”`_bossmanager.war
rm -fr /data/ilannitomcat/tomcat7070/webapps/*
cp /root/ilannijenkins.war /data/ilannitomcat/tomcat7070/webapps
export JAVA_HOME=/usr/local/jdk1.7.0_80/
/data/ilannitomcat/tomcat7070/bin/catalina.sh start
sleep 5
有關Exec command的執行這個我們會在以後的文章中,再進行詳細的介紹。
九、構建job
ilannigit這個jenkins任務配置完畢後,我們現在來進行構建,如下:
ilannigit→立即構建
在Console Output中可以看到jenkins構建的過程,如下:
開始從ilannigit倉庫下載原始碼,如下:
開始執行相關的maven命令,如下:
開始從maven的nexus私庫下載相關的依賴,如下:
maven開始進行編譯與打包,如下:
上圖中根據實際的情況會佔用很長時間,需要你耐心等待。
maven進行編譯、打包後,jenkins把war包上傳到遠端伺服器,並進行相關的操作,如下:
通過上圖,我們可以很明顯的看到,ilannijenkins.war已經上傳到遠端伺服器,並且也執行了相關的操作。
到此有關jenkins與gitlab整合就已經全部結束。
相關文章
- SonarQube整合gitlab/jenkinsGitlabJenkins
- 持續整合Jenkins+GitlabJenkinsGitlab
- Jenkins+GitLab+蒲公英_持續整合JenkinsGitlab
- jenkins+gitlab+nexus持續整合與部署學習JenkinsGitlab
- Jenkins與gitlab持續整合配置webhook報500錯誤JenkinsGitlabWebHook
- Docker 整合 Jenkins Gitlab 實現 CI/CDDockerJenkinsGitlab
- CICD | Jenkins & Gitlab整合:WebHook觸發構建JenkinsGitlabWebHook
- Docker+Gitlab+Jenkins+Maven程式碼持續整合與自動部署DockerGitlabJenkinsMaven
- gitlab+jenkins+maven+docker持續整合(一)——Jenkins安裝配置GitlabJenkinsMavenDocker
- gitlab和jenkins做持續整合構建教程GitlabJenkins
- 【Gerrit】Gerrit與Jenkins整合Jenkins
- jenkins+gitlab+docker持續整合部署maven專案JenkinsGitlabDockerMaven
- 利用Jenkins+Gitlab搭建持續整合(CI)環境JenkinsGitlab
- KubeSphere 與 Jenkins 的整合解析Jenkins
- Linux下配置Jenkins+gitlab持續整合構建流程LinuxJenkinsGitlab
- GitLab整合Jenkins、Harborn構建pipeline流水線任務GitlabJenkins
- Gitlab CI持續整合 - GitLab Runner 安裝與註冊Gitlab
- CI持續整合系統環境--Gitlab+Gerrit+Jenkins完整對接GitlabJenkins
- 開普勒雲平臺:如何配置gitlab與JenkinsGitlabJenkins
- GitLab CI持續整合-GitLab RunnerGitlab
- Jenkins與Docker的持續整合實踐JenkinsDocker
- 簡易的微服務持續整合方案,SpringBoot+Docker+Jenkins+Gitlab微服務Spring BootDockerJenkinsGitlab
- .net持續整合sonarqube篇之 sonarqube與jenkins整合(命令模式)Jenkins模式
- GitLab -IDEA整合gitlab(提交專案到gitlab)GitlabIdea
- [原創]CI持續整合系統環境--Gitlab+Gerrit+Jenkins完整對接GitlabJenkins
- .net持續整合sonarqube篇之 sonarqube與jenkins整合(外掛模式)Jenkins模式
- Jenkins in Action :GitLab 部署 Maven 專案JenkinsGitlabMaven
- Jenkins持續整合Jenkins
- GitLab CI持續整合 - .gitlab-ci.ymlGitlab
- 在滴滴雲 DC2 伺服器上搭建 Gitlab+Jenkins 的整合環境伺服器GitlabJenkins
- GitLab + Jenkins + ACK 自動化部署方案GitlabJenkins
- Jenkins持久化整合使用Jenkins持久化
- Jenkins持續整合配置Jenkins
- Jenkins教程:使用Jenkins進行持續整合Jenkins
- jenkins與gradle與sonar整合自動化打包程式碼檢測JenkinsGradle
- 基於Jenkins + Gitlab + 蒲公英(附上shell指令碼)JenkinsGitlab指令碼
- Gitlab-ci 替代 webhook 觸發Jenkins jobGitlabWebHookJenkins
- Jenkins+GitLab+SonnarQube搭建CI/CD全流程JenkinsGitlab