本文主要記錄如何通過docker安裝jenkins,并且通過jenkins部署項目
前置準備:jenkins所在宿主服務器首先安裝好jdk、maven
一、配置JDK環(huán)境
注意:選擇適合自己的JDK,并且注意安裝JDK的系統(tǒng)
地址:https://www.oracle.com/java/technologies/downloads/#java8
1、卸載linux系統(tǒng)自帶的JDK(建議直接用超級用戶,不然卸載的時候可能會報權限不夠的error,之后的操作也需要用root權限)
1.1、切換用戶:su root
su root
1.2、查看自帶JDK命令:rpm -qa | grep jdk
rpm -qa | grep jdk
1.3、卸載自帶JDK命令:rpm -e --nodeps 要卸載的JDK
rpm -e --nodeps 要卸載的JDK
2、在usr/local目錄下創(chuàng)建java目錄,把我們下載好的JDK壓縮包上傳到 創(chuàng)建好的 java目錄下(我放在該目錄下了,也可以放在其他目錄下)
創(chuàng)建安裝目錄:mkdir java
cd /usr/local
mkdir java
cd java
3、把壓縮包解壓到當前目錄(我們創(chuàng)建的java目錄下),解壓命令:tar -zxvf 所要解壓的文件名
tar -zxvf 所要解壓的文件名
4、編輯profile文件:vim /etc/profile
把光標移到最后一行,鍵盤按 i,進入編輯模式,然后插入以下內容:(注意自己所建java的路徑、jdk的名稱)
JAVA_HOME=/usr/local/java/jdk1.8.0_381
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
然后按ESC退出編輯模式,‘shift + :’,輸入wq,回車,完成保存并退出
5、讓編輯的文件生效執(zhí)行:source /etc/profile
6、最后驗證JDK安裝是否成功:java -version
[root@aliyun ~]# cd /usr/local/java
[root@aliyun java]# ls
jdk-8u381-linux-x64.tar.gz
[root@aliyun java]# tar -zxvf jdk-8u381-linux-x64.tar.gz
[root@aliyun java]# vim /etc/profile
[root@aliyun java]# source /etc/profile
[root@aliyun java]# java -version
java version "1.8.0_381"
Java(TM) SE Runtime Environment (build 1.8.0_381-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.381-b09, mixed mode)
出現上述顯示,則完畢!
二、配置Maven環(huán)境
1、準備Maven安裝包
打開Maven官網:Maven – Download Apache Maven
我選擇是3.9.3版本(選擇適合自己的版本),找到后綴名是.tar.gz的文件下載,如圖所示:
1.1、創(chuàng)建安裝目錄:mkdir maven
cd /usr/local
mkdir maven
cd maven
1.2、把壓縮包解壓到當前目錄(我們創(chuàng)建的maven目錄下),解壓命令:tar -zxvf 所要解壓的文件名
tar -zxvf 所要解壓的文件名
1.3、解壓完畢以后,新建一個repository倉庫,用于存放Maven下載下來的jar包
mkdir repository
2、配置鏡像
編輯settings.xml文件
vi apache-maven-3.9.3/conf/settings.xml
按i鍵進入編輯模式
1.設置Maven倉庫,就是我剛才新建的文件夾
<localRepository>/maven/repository</localRepository>
2.配置為阿里云鏡像地址
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
按Esc鍵退出編輯模式,輸入:wq保存并退出vim編輯器
3、配置環(huán)境變量
編輯profile文件
vim /etc/profile
按i鍵進入編輯模式
添加如下環(huán)境變量
export MAVEN_HOME=/usr/local/maven/apache-maven-3.9.3 export PATH=$PATH:$MAVEN_HOME/bin
按Esc鍵退出編輯模式,輸入:wq保存并退出vim編輯器
運行以下命令使profile文件生效
source /etc/profile
檢查環(huán)境配置是否成功
mvn -v
大功告成!
三、Jenkins環(huán)境搭建–Docker
#查看你需要安裝的版本
docker search jenkins
#安裝鏡像包
docker pull jenkins/jenkins #默認安裝最新版本
#安裝指定版本 指令入下
docker pull jenkins/jenkins:xx(版本號)
#查看是否安裝成功(查看鏡像包)
docker images
1、使用以下命令下載Jenkins鏡像(安裝最新版)
docker pull jenkins/jenkins:latest
2、啟動并創(chuàng)建Jenkins容器
#啟動命令:
docker run -u root -d \
-p 10240:8080 -p 10241:50000 \
-v /var/jenkins_home/workspace/:/var/jenkins_home/workspace/ \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
-v /usr/local/java/jdk1.8.0_381:/usr/local/java \
-v /usr/local/maven/apache-maven-3.9.3:/usr/local/maven \
-e JAVA_OPTS="-Dorg.apache.commons.jelly.tags.fmt.timeZone='Asia/Shanghai" \
--name myjenkins jenkins/jenkins
#解釋:
-d :后臺運行
-p:10240:8080 鏡像8080 :端口映射到宿主機 10240端口
-p:10241:50000 鏡像50000 :端口映射到宿主機 10241端口
-v:/var/jenkins_home/workspace/:/var/jenkins_home/workspace/
/var/jenkins_home/workspace/ 宿主機的Jenkins目錄掛載路徑 jenkins
/var/jenkins_home/workspace/ 鏡像服務器中jenkins的工作目錄
-v /usr/bin/docker:/usr/bin/docker : 掛載docker
-v /usr/local/java/jdk1.8.0_381:/usr/local/java : 掛載映射宿主機jdk
-v /usr/local/maven/apache-maven-3.9.3:/usr/local/maven : 掛載映射宿主機maven
-e JAVA_OPTS="-Dorg.apache.commons.jelly.tags.fmt.timeZone='Asia/Shanghai" \ :同步時間
--name myjenkins(自定義容器名稱) jenkins/jenkins(需要映射容器名稱)
如果執(zhí)行命令發(fā)現jenkins沒有啟動成功,很大概率是因為掛載的目錄沒有權限,需要授權
chown -R 1000:1000 /root/apply/jenkins_mount
chown -R 1000:1000 /root/apply/apache-maven-3.8.4
chown -R 1000:1000 /usr/local/jenkins
chown -R 1000:1000 /etc/localtime
jenkins容器啟動以后,咱們就需要到阿里云或者是騰訊云中,將端口為10240打開
瀏覽器訪問:你的服務器ip:10240。不出意外,你就能訪問到jenkins了。
3、進入容器,查看登錄初始化密碼,執(zhí)行命令:
docker exec -it myjenkins /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword
選擇安裝推薦插件
2.3版本安裝插件很多失敗,我換成了2.415版本
安裝完成后創(chuàng)建管理員用戶
4、配置Jenkins
4.1、安裝三個插件: Publish Over SSH和Maven Integration和GitLab ,點擊: 系統(tǒng)管理->插件管理 -> 可選插件中進行輸入安裝。如下圖所示:
4.2、安裝好上一步中的幾個插件之后,接下來需要在jenkins中配置一下Git和SSH: 點擊:系統(tǒng)管理 -> 系統(tǒng)配置 -> 找到Git和SSH
4.3、配置JDK和Maven: 點擊:系統(tǒng)管理 -> 全局工具配置 -> 找到JDK和Maven
四、使用Jenkins構建項目
Jenkins中構建項目的類型有很多,常用的有以下三種:
- 自由風格軟件項目(FreeStyle Project)(推薦)
- Maven項目(Maven Project)
- 流水線項目(Pipeline Project)(推薦)
實際上每種類型的構建都可以完成一樣的構建過程與結果,只是在操作方式、靈活度等方面有所區(qū)別,在實際開發(fā)中可以根據自己的需求和習慣來選擇。從靈活度上來說,流水線類型是最高的。
1、Pipeline流水線項目構建(推薦)
簡單來說,Pipeline就是一套運行在 Jenkins 上的工作流框架,將原來獨立運行于單個或者多個節(jié)點的任務連接起來,實現單個任務難以完成的復雜流程編排和可視化的工作。
Pipeline支持兩種語法:聲明式(Declarative)和腳本式(Scripted Pipeline)語法。
注意:需要安裝Pipeline插件
1.1、聲明式項目構建
- stages:代表整個流水線的所有執(zhí)行階段,通常stages只有1個,里面包含多個stage。
- stage:代表流水線中的某個階段,可能出現n個。一般分為拉取代碼、編譯構建、部署等階段。
- steps:代表一個階段內需要執(zhí)行的邏輯。steps里面是shell腳本,git拉取代碼、ssh遠程發(fā)布等任意內容。
這里,我們編寫一個簡單聲明式的Pipeline,來感受一下整個構建過程:
pipeline {
agent any
stages {
stage('拉取代碼') {
steps {
echo '拉取代碼'
}
}
stage('編譯構建') {
steps {
echo '編譯構建'
}
}
stage('項目部署') {
steps {
echo '項目部署'
}
}
}
}
開始構建,并輸出構建結果
1.2、腳本式項目構建
- Node :節(jié)點,一個 Node 就是一個 Jenkins 節(jié)點,Master 或者 Agent,是執(zhí)行 Step 的具體運行環(huán)境。
- Stage :階段,一個 Pipeline 可以劃分為若干個 Stage,每個 Stage 代表一組操作,比如:Build、Test、Deploy,Stage 是一個邏輯分組的概念。
- Step :步驟,Step 是最基本的操作單元,可以是打印一句話,也可以是構建一個 Docker 鏡像,由各類 Jenkins 插件提供,比如命令:sh ‘make’,就相當于我們平時 shell 終端中執(zhí)行 make 命令一樣。
編寫一個簡單的腳本式Pipeline:
node {
def mvnHome
stage('Preparation') {
echo '拉取代碼'
}
stage('Build') {
echo '編譯構建'
}
stage('Results') {
echo '項目部署'
}
}
開始構建,并輸出構建結果
1.3、使用腳本構建項目
如果不會寫流水線腳本,選擇流水線語法可以自動生成Pipeline語法
點擊【流水線語法】進入新頁面
選擇想要生成的流水線腳本,填寫對應配置然后生成
Git拉取代碼流水線語句:
連接服務器執(zhí)行語句:
最終的流水線腳本:
pipeline {
agent any
tools {
maven "maven3.9.3"
jdk "jdk1.8"
}
stages {
stage('拉取代碼') {
steps {
git credentialsId: '4ef30b0b-a335-4a6e-bfbe-151d59676f44', url: 'http://42.236.74.152:8050/fumingxing/cmcc-tenant.git'
}
}
stage('編譯打包') {
steps {
sh '''echo "開始構建"
mvn clean install -Dmaven.test.skip=true
echo "構建結束"'''
}
}
stage("服務傳輸、啟動"){
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'mySSH', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''#第一步是進入到服務器中生成好的jar包的目錄下
cd /var/jenkins_home/workspace/mytest/ruoyi-admin/target
#第二步是根據jar包的名字獲取運行的pid,并且將該進程殺死
ps -ef | grep ruoyi-admin.jar | grep -v grep | awk \'{printf $2}\' | xargs kill -9
#最后一步就是將這個jar后臺啟動了,并且將日志輸出到out.log中。
nohup java -Xms128m -Xmx128m -Xss1024k -XX:MaxNewSize=64M -XX:MaxPermSize=64M -jar ruoyi-admin.jar >out.log 2>&1 &''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'ruoyi-admin/target', sourceFiles: 'ruoyi-admin/target/ruoyi-admin.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}
文章來源:http://www.zghlxwxcb.cn/news/detail-713642.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-713642.html
到了這里,關于使用Docker安裝部署Jenkins的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!