Jenkins下載安裝和配置教程
這篇博文總結下如何下載安裝和配置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
- 輸入如下命令運行Jenkins
java -jar jenkins.war --httpPort=8080
- 然後我們將看到類似如下的信息:
記下上圖中出現的隨機密碼字符串,待會安裝要用。
-
打開瀏覽器,訪問 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
- 要使用最新版本就在命令行輸入如下內容:
docker pull jenkins/jenkins
這裏建議我們選擇長期支持版本
如果我們選擇的是長期支持版本,運行它就輸入如下命令即可:
docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
然後其他的安裝步驟和之前的那種直接下載方式基本上一致了就不再重複講解。
1.3 項目集成Jenkins參考配置文件
如果想讓項目集成Jenkins,這裏提供一個可供參考的配置文件。
Jenkinsfile.groovy
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 $HOME/.ssh/seat_rdgit/id_rsa";export GIT_SSH_COMMAND
'''
}
}
stage("Build"){
steps{
sh 'echoEnv "Build"'
sh 'mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent compile -Dmaven.test.failure.ignore=true'
echo "---------這裏替換爲執行編譯的步驟---------"
}
}
stage("UnitTest"){
steps{
sh 'echoEnv "UnitTest"'
echo "========executing UT========"
echo "---------執行單元測試----------"
sh 'mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent test -Dmaven.test.failure.ignore=true'
echo "---------這裏替換爲執行UT的步驟---------"
}
post{
success{
echo "========UT executed successfully========"
}
failure{
echo "========UT execution failed========"
echo "--------單元測試失敗--------------"
}
}
}
stage("SonarScan") {
when{
anyOf{
branch 'dev'
changeRequest()
}
}
steps {
sh 'echoEnv "SonarScan"'
echo "---------執行靜態代碼掃描----------"
//sh 'mvn sonar:sonar'
}
}
}
post{
always{
echo "========always========"
emailext(
subject: '${ENV, var="JOB_NAME"}-第${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 參考資料
本篇完~