Linux下使用Jenkins+Git+Maven+碼雲搭建自動化部署,可遠端部署jar和war
本教程為2臺全新阿里雲伺服器CentOS 6.8(以下稱搭建Jenkins的為第1臺伺服器,可訪問專案工程的為第2臺伺服器,以免混淆,沒有說明的都是在第1臺伺服器root目錄上操作,記得新增埠安全組和關閉防火牆),git倉庫使用的是碼雲。
整個教程包括了jdk、tomcat、Git、Maven、Maven私服、Jenkins、zookeeper等的搭建,全部程式碼手敲出來了,可適當跳過自己伺服器已有技術的搭建。
測試專案分為三個過程:jenkins-api、jenkins-service、jenkins-web,用的技術為SSM框架+dubbox+velocity模板引擎,其中jenkins-api需手動遠端部署到maven私服,jenkins-service以jar包形式自動遠端部署,jenkins-web以war包形式自動遠端部署。
- jdk-8u151-linux-x64.gz
- apache-tomcat-8.0.50.tar.gz
- git-2.8.0.tar.gz
- jenkins.war
- nexus-2.14.8-01-bundle.tar.gz
- apache-maven-3.3.9-bin.tar.gz
- settings.xml
- zookeeper-3.4.6.tar.gz
測試專案用到的碼雲git地址:
[email protected]:null_480_9070/jenkins-api.git
[email protected]:null_480_9070/jenkins-web.git
一、jdk1.8搭建
①檢測是否安裝了jdk,若有需要將其解除安裝java -version
②檢視安裝那些jdk
rpm -qa | grep java
③有則先解除安裝
安裝jdk
下載或上傳到root目錄下
將其解壓 tar -xvf jdk-8u151-linux-x64.gz
④安裝依賴
yum install glibc.i686
⑥配置環境變數
編輯 vim /etc/profile ,在檔案最後新增以下兩行程式碼
export JAVA_HOME=/root/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin
⑦儲存退出,使更改的配置立即生效
source /etc/profile
⑧是否成功
java -version
二、git搭建
yum install git
git --version
git config --global user.name "zhou8704"
git config --global user.email "[email protected]"
ssh-keygen -t rsa -C "[email protected]"
一路回車
cat ~/.ssh/id_rsa.pub
新增公鑰到碼雲(沒有碼雲的先去註冊個賬號)
第二種方式:
下載:
wget https://github.com/git/git/archive/v2.8.0.tar.gz
tar -xvf v2.8.0.tar.gz
sudo yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils- MakeMaker
cd git-2.8.0/
make prefix=/usr/local/git all
make prefix=/usr/local/git install
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
source /etc/bashrc
git --version
git config --global user.name "zhou8704"
git config --global user.email "[email protected]"
ssh-keygen -t rsa -C "[email protected]"
cat ~/.ssh/id_rsa.pub
新增公鑰到碼雲
三、Maven私服搭建
上傳或下載地址:https://www.sonatype.com/oss-thank-you-tgztar -zxvf nexus-2.14.8-01-bundle.tar.gz
cd nexus-2.14.8-01
vim bin/nexus(第23行,修改並儲存退出)
RUN_AS_USER=root
bin/nexus start
訪問登入:
第1臺伺服器地址:8081/nexus
使用者名稱:admin
密碼:admin123
訪問倉庫地址:
http://第1臺伺服器地址:8081/nexus/content/groups/public/
四、Maven搭建
上傳或下載wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
tar -zxvf apache-maven-3.3.9-bin.tar.gzmv apache-maven-3.3.9 maven
編輯 vim /etc/profile ,在檔案最後新增以下兩行程式碼
M2_HOME=/root/maven
export PATH=${M2_HOME}/bin:${PATH}
source /etc/profile
mvn -v
替換下setting.xml檔案(注意:打包中的setting檔案中有個地址需要替換成自己的maven私服地址)
cp /root/settings.xml /root/maven/conf/
五、jenkins搭建
(1)描述:程式碼clone(Git)、程式碼編譯(Maven)、程式碼執行(Tomcat)的基本環境,這裡使用war包方式部署執行(2)安裝tomcat:
下載或上傳tomcat
tar -xvf apache-tomcat-8.0.50.tar.gz
mv apache-tomcat-8.0.50 tomcat
(3)執行jenkins(這裡採用war包形式,可到官網用其他形式安裝)
官網下載或上傳jenkins.war
cd /root/tomcat/
cp /root/jenkins.war /root/tomcat/webapps/
bin/startup.sh
日誌檢視(快捷鍵Ctrl+C返回):
tail -f logs/catalina.out
訪問:
http://第1臺伺服器地址:8080/jenkins
cat /root/.jenkins/secrets/initialAdminPassword
(4)安裝用到的jenkins外掛
系統管理 - 外掛管理 - 可選外掛
以下這些都需要安裝:
- Deploy to container外掛
- git plugin(推薦外掛若安裝成功,這裡不用再次安裝了)
- SSH
- Maven Integration
(5)配置免密登入:
使用ssh-keygen生成私鑰公鑰對,第1臺伺服器上操作ssh-keygen -t rsa
一直回車,有選擇就確定輸入y
檢視生成的公鑰
cat /root/.ssh/id_rsa.pub
將公鑰推送到第2臺伺服器上
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]第2臺伺服器地址
需要輸入第2臺伺服器的密碼
測試是否成功
ssh 第2臺伺服器地址
(6)第2臺伺服器上也要安裝JDK和tomcat,步驟參照上面不再重複。
(7)第2臺伺服器上操作
①配置第2臺伺服器上的tomcat遠端部署
cd /root/tomcat
vim conf/tomcat-users.xml (第37行新增以下程式碼,儲存並退出)
<role rolename="admin-gui" />
<role rolename="manager-gui" />
<role rolename="manager-script" />
<user username="tomcat" password="tomcat" roles="admin-gui, manager-gui, manager-script"/>
把tomcat執行起來
bin/startup.sh
②上傳指令碼檔案service-restaet.sh到第2臺伺服器
新增許可權
chmod 777 service-restaet.sh
這裡需要做一步操作,把window下的sh檔案轉成Linux下的,這樣執行才不會報錯
sed -i "s/\r//" service-restart.sh
新建一個item目錄,等會用到。
mkdir item
③由於測試專案用到了dubbo,所以需要在第2臺伺服器上安裝zookeeper(根據你的專案情況可選)
上傳或下載zookeeper-3.4.6.tar.gz
tar zxf zookeeper-3.4.6.tar.gz
ll
cd zookeeper-3.4.6
mkdir data
cd conf
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg
dataDir=/root/zookeeper-3.4.6/data
cd ../bin
./zkServer.sh start
(8)為自動化部署前做準備(根據你的專案情況可選)
記得把你電腦上maven的settings.xml檔案替換掉
①由於測試專案jenkins-service用到了jenkins-api,需要把jenkins-api遠端部署到maven私服
專案根目錄下執行命令遠端deployed到倉庫
clean package -P json-log -Dmaven.test.skip=true
②由於中央倉庫下載不到dubbox2.8.4版本,需要手動遠端部署到maven私服
上傳或下載dubbox2.8.4原始碼https://github.com/dangdangdotcom/dubbox
先在pom.xml中加:
<distributionManagement>
<repository>
<id>releases</id>
<name>Local Nexus Repository</name>
<url>http://第1臺伺服器地址:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Local Nexus Repository</name>
<url>http://第1臺伺服器地址:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
然後當前專案根目錄下執行命令進行deployed
mvn deploy -Dmaven.test.skip=true
(9)jenkins系統管理相關配置(回到jenkins頁面,圖片如果看不清點選可放大)
①系統管理 - 全域性工具配置
- 配置JDK
- 配置Git
- 配置Maven
②Credentials:
這裡需要新增三個Credentials,後面會用到
新增tomcat部署賬號
新增root賬號
新增git私鑰
檢視私鑰並填寫(第1臺伺服器上操作)
cat ~/.ssh/id_rsa
新增完後如下:
③系統管理 - 系統設定:
SSH設定
(10)新建maven任務並配置(jar包遠端部署教程)
新建任務
專案地址git配置:
build:
以下是圖中用到的程式碼
clean package -P json-log -Dmaven.test.skip=true
export JAVA_HOME=/root/jdk1.8.0_151
/root/service-restart.sh stop
rm -rf /root/item/*
scp -r ${WORKSPACE}/target/lib [email protected]第2臺伺服器地址:/root/item
scp ${WORKSPACE}/target/jenkins-service.jar [email protected]第2臺伺服器地址:/root/item
export JAVA_HOME=/root/jdk1.8.0_151
/root/service-restart.sh start
儲存後,立即構建。
部署成功:
訪問rest地址:
http://第2臺伺服器地址:31002/services/user/getUserByAll
新建任務
專案配置:
部署成功:
訪問地址:
http://第2臺伺服器地址:8080/jenkins-web