在軟件開發(fā)中,持續(xù)集成是確保高效協(xié)作和可靠交付的核心實(shí)踐。以下是在CentOS上安裝配置Jenkins與GitLab集成的詳細(xì)步驟:
1.安裝JDK
解壓JDK安裝包并設(shè)置環(huán)境變量:
JDK下載網(wǎng)址 Java Downloads | Oracle 臺(tái)灣
tar zxvf jdk-11.0.5_linux-x64_bin.tar.gz -C /usr/local/ vim /etc/profile # 添加以下內(nèi)容 export JAVA_HOME=/usr/local/jdk-11.0.5 export CLASSPATH=.:${JAVA_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH source /etc/profile java -version
2.安裝Jenkins:
添加Jenkins倉(cāng)庫(kù),安裝Jenkins并修改運(yùn)行用戶和監(jiān)聽端口:
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key yum install epel-release -y yum install jenkins -y vim /etc/sysconfig/jenkins # 修改以下內(nèi)容 JENKINS_USER="root" JENKINS_PORT="8888" vim /usr/lib/systemd/system/jenkins.service # 添加以下內(nèi)容 User=root Group=root Environment="JAVA_HOME=/usr/local/jdk-11.0.5" Environment="JENKINS_PORT=8888"
3.配置Jenkins啟動(dòng)腳本:
更新Jenkins啟動(dòng)腳本以添加Java路徑:
vim /etc/init.d/jenkins # 在 candidates 中添加 /usr/local/jdk-11.0.5/bin/java systemctl daemon-reload systemctl start jenkins systemctl enable jenkins
老版本的jenkins(jdk1.8及之前可以service jenkins start):
但之后版本使用啟動(dòng)命令則會(huì)報(bào)錯(cuò):
新版本的jenkins(jdk大于等于11):
cd /etc/init.d
./jenkins start
此時(shí)執(zhí)行啟動(dòng)jenkins命令,還是顯示啟動(dòng)失敗,jdk還是引用的1.8,默認(rèn)的加載usr/lib/jvm下的jdk
?此時(shí)我們需要在usr/lib/jvm下安裝對(duì)應(yīng)的jkd11
yum install java-11-openjdk* -y
安裝完成后需要改變下jdk的選中版本
alternatives --config java
?選擇對(duì)應(yīng)支持的版本即可:
??此時(shí)再啟動(dòng)jenkins成功?。?!
- 查看是否開啟防火墻
- 打開防火墻
- 查看開放的端口
-
firewall-cmd --list-ports
?如果沒(méi)有則加入:
firewall-cmd --permanent --zone=public --add-port=8888/tcp
?搭建完畢:
?直接cat 他提供的地址得到密碼,然后進(jìn)入后安裝推薦即可
4.配置鏡像源和插件:
修改Jenkins更新源,更新插件列表并安裝所需插件(例如中文本地化、Git等):
vim /var/lib/jenkins/hudson.model.UpdateCenter.xml # 將<url>內(nèi)容替換為國(guó)內(nèi)源 sed -i 's#https://www.google.com#https://www.baidu.com#' /var/lib/jenkins/updates/default.json systemctl restart jenkins
?5.開始集成:
在瀏覽器中訪問(wèn)Jenkins
(http://服務(wù)器IP:8888),創(chuàng)建管理員賬戶。然后,添加GitLab憑據(jù)和創(chuàng)建項(xiàng)目:
- 點(diǎn)擊用戶名 -> 憑據(jù) -> Jenkins全局 -> 添加憑據(jù),輸入GitLab用戶名密碼。
- 創(chuàng)建FreeStyle項(xiàng)目,配置Git源碼管理,選擇Git倉(cāng)庫(kù)URL和憑據(jù)。
創(chuàng)建第一個(gè)管理員用戶,如 zhangsan/zhangsan@123
Manage Jenkins -> Manage Plugins -> 點(diǎn)擊 Availale -> 安裝以下幾個(gè)插件
Localization: Chinese
Git
重啟Jenkins:直接在URL后加上/restart? 回車即可
點(diǎn)擊用戶名下拉選擇憑據(jù) -> Jenkins 全局 -> 添加憑據(jù)
類型選擇 "Username with password" ,輸入 Gitlab 的用戶名和密碼(zhangsan/zhangsan@123),描述輸入 gitlab-auth-password?
點(diǎn)擊 "確定"。
創(chuàng)建一個(gè)FreeStyle項(xiàng)目:新建Item -> 任務(wù)名稱(test01) FreeStyle Project -> 確定
源碼管理:選擇 Git,Repository URL:http://192.168.80.10:82/devops_group/web_demo.git(可從 Gitlab 使用 HTTP 克?。?br> Credentials 下拉選擇 gitlab-auth-password,點(diǎn)擊 保存。
點(diǎn)擊 Bulid Now 開始構(gòu)建,查看控制臺(tái)輸出可以看到構(gòu)建成功,構(gòu)建后的包會(huì)生成在服務(wù)器的 /var/lib/jenkins/workspace/test01 目錄中。
//Jenkins 構(gòu)建 Maven 項(xiàng)目
Maven 是一個(gè)主要用于 Java 項(xiàng)目的自動(dòng)化構(gòu)建工具。Maven 還可以用來(lái)構(gòu)建和管理用 C#、Ruby、Scala 和其他語(yǔ)言開發(fā)的項(xiàng)目。
#在 Jenkins 服務(wù)器上安裝 Maven 來(lái)編譯和打包項(xiàng)目
cd /opt
tar -zxvf apache-maven-3.6.2-bin.tar.gz
mv apache-maven-3.6.2 /usr/local/maven
vim /etc/profile
......
export MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:${JAVA_HOME}/bin:$PATH
source /etc/profile
mvn -v
#Jenkins 關(guān)聯(lián) JDK 和 Maven
tar xf jdk-8u171-linux-x64.tar.gz -C /usr/local/
Manage Jenkins -> Global Tool Configuration (全局工具配置)
-> JDK
點(diǎn)擊 新增JDK,別名輸入 jdk11,取消勾選 Install automatically,JAVA_HOME輸入 /usr/local/jdk-11.0.5
點(diǎn)擊 新增JDK,別名輸入 jdk1.8,取消勾選 Install automatically,JAVA_HOME輸入 /usr/local/jdk1.8.0_171
-> Maven
點(diǎn)擊 新增Maven,Name輸入 maven3,取消勾選 Install automatically,MAVEN_HOME駛?cè)?/usr/local/maven
點(diǎn)擊 "應(yīng)用"和"保存"。
#添加 Jenkins 全局變量,讓 Jenkins 能夠識(shí)別 JDK 和 Maven 環(huán)境的命令
Manage Jenkins -> Configure System -> 全局屬性,勾選 Environment variables
鍵值對(duì)列表添加:鍵 JAVA_HOME ,值 /usr/local/jdk-11.0.5
?? ??? ??? ??? ?鍵 M2_HOME ,值 /usr/local/maven
?? ??? ??? ??? ?鍵 PATH+EXTRA ,值 $M2_HOME/bin
#修改 Maven 的 settings.xml
mkdir /root/repo?? ??? ?#創(chuàng)建本地倉(cāng)庫(kù)目錄
vim /usr/local/maven/conf/settings.xml
54 -->?? ??? ?#本地倉(cāng)庫(kù)改為 /root/repo/
? ?<localRepository>/root/repo</localRepository>
153 -->?? ??? ?#添加阿里云私服地址
? ? <mirror>
? ? ? <id>alimaven</id>
? ? ? <mirrorOf>central</mirrorOf>
? ? ? <name>aliyun maven</name>
? ? ? <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
? ? </mirror>
? </mirrors>
#測(cè)試 Maven 是否配置成功
點(diǎn)擊項(xiàng)目 test01 -> 設(shè)置 -> 構(gòu)建 -> 增加構(gòu)建步驟 -> Execute Shell
輸入 mvn clean package?? ??? ?#清空原有的構(gòu)建元素(插件、依賴包等target文件),再進(jìn)行打包
點(diǎn)擊 保存
再次構(gòu)建,如果可以把項(xiàng)目打成 war 包,代表 maven 環(huán)境配置成功。
ERROR!!!
如果出現(xiàn)錯(cuò)誤報(bào)錯(cuò):
那么就去構(gòu)建配置中修改 Shell語(yǔ)句,修改為絕對(duì)路徑: /usr/local/maven/bin/mvn clean package 即可!
//Tomcat 安裝和配置
#安裝 Tomcat8.5
tar zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_171
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
source /etc/profile
tar zxvf apache-tomcat-9.0.16.tar.gz
mv /opt/apache-tomcat-9.0.16/ /usr/local/tomcat
/usr/local/tomcat/bin/startup.sh
//配置 Tomcat 用戶角色權(quán)限
默認(rèn)情況下 Tomcat 是沒(méi)有配置用戶角色權(quán)限的
驗(yàn)證方法:可瀏覽器訪問(wèn) http://192.168.80.12:8080 ,點(diǎn)擊 Managing Tomcat 下的 manager webapp ,發(fā)現(xiàn)返回 403 頁(yè)面。
但是后續(xù) Jenkins 部署項(xiàng)目到 Tomcat 服務(wù)器,需要用到 Tomcat 的用戶進(jìn)行遠(yuǎn)程部署,所以修改 tomcat 以下配置,添加用戶及權(quán)限
vim /usr/local/tomcat/conf/tomcat-users.xml
43 --> ? ?#添加 tomcat 用戶角色權(quán)限,指定用戶和密碼都是 tomcat ,并授予權(quán)限
? ?<role rolename="tomcat"/>
? ?<role rolename="role1"/>
? ?<role rolename="manager-script"/>
? ?<role rolename="manager-gui"/>
? ?<role rolename="manager-status"/>
? ?<role rolename="admin-gui"/>
? ?<role rolename="admin-script"/>
? ?<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>
</tomcat-users>
vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
<!-- ? ? #注釋掉 Valve 配置
? <Valve className="org.apache.catalina.valves.RemoteAddrValve"
? ? ? ? ?allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
再次訪問(wèn):http://192.168.80.12:8080/manager/html ,輸入賬號(hào)/密碼 tomcat/tomcat,即可成功登錄
//Jenkins 構(gòu)建 Maven 項(xiàng)目
//自由風(fēng)格項(xiàng)目構(gòu)建
項(xiàng)目的集成過(guò)程:拉取代碼 -> 編譯 -> 打包 -> 部署
#拉取代碼
新建item -> 任務(wù)名稱(web_demo_freestyle) FreeStyle Project -> 確定
源碼管理:選擇 Git,Repository URL:git@192.168.80.10:devops_group/web_demo.git
Credentials 下拉選擇 gitlab-auth-ssh,點(diǎn)擊 保存
點(diǎn)擊 Build Now,嘗試構(gòu)建項(xiàng)目
#編譯打包
配置 —> 構(gòu)建 -> 添加構(gòu)建步驟 -> Execute Shell,輸入以下命令
echo "開始編譯和打包"
mvn clean package
echo "編譯和打包結(jié)束"
點(diǎn)擊 Build Now,嘗試構(gòu)建項(xiàng)目
#把項(xiàng)目部署到遠(yuǎn)程的 Tomcat 里面
1)安裝 Deploy to container 插件
Jenkins 本身無(wú)法實(shí)現(xiàn)遠(yuǎn)程部署到 Tomcat 的功能,需要安裝 Deploy to container 插件實(shí)現(xiàn):
Manage Jenkins -> 管理插件-可選插件 -> 搜索 Deploy to container 插件選中直接安裝即可
2)添加構(gòu)建后操作
配置 —> 構(gòu)建后操作 -> 增加構(gòu)建后操作步驟 -> Deploy war/ear to a container
WAR/EAR files 輸入 target/*.war
Containers —> Add Container —> Tomcat 9.x Remote -> Credentials,點(diǎn)擊添加 -> Jenkins
用戶名 輸入 tomcat,密碼 輸入 tomcat,描述 輸入 tomcat-auth,點(diǎn)擊添加
Credentials 下拉選擇 tomcat-auth
Tomcat URL 輸入 http://192.168.80.12:8080
點(diǎn)擊保存
點(diǎn)擊 Build Now,嘗試構(gòu)建項(xiàng)目
3)部署成功后,刷新 http://192.168.80.12:8080/manager/html 頁(yè)面,可以發(fā)現(xiàn)應(yīng)用程序中多出一個(gè)項(xiàng)目,點(diǎn)擊新項(xiàng)目進(jìn)去訪問(wèn)?
//Pipeline 流水線項(xiàng)目構(gòu)建
Pipeline 腳本是由 Groovy 語(yǔ)言實(shí)現(xiàn)的,但是我們沒(méi)必要單獨(dú)去學(xué)習(xí) Groovy
Pipeline 支持兩種語(yǔ)法:Declarative(聲明式)和 Scripted Pipeline(腳本式)語(yǔ)法
#安裝 Pipeline 插件(推薦的插件已默認(rèn)安裝)
Manage Jenkins -> Manage Plugins -> 可選插件 –> 安裝 Pipeline 和 Pipeline Stage View
#Pipeline 語(yǔ)法快速入門
1)Scripted 腳本式 Pipeline?
新建item -> 任務(wù)名稱(web_demo_pipeline) Pipeline -> 確定
流水線 -> 定義 選擇 Pipeline script -> 選擇 Scripted Pipeline?
生成內(nèi)容如下:
node {
? ? def mvnHome
? ? stage('Preparation') { // for display purposes
? ? ? ? // Get some code from a GitHub repository
? ? ? ? git 'https://github.com/jglick/simple-maven-project-with-tests.git'
? ? ? ? // Get the Maven tool.
? ? ? ? // ** NOTE: This 'M3' Maven tool must be configured
? ? ? ? // ** ? ? ? in the global configuration.
? ? ? ? mvnHome = tool 'M3'
? ? }
? ? stage('Build') {
? ? ? ? // Run the maven build
? ? ? ? withEnv(["MVN_HOME=$mvnHome"]) {
? ? ? ? ? ? if (isUnix()) {
? ? ? ? ? ? ? ? sh '"$MVN_HOME/bin/mvn" -Dmaven.test.failure.ignore clean package'
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? bat(/"%MVN_HOME%\bin\mvn" -Dmaven.test.failure.ignore clean package/)
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? stage('Results') {
? ? ? ? junit '**/target/surefire-reports/TEST-*.xml'
? ? ? ? archiveArtifacts 'target/*.jar'
? ? }
}
●Node:節(jié)點(diǎn),一個(gè) Node 代表一個(gè) Jenkins 節(jié)點(diǎn),Master 或者 Agent 節(jié)點(diǎn),是執(zhí)行 Step 的具體運(yùn)行環(huán)境,后續(xù)講到 Jenkins 的 Master-Slave 架構(gòu)的時(shí)候用到。
●Stage:階段,一個(gè) Pipeline 可以劃分為若干個(gè) Stage,每個(gè) Stage 代表一組操作,比如:Build、Test、Deploy,Stage 是一個(gè)邏輯分組的概念。
●Step:步驟,Step 是最基本的操作單元,可以是打印一句話,也可以是構(gòu)建一個(gè) Docker 鏡像,由各類 Jenkins 插件提供, 比如命令:sh 'make',就相當(dāng)于我們平時(shí) shell 終端中執(zhí)行 make 命令一樣。
編寫一個(gè)簡(jiǎn)單的腳本式 Pipeline:
node {
? ? def mvnHome
? ? stage('拉取代碼') {
? ? ? ? echo '拉取代碼'
? ? }?
?? ?stage('編譯構(gòu)建') {
? ? ? ? echo '編譯構(gòu)建'
? ? }?
?? ?stage('項(xiàng)目部署') {
? ? ?? ?echo '項(xiàng)目部署'
?? ?}
}
2)Declarative 聲明式 Pipeline
流水線 -> 選擇 HelloWorld 模板
生成內(nèi)容如下:
pipeline {
? ? agent any
? ? stages { ? ? ? ? ? ? ?#stages:代表整個(gè)流水線的所有執(zhí)行階段。通常stages只有1個(gè),里面包含多個(gè)stage
? ? ? ? stage('Hello') { ?#stage:代表流水線中的某個(gè)階段,可能出現(xiàn)n個(gè)。一般分為拉取代碼,編譯構(gòu)建,部署等階段
? ? ? ? ? ? steps { ? ? ? #steps:代表一個(gè)階段內(nèi)需要執(zhí)行的邏輯。steps里面是shell腳本,git拉取代碼,ssh遠(yuǎn)程發(fā)布等任意內(nèi)容
? ? ? ? ? ? ? ? echo 'Hello World'
? ? ? ? ? ? }
? ? ? ? }
?? ?}
}
編寫一個(gè)簡(jiǎn)單聲明式Pipeline:
pipeline {
? ?agent any
? ?stages {
? ? ? ?stage('拉取代碼') {
? ? ? ? ? ?steps {
? ? ? ? ? ? ? ?echo '拉取代碼'
? ? ? ? ? ?}
? ? ? ?}?
? ? ? ?stage('編譯構(gòu)建') {
? ? ? ? ? ?steps {
? ? ? ? ? ? ? ?echo '編譯構(gòu)建'
? ? ? ? ? ?}
? ? ? ?}?
? ? ? ?stage('項(xiàng)目部署') {
? ? ? ? ? ?steps {
? ? ? ? ? ? ? ?echo '項(xiàng)目部署'
? ? ? ? ? ?}
? ? ? ?}
? ?}
}
點(diǎn)擊保存
點(diǎn)擊 Build Now,查看 Console Output 可以看到整個(gè)構(gòu)建過(guò)程
#使用代碼生成器生成流水線腳本:
流水線 -> 流水線語(yǔ)法 -> 片段生成器
#生成一個(gè) pull stage
選擇 checkout: Check out from version control
SCM 選擇 Git,Repository URL:git@192.168.80.10:devops_group/web_demo.git
Credentials 下拉選擇 gitlab-auth-ssh
指定分支 */master
點(diǎn)擊 生成流水線腳本
把生成的腳本復(fù)制到流水線中后,點(diǎn)擊保存,嘗試構(gòu)建;
#生成一個(gè)構(gòu)建 stage
選擇 sh:Shell Script
Shell Script 輸入 mvn clean package
點(diǎn)擊 生成流水線腳本
把生成的腳本復(fù)制到流水線中后,點(diǎn)擊保存,嘗試構(gòu)建;文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-672738.html
#生成一個(gè)部署 stage
選擇 deploy: Deploy war/ear to a container
WAR files 輸入 targer/*.war
Containers —> Add Container —> Tomcat 8.x Remote -> Credentials 下拉選擇 tomcat-auth
Tomcat URL 輸入 http://192.168.80.12:8080
點(diǎn)擊 生成流水線腳本
把生成的腳本復(fù)制到流水線中后,點(diǎn)擊保存,嘗試構(gòu)建部署。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-672738.html
到了這里,關(guān)于從零開始配置Jenkins與GitLab集成:一步步實(shí)現(xiàn)持續(xù)集成的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!