Mac環(huán)境下Jenkins學習筆記-Docker部署+角色分配+pipline構建+發(fā)送郵件

前言

最近抽空又把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下可以看到掛載的文件


image.png

image.png
2. 訪問 http:127.0.0.1:8081
image.png
3. 因為之前已經把jenkins掛載到本地可以直接在本地的jenkins_home里找到密碼
image.png

輸入密碼后光戈,可以看到如下圖


image.png

建議直接選擇第二項哪痰,自己選擇插件來安裝


image.png
4. 創(chuàng)建管理用戶,保存完成即可
image.png

權限與角色

因為jenkins本身提供的不足以滿足我們對與權限的需求久妆,所以還是需要安裝插件來實現(xiàn)晌杰。另外jenkins本身是英文,對于國人來說還是中文更舒適筷弦,因此這個也需要安裝插件

1. 插件目錄

Manage Jenkins ->Manage Plugins -> Availble

2. 安裝中文插件
image.png
3. 安裝角色插件
image.png
4. 安裝后重啟

http://127.0.0.1:8081/restart/
選擇是肋演,就可以重啟

image.png

重啟成功后,可以看到界面變成來中文
image.png

5. 更改jenkins默認授權測試為Role-Based Strategy

系統(tǒng)管理-> 全局安全配置


image.png
6. 新建角色

在系統(tǒng)管理選擇Manage and Assign Role


image.png

新建角色


image.png

新建一個全局角色烂琴,base_role:給他賦可讀權限惋啃;
新建兩個子角色(項目的權限),A組和B組监右,A組成員可以看到test開頭的項目边灭,B組成員可以看到product開頭的項目;
image.png
7. 新建兩個用戶健盒,并且分別給它分配A組和B組權限

新增用戶-test 和prodcut用戶


image.png

image.png

分配權限- test和prodcut分配全局權限绒瘦,test分配A組,prodcut分配B組


image.png

image.png
8. 測試
1. 分別新建兩個項目扣癣,test開頭和prodcut開頭的項目

可以看到root用戶可以看到兩個項目


image.png
2. 登錄test用戶惰帽,查看項目
image.png
3. 登錄product用戶,查看項目
image.png

Credentials Binding Plugin(用戶授權和憑證)

因為在生產中父虑,jenkins經常需要和外部的一些系統(tǒng)打交道该酗,常見的場景是需要從gitlab中拉取代碼、構建士嚎、部署呜魄,所以需要配置一下憑證才可以完成。
Jenkins 提供多種類型的憑證莱衩,常用的就兩種爵嗅,
1.用戶和密碼
2. 通過SSH private key的方式
下面就演示一下第一種方式

1. 添加憑證

image.png

image.png

2. 使用該賬號從git拉下代碼測試一下

1.測試前需要安裝gitlab的插件

image.png

2. 新建一個自由風格的項目,配置gitlab的url笨蚁,拉取項目
image.png

可以看到睹晒,構建成功

image.png

Pipline構建

Jenkins原生只提供自由風格的構建,但是在實際生產中更多的使用的是Pipline的構建括细。

1. 安裝插件
image.png
2. 新建Pipeline風格的項目
image.png
3. 寫一個pipeline的腳本測試一下

小技巧:pipeline語法生成器
因為pipeline 是一種腳本語言伪很,如果我們只是使用的話不需要掌握太深,只要會用就行奋单。jenkins也為我們提供了大量的事例以及語法生成器锉试,具體可以參考如下:

image.png

image.png

image.png

可以選擇界面的方式,也可以選擇在把把腳本寫入Jenkinsfile放在項目根目錄

pipeline {
    agent any

    stages {
        stage('git pull') {
            steps {
                echo 'git pull'
            }
        }
        stage('build ') {
            steps {
                echo 'build'
            }
        }
        stage('deploy ') {
            steps {
                echo 'deploy'
            }
        }
    }
}

方法一:

image.png

方法二
image.png

方法二配置.png

更詳細.png
4. 開始構建- 可以看到構建的整個過程
image.png
5. 設置構建時的參數(shù)化
image.png
# 可以通過 ${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"
            )
        }

    }
}

設置完的界面如下辱匿,可以直接選擇分支構建即可

image.png

構建后發(fā)送郵件

1. 安裝郵件相關的插件

因為jenkins自帶的郵件通知不太完善键痛,所以還是需要下載特定的郵件插件- Email Extension Template , 重啟后生效

image.png

2. 配置jenkins 關于郵件相關的

首先:進入系統(tǒng)管理- 系統(tǒng)配置頁面
在系統(tǒng)管理員郵件地址欄填寫自己的郵箱地址

image.png

其次: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: 回復者列表
image.png

再而可以通過配置 “郵件通知” 來測試一下

可以看到測試成功了

image.png

最后寫入郵件模版并且把它放到項目跟目錄江兢,并且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"
            )
        }

    }
}

所有一切準備好后,代碼提交就可以通過構建看到效果


image.png

over

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末丁频,一起剝皮案震驚了整個濱河市杉允,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌席里,老刑警劉巖叔磷,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奖磁,居然都是意外死亡改基,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門咖为,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秕狰,“玉大人,你說我怎么就攤上這事躁染∶В” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵吞彤,是天一觀的道長我衬。 經常有香客問我,道長饰恕,這世上最難降的妖魔是什么挠羔? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮懂盐,結果婚禮上褥赊,老公的妹妹穿的比我還像新娘糕档。我一直安慰自己莉恼,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布速那。 她就那樣靜靜地躺著俐银,像睡著了一般。 火紅的嫁衣襯著肌膚如雪端仰。 梳的紋絲不亂的頭發(fā)上捶惜,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音荔烧,去河邊找鬼吱七。 笑死汽久,一個胖子當著我的面吹牛,可吹牛的內容都是我干的踊餐。 我是一名探鬼主播景醇,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吝岭!你這毒婦竟也來了三痰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤窜管,失蹤者是張志新(化名)和其女友劉穎散劫,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幕帆,經...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡获搏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了失乾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颜凯。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖仗扬,靈堂內的尸體忽然破棺而出症概,到底是詐尸還是另有隱情,我是刑警寧澤早芭,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布彼城,位于F島的核電站,受9級特大地震影響退个,放射性物質發(fā)生泄漏募壕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一语盈、第九天 我趴在偏房一處隱蔽的房頂上張望舱馅。 院中可真熱鬧,春花似錦刀荒、人聲如沸代嗤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽干毅。三九已至,卻和暖如春泼返,著一層夾襖步出監(jiān)牢的瞬間硝逢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留渠鸽,地道東北人叫乌。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像徽缚,于是被迫代替她去往敵國和親综芥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內容