Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

實現自動化思路設計

一、發佈流程

Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:以上截圖是基於Jenkins+Docker+Git實現一套CI自動化發佈流程!java

二、工做流程

1)開發人員提交代碼到Git版本倉庫;node

2)Jenkins人工/定時觸發項目構建;linux

3)Jenkins拉取代碼、代碼編碼、打包鏡像、推送到鏡像倉庫;git

4)Jenkins在Docker主機建立容器併發布。github

三、環境規劃

系統版本:CentOS Linux release 7.6.1810 (Core)x64web

Git倉庫版本:yum安裝便可docker

Harbor倉庫版本:harbor-offline-installer-v1.6.1(離線版)shell

Jenkins版本:jenkins.warapache

關閉防火牆並禁止開機自啓centos

systemctl stop firewalld.service
systemctl disable firewalld

關閉selinux

sed-i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

重啓 reboot

四、服務器及IP分配

Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:爲了方便實驗環境這裏的docker主機也用Jenkins主機代替!

部署git倉庫

一、安裝git

yum -y install git

二、建立git用戶

useradd git

三、設置git用戶密碼

passwd git

四、建立git倉庫

1)切換至git用戶

su - git

2)建立git倉庫目錄

mkdir demo.git

3)切換到git倉庫目錄

cd demo.git/

4)初始化git倉庫

git init --bare
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

部署Harbor倉庫

一、下載harbor離線安裝包

wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.6.1.tgz

二、解壓harbor

tar xf harbor-offline-installer-v1.6.1.tgz

三、安裝harbor依賴包

1)安裝docker

yum -y install docker-ce

注:若是想安裝docker最新版本須要下載docker-ce的源,下載地址以下http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo,下載後將源移動到/etc/yum.repos.d/下便可!

2)啓動docker

systemctl start docker

3)將docker設置爲開機自啓

systemctl enable docker

4)安裝docker-comps

yum -y install docker-compose

注:若是安裝不上就先安裝epel-release源,而後安裝docker-compose!

四、安裝並運行harbor

1)進入harbor目錄

cd harbor

2)修改第七行配置文件

cat harbor.cfg

hostname = 192.168.156.102

3)檢測並建立harbor須要文件

./prepare
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

4)安裝harbor

./install.sh
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

五、網頁管理harbor

1)網頁登錄harbor

訪問網址:http://192.168.156.102/
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:默認的帳號admin,密碼:Harbor12345!

2)登錄界面
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

3)點擊建立項目
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

4)設置項目名及訪問級別
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:建議使用公開級別,不然其餘主機默認無權限下拉鏡像!

六、上傳鏡像

1)下載官方tomcat鏡像

docker pull tomcat
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

2)給tomcat鏡像打標籤

docker tag tomcat 192.168.156.102/ceshi/tomcat:v1
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

3)登錄harbor

docker login 192.168.156.102
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:默認狀況下登錄會報錯Error response from daemon: Get https://192.168.156.102/v2/: dial tcp 192.168.156.102:443: connect: connection refused,解決方式只須要在每檯安裝docker的機器上修改docker啓動文件而後重啓docker便可!
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

4)上傳鏡像

docker push 192.168.156.102/ceshi/tomcat:v1
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

5)網頁刷新查看
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:以上截圖說明上傳鏡像成功!

部署Jenkins

一、下載須要的包

apache-tomcat-8.0.46.tar.gz

apache-maven-3.5.0-bin.tar.gz

jdk-8u45-linux-x64.tar.gz

jenkins.war
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

二、安裝tomcat

1)解壓全部壓縮包
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

2)移動這三個解壓包到/usr/local/目錄下並重命名

mv apache-maven-3.5.0 /usr/local/maven

mv apache-tomcat-8.0.46 /usr/local/tomcat

mv jdk1.8.0_45/ /usr/local/jdk

3)設置全局環境變量

cat /etc/profile

JAVA_HOME=/usr/local/jdk
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
export MAVEN_HOME=/usr/local/maven
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$MAVEN_HOME/bin:$PATH

注:將以上命令追加到/etc/profile便可!

4)當即生效環境變量

source /etc/profile

5)刪除tomcat默認網頁

