Jenkins 持續集成持續發布使用搭建基礎


一、環境搭建基礎

1、持續集成、持續交付、持續部署概念

  ①、集成:

  是指軟件多人研發的部分軟件代碼整合交付,以便盡早發現個人開發部分的問題;持續集成:強調開發人員提交了新代碼之后,立刻進行構建(單元)測試,根據測試結果,我們可以確定新代碼和原有代碼能否正確地集成在一起。

  ②、交付:

  是指研發盡快向客戶交付,以便盡早發現生產環境中存在的問題;如果說等到所有東西都完成了才向下個環節交付,導致所有的問題只能在最后才爆發出來,解決成本巨大甚至無法解決;持續交付:在持續集成的基礎上,將集成后的代碼部署到更貼近真實運行環境的【生產環境】(production-like environments)中,比如,我們完成單元測試后,可以把代碼部署到連接數據庫的(Staging)環境中更多的測試,如果,代碼沒有問題,可以繼續手動部署到生產環境中。

  ③、部署:

  是代碼盡快向可運行的開發/測試交付,以便盡早測試;持續部署:持續部署則是在持續交付的基礎上,把部署到生成環境的過程自動化;

  ④、持續:

而所謂的持續,就是說每玩成一個完整的部分,就向下一個環節交付,發現問題可以馬上調整,使得問題不會放大到其他部分和后面的環節;

  ⑥、核心思想:

  核心在於,既然事實上難以做到事先完全了解完整的、正確的需求,那么就干脆一小塊一小塊的做,並且加快交付的速度和頻率,使得交付物盡早在下個環節得到驗證,早發現問題早返工。

  ⑦、jenkins概述

2、安裝部署

安裝

  ①、准備環境:

Jenkins 清華大學下載點: https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/

其他軟件包,在官方下載。

 
        
[root@jenkins-1 tmp]# ls
apache-maven-3.5.3-bin.tar.gz  git-2.9.5.tar.gz  jdk-8u171-linux-x64.tar.gz  jenkins-2.130-1.1.noarch.rpm
 
        

  ②、解壓部署基礎環境

[root@jenkins-1 tmp]# tar xf jdk-8u171-linux-x64.tar.gz -C /usr/local/
[root@jenkins-1 tmp]# ln -s /usr/local/jdk1.8.0_171 /usr/local/java
​
[root@jenkins-1 tmp]# tar xf apache-maven-3.5.3-bin.tar.gz -C /usr/local/
[root@jenkins-1 tmp]# ln -s /usr/local/apache-maven-3.5.3 /usr/local/maven
​

  ③、java和maven環境變量配置

[root@jenkins-1 tmp]# vim /etc/profile.d/jenkins.sh
JAVA_HOME=/usr/local/java
MAVEN_HOME=/usr/local/maven
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
​
export JAVA_HOME MAVEN_HOME

  ④、重新加載系統環境變量

[root@jenkins-1 tmp]# source /etc/profile
​
[root@jenkins-1 tmp]# ln -s /usr/local/java/bin/java /usr/bin/java
#我實驗本機沒java環境基礎,所以我需要創建一個軟鏈接到/usr/bin/ 避免會在后面沒有java命令報錯
​

  ⑥、查看系統環境變量是否生效,如果有一下輸出,就表示環境變量都沒有問題;

[root@jenkins-1 local]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
[root@jenkins-1 local]# mvn -v
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-25T03:49:05+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_171, vendor: Oracle Corporation
Java home: /usr/local/jdk1.8.0_171/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.2.3.el7.x86_64", arch: "amd64", family: "unix"

 

  ⑦、編譯安裝git

[root@jenkins-1 git-2.9.5]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y            
#安裝編譯依賴包
[root@jenkins-1 git]# tar xf git-2.9.5.tar.gz 
[root@jenkins-1 git]# ls
git-2.9.5  git-2.9.5.tar.gz
[root@jenkins-1 git]# cd git-2.9.5/
[root@jenkins-1 git-2.9.5]# make prefix=/usr/local/git all prefix=/usr/local/git install
#執行編譯

 

  ⑧、設置git環境變量

 
        
[root@jenkins-1 git-2.9.5]# vim /etc/profile.d/git.sh 
[root@jenkins-1 git-2.9.5]# source /etc/profile
[root@jenkins-1 git-2.9.5]# git --version
git version 2.9.5
[root@jenkins-1 git-2.9.5]# which git
/usr/local/git/bin/git

  ⑨、安裝Jenkins

 
        
