前言
最近抽空又把jenkins給學了一下胧辽,這次使用docker部署,內容涉及到部署疙挺,插件安裝钮呀,角色權限分配剑鞍,以及使用pipline構建,參數(shù)化爽醋,最后是發(fā)送郵件通知蚁署。
docker部署安裝
1. 因為涉及到使用docker部署,所以我直接上docker hub去搜索到相應的鏡像和安裝命令蚂四,很簡單直接看命令吧
docker run -itd -p 8081:8080 -p 50001:50000 -v /Users/shenhaodong/jenkins_home:/var/jenkins_home
-e TZ='Asia/Shanghai' jenkins/jenkins:lts
# -p 是映射端口號
# -v 是掛載到本地
# -e 是修改jenkins時間
通過docker ps 可以看到已經在本地啟動成功,而且在本地jenkins_home下可以看到掛載的文件
2. 訪問 http:127.0.0.1:8081
3. 因為之前已經把jenkins掛載到本地可以直接在本地的jenkins_home里找到密碼
輸入密碼后光戈,可以看到如下圖
建議直接選擇第二項哪痰,自己選擇插件來安裝
4. 創(chuàng)建管理用戶,保存完成即可
權限與角色
因為jenkins本身提供的不足以滿足我們對與權限的需求久妆,所以還是需要安裝插件來實現(xiàn)晌杰。另外jenkins本身是英文,對于國人來說還是中文更舒適筷弦,因此這個也需要安裝插件
1. 插件目錄
Manage Jenkins ->Manage Plugins -> Availble
2. 安裝中文插件
3. 安裝角色插件
4. 安裝后重啟
http://127.0.0.1:8081/restart/
選擇是肋演,就可以重啟
重啟成功后,可以看到界面變成來中文
5. 更改jenkins默認授權測試為Role-Based Strategy
系統(tǒng)管理-> 全局安全配置
6. 新建角色
在系統(tǒng)管理選擇Manage and Assign Role
新建角色
新建一個全局角色烂琴,base_role:給他賦可讀權限惋啃;
新建兩個子角色(項目的權限),A組和B組监右,A組成員可以看到test開頭的項目边灭,B組成員可以看到product開頭的項目;
7. 新建兩個用戶健盒,并且分別給它分配A組和B組權限
新增用戶-test 和prodcut用戶
分配權限- test和prodcut分配全局權限绒瘦,test分配A組,prodcut分配B組
8. 測試
1. 分別新建兩個項目扣癣,test開頭和prodcut開頭的項目
可以看到root用戶可以看到兩個項目
2. 登錄test用戶惰帽,查看項目
3. 登錄product用戶,查看項目
Credentials Binding Plugin(用戶授權和憑證)
因為在生產中父虑,jenkins經常需要和外部的一些系統(tǒng)打交道该酗,常見的場景是需要從gitlab中拉取代碼、構建士嚎、部署呜魄,所以需要配置一下憑證才可以完成。
Jenkins 提供多種類型的憑證莱衩,常用的就兩種爵嗅,
1.用戶和密碼
2. 通過SSH private key的方式
下面就演示一下第一種方式
1. 添加憑證
2. 使用該賬號從git拉下代碼測試一下
1.測試前需要安裝gitlab的插件
2. 新建一個自由風格的項目,配置gitlab的url笨蚁,拉取項目
可以看到睹晒,構建成功
Pipline構建
Jenkins原生只提供自由風格的構建,但是在實際生產中更多的使用的是Pipline的構建括细。
1. 安裝插件
2. 新建Pipeline風格的項目
3. 寫一個pipeline的腳本測試一下
小技巧:pipeline語法生成器
因為pipeline 是一種腳本語言伪很,如果我們只是使用的話不需要掌握太深,只要會用就行奋单。jenkins也為我們提供了大量的事例以及語法生成器锉试,具體可以參考如下:
可以選擇界面的方式,也可以選擇在把把腳本寫入Jenkinsfile放在項目根目錄
pipeline {
agent any
stages {
stage('git pull') {
steps {
echo 'git pull'
}
}
stage('build ') {
steps {
echo 'build'
}
}
stage('deploy ') {
steps {
echo 'deploy'
}
}
}
}
方法一:
方法二
4. 開始構建- 可以看到構建的整個過程
5. 設置構建時的參數(shù)化
# 可以通過 ${branch} 的方式獲取到build傳遞過來的參數(shù)
pipeline {
agent any
stages {
stage('git pull') {
steps {
git branch: '${branch}', credentialsId: '33b48af2-4976-457b-b68c-74193358afcb', url: 'http://git.longhu.net/maas-qa/wucap_web.git'
}
}
stage('build ') {
steps {
echo 'build1'
}
}
}
post {
always {
emailext (
subject: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
body: '${FILE,path="email.html"}',
to: "759275499@qq.com",
from: "jwcu1992@163.com"
)
}
}
}
設置完的界面如下辱匿,可以直接選擇分支構建即可
構建后發(fā)送郵件
1. 安裝郵件相關的插件
因為jenkins自帶的郵件通知不太完善键痛,所以還是需要下載特定的郵件插件- Email Extension Template , 重啟后生效
2. 配置jenkins 關于郵件相關的
首先:進入系統(tǒng)管理- 系統(tǒng)配置頁面
在系統(tǒng)管理員郵件地址欄填寫自己的郵箱地址
其次:Extended E-mail Notification 做如下配置
SMTP server: 就是你自己郵箱的smtp默認的服務器地址炫彩,因為我的是163郵箱所以默認是這個
SMTP Port:465 因為我下面開啟了Use SSL,所以默認端口號就是465
Use SSL 期望勾上
Default user e-email suffix: 默認用戶郵箱后綴
Default Content Type: 默認內容類型
Default Recipients: 默認接受者絮短,通過逗號分開
Reply To List: 回復者列表
再而可以通過配置 “郵件通知” 來測試一下
可以看到測試成功了
最后寫入郵件模版并且把它放到項目跟目錄江兢,并且Jenkinsfile引入即可
email.html模板
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<td>以下為${PROJECT_NAME }項目構建信息</td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">構建信息</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>項目名稱:${PROJECT_NAME}</li>
<li>構建編號:第${BUILD_NUMBER}次構建</li>
<li>觸發(fā)原因:${CAUSE}</li>
<li>構建狀態(tài):${BUILD_STATUS}</li>
<li>構建日志:<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>構建Url:<a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工作目錄:<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
<li>項目Url:<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
<li>SonarQube結果:http://sonar****** </li>
<li>代碼覆蓋率結果:http://**/job/${PROJECT_NAME}/${BUILD_NUMBER}/jacoco/ </li>
</ul>
</td>
</tr>
<tr>
<td><b><font color="#0B610B">歷史變更記錄:</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat=" %p"}
</td>
</tr>
</table>
</body>
</html>
Jenkinsfile文件
pipeline {
agent any
stages {
stage('git pull') {
steps {
git branch: 'test1', credentialsId: '122dbcaf-e271-4357-a89a-2be183b12b3c', url: 'http://git.longhu.net/maas-qa/wucap_web.git'
}
}
stage('build ') {
steps {
echo 'build1'
}
}
stage('deploy ') {
steps {
echo 'deploy'
}
}
}
post {
always {
emailext (
subject: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
body: '${FILE,path="email.html"}',
to: "759275499@qq.com",
from: "jwcu1992@163.com"
)
}
}
}
所有一切準備好后,代碼提交就可以通過構建看到效果
over