Jenkins 持續整合 ,整合發佈測試

2020-08-10 12:04:16

************* Jenkins的下載和安裝步驟 (CI持續整合)程式碼發佈測試工具************//

jenkins外掛官網下載地址
http://updates.jenkins-ci.org/download/plugins/

https://blog.csdn.net/hadues/article/details/104052637

Jenkins下載安裝和設定教學
1.1 Jenkins 安裝條件
1.2 Jenkins 安裝方式
1.2.1 直接下載war包方式進行安裝設定Jenkins
1.2.2 Docker 方式安裝Jenkins
1.3 專案整合Jenkins參考組態檔
1.4 參考資料

這篇博文總結下如何下載安裝和設定Jenkins
1.1 Jenkins 安裝條件
機器需要至少10GB 磁碟空間,最少256MB記憶體, 建議不低於512MB
JDK 8 或JDK 11 以上

1.2 Jenkins 安裝方式
Jenkins 安裝方式有兩種:

第一種 直接下載war包方式
第二種通過下載Docker 容器方式

1.2.1 直接下載war包方式進行安裝設定Jenkins
接下來我們講解下如何使用下載war 包方式進行安裝和設定Jenkins.

具體步驟如下:

點選下載最新穩定版Jenkins http://mirrors.jenkins.io/war-stable/latest/ http://mirrors.jenkins.io/war-stable/latest/jenkins.war
輸入如下命令執行Jenkins

在这里插入图片描述

記下上圖中出現的隨機密碼字串,待會安裝要用。

開啓瀏覽器,存取 http://localhost:8080

等待一會後我們可以看到如下所示內容後,輸入剛纔記下的隨機密碼字串並點選Continue

在这里插入图片描述

選擇按照推薦的外掛或自定義選擇所需要安裝的外掛

在这里插入图片描述

這裏我們選擇推薦的外掛進行安裝

在这里插入图片描述

然後安裝成功後我們需要建立一個管理員賬號

在这里插入图片描述

我們選擇Save and Continue

在这里插入图片描述

存取首頁: http://127.0.0.1:8080/

在这里插入图片描述
點選Start Using Jenkins 後我們可以看到如下內容:
在这里插入图片描述

1.2.2 Docker 方式安裝Jenkins

Docker 方式安裝首先需要安裝Docker 環境,具體安裝方法見我的另外一篇博文Docker 入門學習教學

安裝完Docker 之後,我們需要去Docker 倉庫查詢我們的Jenkins.

Docker 官方倉庫地址:https://hub.docker.com/

開啓官方倉庫網址後,我們輸入Jenkins 然後點選搜尋即可。

在这里插入图片描述
值得注意的是當我們開啓這個後你會發現有這麼一句話:

在这里插入图片描述

翻譯成中文就是:

不推薦使用此image,而應使用Jenkins社羣在專案發佈過程中提供和維護的jenkins / jenkins:lts image。 在LTS 2.60.x之後,此處找到的image將不再進行任何更新。 請相應地調整您的用法。

也就是說,我們不要再選擇這個倉庫映象了,而是應該選擇jenkins/jenkins:lts 這個長期支援版本。

長期支援版本地址:https://hub.docker.com/r/jenkins/jenkins

開啓後我們可以看到如下提示:
在这里插入图片描述
在这里插入图片描述
要使用長期支援版本就在命令列輸入如下內容:
docker pull jenkins/jenkins:lts
1
要使用最新版本就在命令列輸入如下內容:
docker pull jenkins/jenkins
1
這裏建議我們選擇長期支援版本

如果我們選擇的是長期支援版本,執行它就輸入如下命令即可:

docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
1
然後其他的安裝步驟和之前的那種直接下載方式基本上一致了就不再重複講解。

1.3 專案整合Jenkins參考組態檔

如果想讓專案整合Jenkins,這裏提供一個可供參考的組態檔。

pipeline{
agent {
label ‘LABEL_192.168.159.160’
}
triggers{ cron(‘H 11 * * *’) }
environment {
GIT_EMAIL = sh(script: ‘’‘git log -3 | cat - | grep Author | grep -v nobody@nowhere | awk -F’[<>]’ ‘{print $2}’ | head -1 ‘’’,returnStdout: true).trim()
GIT_PROJECT = sh(script: ‘’‘git remote -v | head -1 | awk -F ‘/’ ‘{print $4}’ ‘’’,returnStdout: true).trim()
GIT_REPO = sh(script: ‘’‘git remote -v | head -1 | awk -F’[/.]’ ‘{print $7}’ ‘’’,returnStdout: true).trim()
TEAM_NAME = sh(script: ‘’‘git remote -v | head -1 | awk -F’[/.]’ ‘{print $7}’ | awk -F ‘_’ ‘{print $1}’ | tr ‘[a-z]’ ‘[A-Z]’ ‘’’,returnStdout: true).trim()
GIT_COMMIT = sh(script: ‘’‘git rev-parse HEAD ‘’’,returnStdout: true).trim()
GIT_CHANGE = sh(script: ‘’‘git show --stat $GIT_COMMIT | tail -1 ‘’’,returnStdout: true).trim()
GIT_AUTHOR = sh(script: ‘’‘git log -3 | cat - | grep Author | grep -v nobody@nowhere | awk -F’[<>]’ ‘{print $1}’ | awk -F ‘:’ ‘{print $2}’ | sed ‘s/ //g’ | head -1 ‘’’,returnStdout: true).trim()
}
stages{
stage(「trigger1」){
steps{
sh ‘echo commit > $WORKSPACE/.trigger_type’
}
}
stage(「trigger2」){
when { changeRequest() }
steps{
sh ‘echo pr > $WORKSPACE/.trigger_type’
}
}
stage(「DailyBuild」){
when { triggeredBy ‘TimerTrigger’ }
steps{
sh ‘’’
echo daily > $WORKSPACE/.trigger_type
GIT_SSH_COMMAND=「ssh -i KaTeX parse error: Expected 'EOF', got '}' at position 85: …'' }̲ } …{ENV, var=「JOB_NAME」}-第BUILDNUMBER,body:{BUILD_NUMBER}次構建日誌', body: '{FILE,path=」/opt/app/jenkins/template/email.html"}’,
to: env.GIT_EMAIL
)
}
success{
sh ‘echoEnv 「SUCCESS」’
echo 「========pipeline executed successfully ========」
}
aborted{
sh ‘echoEnv 「ABORT」’
}
failure{
sh ‘echoEnv 「FAIL」’
echo 「pipeline execution failed
}
}
}
1.4 參考資料
https://jenkins.io/
https://github.com/jenkinsci/docker/
https://hub.docker.com/r/jenkins/jenkins