[root@jenkins-1 tmp]# rpm -i jenkins-2.130-1.1.noarch.rpm 
警告:jenkins-2.130-1.1.noarch.rpm: 頭V4 DSA/SHA1 Signature, 密鑰 ID d50582e6: NOKEY
#這個警告可以忽略
[root@jenkins-1 tmp]# rpm -ql jenkins 
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins          #jenkins 配置
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war    #war包
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins                #默認的jenkinsHOME目錄
/var/log/jenkins                #日志
​

  ⑩、jenkins 內存優化,端口更改

[root@jenkins-1 tmp]# vim /etc/sysconfig/jenkins 
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms1024m -Xmx1024m"         內存優化,根據機器的配置給。
JENKINS_PORT="8888"         端口
jenkins 啟動

[root@jenkins-1 tmp]# /etc/init.d/jenkins start
Starting jenkins (via systemctl):                          [  確定  ]
[root@jenkins-1 tmp]# ps axu | grep java
jenkins   6249  181 18.4 3630896 378240 ?      Ssl  14:13   0:12 /usr/bin/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms1024m -Xmx1024m -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8888 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root      6287  0.0  0.0 112720   980 pts/0    S+   14:13   0:00 grep --color=auto java
​

3、Jenkins WEB頁面配置

  ①、在瀏覽器輸入:本機ip:jenkins端口(如:10.18.43.3:8888)

 

  ②、接下來就根據提示,完成頁面初始配置操作;

 

  ③、等待所有的插件安裝完成,(如果有失敗的,可以重試安裝插件)

  ④、創建一個管理員用戶(等會用來登錄使用

  ⑤、網站地址初始配置

 

  ⑥、點擊保存完成,進入jenkins Web頁面,接下來就是安裝必需的插件和配置,

4、配置web插件及設置

  ①、系統管理>>>:插件管理

 

    GIT plugin (可能已經默認安裝了)     
​
    Publish Over SSH (遠程Shell)      
​
    Maven Integration plugin

 

 

 

  ②、系統管理>>>:全局工具配置>>>: Jdk >>>:配置

  ③、系統管理>>>:全局工具配置>>>: Git >>>:配置

  ④、系統管理>>>:全局工具配置>>>: maven >>>:配置

  ⑤、系統管理>>>:系統設置>>>:jenkins位置及管理郵箱設置

 

  ⑥、系統管理>>>:系統設置>>>:jenkins郵箱通知設置 

 

  ⑦、系統管理>>>:系統設置>>>:jenkins Publish over SSH 設置

    配置publish over ssh: Passphrase:密碼(key的密碼,如果你設置了) Path to key:key文件(私鑰)的路徑(下面的key和這個2選1) Key:將私鑰復制到這個框中 Disable exec:

 

 

二、任務項目構建

1.項目創建

  首先,點擊【新建】進入選擇頁面,如下圖(一般選擇“構建一個自由風格的軟件項目”),這里是maven項目;

 

2.項目描述

  填好項目名稱后,點擊ok,跳轉至如下頁面,可以在這個頁面進行項目的配置(包括拉源碼、修改持續構建時間、打包部署前修改配置文件等)

 

3.其他參數

  General中的“丟棄舊的構建”可以設定持續構建的

 

4.參數構建

  在“參數化構建過程”中可以設置要構建的版本有哪些,如下

5.源碼管理

  在源碼管理模塊可以設置源碼地址(一般用的Git,這里我們用官網一項目,)

6.自動化設置

  如果是自動化構建,可以在構建觸發器中的“Poll SCM”中設置自動化構建時間(即每隔多長時間進行一次構建)

 

7.Build

  在Build中的Goals and options添加: clean package -Dmaven.test.skip=true

 

8.構建后的操作

  最后是構建后的操作,這里一般要設置我們要輸出包的路徑;

 

9.遠程主機所需

  在遠程主機創建是需要的腳本和目錄;

[root@git7-1 /]# mkdir -p /jenkins/war
[root@git7-1 /]# mkdir -p /jenkins/sh
[root@git7-1 /]# mkdir -p /jenkins/logs/
[root@git7-1 /]# mkdir /tomcat
[root@git7-1 /]# vim /jenkins/sh/deploy.sh
[root@git7-1 /]# chmod a+x /jenkins/sh/deploy.sh

10.腳本內容!

  (可以將構建好的項目,推送到tomcat目錄下。)

#!/bin/sh
cp /jenkins/war/*.war /tomcat
echo "恭喜你!這個項目已經構建完成!" > /jenkins/logs/`date +%F`--.log

 

11.開始構建!

 

12.構建成功!

 

自定義腳本中,有日志輸出,這個項目已經構建成功了!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM