1. 程式人生 > >Linux下使用Jenkins+Git+Maven+碼雲搭建自動化部署,可遠端部署jar和war

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
    點選下載(由於jdk1.8太大,故沒上傳,自己網上找或者yum安裝即可)
     測試專案用到的碼雲git地址:
[email protected]:null_480_9070/jenkins-api.git
[email protected]
:null_480_9070/jenkins-service.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-tgz
tar -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.gz
mv 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
800

②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


(11)新建maven任務並配置(war包遠端部署教程)
新建任務


專案配置:


部署成功:


訪問地址:

http://第2臺伺服器地址:8080/jenkins-web