1 用戶故事
作為一個程序員运准,我想為項目做一套自動化測試和發(fā)布服務(wù),以便我不用每次都手動測試和發(fā)布碰凶。
2 概述
2.1 環(huán)境簡述
服務(wù)器:centos7.*
gitlab: Community Edition 10.2.1
Jenkins: 2.6 +
2.2 前期準(zhǔn)備
gitlab中需要devops的項目的master權(quán)限(用于設(shè)置webhooks和git公鑰)暮芭。
Jenkins服務(wù)器中的公鑰。
Jenkins需要安裝“GitLab Plugin”插件欲低。
2.3 整體流程
在gitlab中配置webhooks和Jenkins服務(wù)器的公鑰辕宏,在Jenkins中創(chuàng)建一個新任務(wù)并配置好CI/CD的工作流和git認(rèn)證相關(guān)配置。
當(dāng)git的工程push的時候砾莱,就會發(fā)一個post到Jenkins服務(wù)瑞筐,Jenkins就會執(zhí)行相應(yīng)task。
3 步驟
3.1 在gitlab中設(shè)置Jenkins服務(wù)器的公鑰
在Jenkins服務(wù)器上獲取公鑰腊瑟。進(jìn)入目錄
cd ~/.ssh/
聚假,查看目錄下是否存在 id_rsa.pub 和 id_rsa 文件块蚌。如果不存在,使用命令:ssh-keygen -t rsa -C "youremail@example.com"膘格,生成這2個文件(之后步驟中私鑰內(nèi)容放入Jenkins中峭范,公鑰添加到GitLab中)。進(jìn)入gitlab的工程首頁瘪贱,setting → Repository → Deploy Keys 纱控,然后將 id_rsa.pub 的公鑰復(fù)制到 key中且保存。
==注:如果提示錯誤"Fingerprint has already been taken"菜秦,有兩種情況:1甜害、復(fù)制的密鑰中有換行符。 2球昨、之前已存在的密鑰可能無效尔店,需重新生成。==
3.2 在Jenkins中配置任務(wù)
進(jìn)入Jenkins首頁主慰, 新建 → 選擇”構(gòu)建一個自由風(fēng)格的軟件項目“并輸入任務(wù)名(此testProject)嚣州。
配置源碼管理:選擇git,在Repository URL中輸入項目的http鏈接河哑。Credentials 點擊add(Jenkins),在彈出頁中進(jìn)行相關(guān)設(shè)置(設(shè)置如下圖)龟虎。
配置構(gòu)建觸發(fā)器:勾選 ”Build when a change is pushed to GitHub“ 和 ”Build when a change is pushed to GitLab. GitLab CI Service URL: http://host:port/project/testProject” , 復(fù)制此處的Service URL璃谨,為之后配置webhooks使用。
配置構(gòu)建:略鲤妥,這里只介紹CI/CD的前置工作佳吞。
配置完成點擊保存。
3.3 在gitlab中配置webhooks
進(jìn)入gitlab工程首頁棉安,setting → Integrations 底扳,在url 中輸入剛才在Jenkins配置過程中復(fù)制的Service URL ,url的格式為
http://Jenkins用戶ID:Jenkins用戶的apitoken值@host:port/project/testProject
贡耽,其中Jenkins用戶的apitoken在當(dāng)前用戶配置中去找衷模。然后點擊“add webhook”,設(shè)置完成蒲赂。Secret Token可設(shè)置阱冶,也可不設(shè)置。如需設(shè)置滥嘴,應(yīng)在 3.2中的配置構(gòu)建觸發(fā)器步驟中木蹬,在勾選后,選擇高級若皱,即可生成Secret Token镊叁。
以上為基本前置工作尘颓,只是在gitlab和Jenkins部署之后的一些簡單的連通配置。git的認(rèn)證方式有多種晦譬,這里選擇使用公私鑰認(rèn)證(個人感覺相對穩(wěn)定)疤苹。
create at 2017/12/16 11:50:27