注:以上截圖是基於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
注:爲了方便實驗環境這裏的docker主機也用Jenkins主機代替!
yum -y install git
useradd git
passwd git
1)切換至git用戶
su - git
2)建立git倉庫目錄
mkdir demo.git
3)切換到git倉庫目錄
cd demo.git/
4)初始化git倉庫
git init --bare
wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.6.1.tgz
tar xf harbor-offline-installer-v1.6.1.tgz
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!
1)進入harbor目錄
cd harbor
2)修改第七行配置文件
cat harbor.cfg
hostname = 192.168.156.102
3)檢測並建立harbor須要文件
./prepare
4)安裝harbor
./install.sh
1)網頁登錄harbor
訪問網址:http://192.168.156.102/
注:默認的帳號admin,密碼:Harbor12345!
2)登錄界面
3)點擊建立項目
4)設置項目名及訪問級別
注:建議使用公開級別,不然其餘主機默認無權限下拉鏡像!
1)下載官方tomcat鏡像
docker pull tomcat
2)給tomcat鏡像打標籤
docker tag tomcat 192.168.156.102/ceshi/tomcat:v1
3)登錄harbor
docker login 192.168.156.102
注:默認狀況下登錄會報錯Error response from daemon: Get https://192.168.156.102/v2/: dial tcp 192.168.156.102:443: connect: connection refused,解決方式只須要在每檯安裝docker的機器上修改docker啓動文件而後重啓docker便可!
4)上傳鏡像
docker push 192.168.156.102/ceshi/tomcat:v1
5)網頁刷新查看
注:以上截圖說明上傳鏡像成功!
apache-tomcat-8.0.46.tar.gz
apache-maven-3.5.0-bin.tar.gz
jdk-8u45-linux-x64.tar.gz
jenkins.war
1)解壓全部壓縮包
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
yum -y install docker-ce
注:安裝最新版docker(同上)!
yum -y install git
1)建立密鑰對
ssh-keygen
2)拷貝公鑰
ssh-copy-id git@192.168.156.101
注:以上這一步是爲了Jenkins在拉取代碼時,免密拉取!
1)下載源代碼
git clone https://github.com/W-F-Y/tomcat-java-demo.git
2)修改代碼默認倉庫地址
cat tomcat-java-demo/.git/config
3)上傳代碼到git倉庫
//進入代碼目錄
cd tomcat-java-demo/
//添加本地倉庫
git add .
//提交代碼
git commit -m 'java'
//綁定用戶名和郵箱
git config --global user.email '123@qq.com'
git config --global user.name 'wfy'
//從新提交代碼
git commit -m 'java'
//上傳代碼到遠程git倉庫
git push origin master
git clone git@192.168.156.101:/home/git/demo.git
注:以上截圖證實上傳的源代碼到遠程倉庫沒有問題,同時也證實從遠程倉庫下拉代碼也沒有問題!
1)網址訪問:http://192.168.156.103:8080/jenkins
2)按照操做輸入密碼,點擊繼續
注:我這裏是直接使用的推薦安裝,若是你也想使用推薦安裝插件能夠看看我上一篇文章jenkins解決Skip Plugin Installstions!
3)輸入用戶名密碼
4)實例配置
5)登錄Jenkins
1)點擊系統管理
2)點擊插件管理
3)點擊可選插件
搜索安裝插件Pipeline和SCM to job
注:另外一個插件安裝方式同樣!
4)配置憑據
//點擊憑據
//點擊Jenkins
//點擊全局憑據
//點擊添加憑據
//選擇ssh添加
注:下邊添加的密鑰是Jenkins的私鑰!
//點擊肯定添加完成
//返回首頁
注:在構建配置這步只須要配置以上截圖這兩個地方而後點擊保存便可!
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號,只須要更新並點擊進去查看並粘貼出來便可!
//第二部分:
首先指定變量爲編譯好的包上傳到具體倉庫的具體項目下,而後經過dockerfile構建鏡像並上傳到變量所指定的倉庫具體位置!
//第三部分:
將上傳到倉庫的鏡像下拉到指定的機器,而後指定端口並運行!
1)點擊Build with Parameters構建
2)點擊開始構建
3)構建階段視圖
注:以上截圖經過視圖顯示沒有問題!
注:以上就是Java項目發佈後的web測試界面!
注:說明已經自動打包鏡像並上傳!
注:經過以上各類驗證方式能夠看出Java項目自動發佈完成!