rm -rf /usr/local/tomcat/webapps/*

6)將Jenkins.war文件放到指定目錄

mv jenkins.war /usr/local/tomcat/webapps/

7)啓動tomcat

/usr/local/tomcat/bin/startup.sh
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

三、安裝docker

yum -y install docker-ce

注:安裝最新版docker(同上)!

四、安裝git

yum -y install git

五、密鑰認證

1)建立密鑰對

ssh-keygen
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

2)拷貝公鑰

ssh-copy-id git@192.168.156.101
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:以上這一步是爲了Jenkins在拉取代碼時,免密拉取!

六、上傳測試Java源代碼

1)下載源代碼

git clone https://github.com/W-F-Y/tomcat-java-demo.git
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

2)修改代碼默認倉庫地址

cat tomcat-java-demo/.git/config
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

3)上傳代碼到git倉庫

//進入代碼目錄

cd tomcat-java-demo/

//添加本地倉庫

git add .

//提交代碼

git commit -m 'java'
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

//綁定用戶名和郵箱

git config --global user.email '123@qq.com'
git config --global user.name 'wfy'

//從新提交代碼

git commit -m 'java'

//上傳代碼到遠程git倉庫

git push origin master
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

七、下拉代碼測試

git clone git@192.168.156.101:/home/git/demo.git
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:以上截圖證實上傳的源代碼到遠程倉庫沒有問題,同時也證實從遠程倉庫下拉代碼也沒有問題!

八、安裝Jenkins

1)網址訪問:http://192.168.156.103:8080/jenkins
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

2)按照操做輸入密碼,點擊繼續
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:我這裏是直接使用的推薦安裝,若是你也想使用推薦安裝插件能夠看看我上一篇文章jenkins解決Skip Plugin Installstions!

3)輸入用戶名密碼
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

4)實例配置
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

5)登錄Jenkins
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

九、配置Jenkins

1)點擊系統管理

2)點擊插件管理

3)點擊可選插件

搜索安裝插件Pipeline和SCM to job
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:另外一個插件安裝方式同樣!

4)配置憑據

//點擊憑據
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

//點擊Jenkins
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

//點擊全局憑據
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

//點擊添加憑據
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

//選擇ssh添加
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:下邊添加的密鑰是Jenkins的私鑰!

//點擊肯定添加完成
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

//返回首頁
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

Jenkins建立發佈任務

一、點擊建立新任務

Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

二、使用Pipeline流水線建立任務

Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

三、構建項目配置

Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:在構建配置這步只須要配置以上截圖這兩個地方而後點擊保存便可!

四、Pipeline代碼講解

node {
// 拉取代碼
stage('Git Checkout') {
checkout([$class: 'GitSCM', branches: [[name: '${branch}']], doGenerateSubmoduleConfigurations: false,
extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId:
'adf9f1d0-a09d-42e6-aa2c-c6a5dacc8ebc', url: 'git@192.168.156.101:/home/git/demo.git']]])
}
// 代碼編譯
stage('Maven Build') {
sh '''
export JAVA_HOME=/usr/local/jdk
/usr/local/maven/bin/mvn clean package -Dmaven.test.skip=true
'''
}
// 項目打包到鏡像並推送到鏡像倉庫
stage('Build and Push Image') {
sh '''
REPOSITORY=192.168.156.102/ceshi/tomcat-java-demo:${branch}
cat > Dockerfile << EOF
FROM 192.168.156.102/ceshi/tomcat:v1
MAINTAINER wfy
RUN rm -rf /usr/local/tomcat/webapps/
ADD target/
.war /usr/local/tomcat/webapps/ROOT.war
EOF
docker build -t $REPOSITORY .
docker login 192.168.156.102 -u admin -p Harbor12345
docker push $REPOSITORY
'''
}
// 部署到Docker主機
stage('Deploy to Docker') {
sh '''
REPOSITORY=192.168.156.102/ceshi/tomcat-java-demo:${branch}
docker rm -f tomcat-java-demo |true
docker pull $REPOSITORY
docker container run -d --name tomcat-java-demo -p 88:8080 $REPOSITORY
'''
}
}

//第一部分:

如下截圖簡單說一下pipeline語法和id。語法就是普通的shell命令經過Jenkins默認自帶的pipeline語法轉換器進行轉換,具體使用方式可根據左下角pipeline語法來調整。從以上截圖能夠看出來有一行很長的id號’ adf9f1d0-a09d-42e6-aa2c-c6a5dacc8ebc’,你可能此時一頓懵逼,老鐵別慌,還記得前邊配置Jenkins時添加的git憑據嗎?沒錯當你添加完成後會默認生成id號,只須要更新並點擊進去查看並粘貼出來便可!
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

//第二部分:

首先指定變量爲編譯好的包上傳到具體倉庫的具體項目下,而後經過dockerfile構建鏡像並上傳到變量所指定的倉庫具體位置!
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

//第三部分:

將上傳到倉庫的鏡像下拉到指定的機器,而後指定端口並運行!
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

五、開始構建java項目

1)點擊Build with Parameters構建
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

2)點擊開始構建
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目

3)構建階段視圖
Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:以上截圖經過視圖顯示沒有問題!

驗證Java項目

一、訪問網址:http://192.168.156.103:88/

Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:以上就是Java項目發佈後的web測試界面!

二、查看harbor鏡像倉庫

Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目
注:說明已經自動打包鏡像並上傳!

三、查看運行鏡像

Jenkins+Pipeline流水線+Docker實現自動化CI/CD發佈Java項目 注:經過以上各類驗證方式能夠看出Java項目自動發佈完成!

相關文章
相關標籤/搜索