
業務的簡稱為demo,微服務架構。N多個微服務。服務命名:業務簡稱-應用名稱-類型(demo-hello-service)。特性分支開發,版本分支釋出。每個需求(任務/故事)對應一個特性分支。每個釋出(release)對應一個版本分支。
1.需求與代碼管理
Jira作為需求和缺陷管理,采用Scrum開發方法,jira中的項目名稱與業務簡稱一緻(demo)。Gitlab作為版本控制系統,每個Group對應一個業務,每個微服務對應一個代碼庫。
需求與代碼關聯:在jira中建立一個任務/故事,關聯子產品後自動在該子產品建立一個以ISSUE(任務/故事)ID的特性分支。此時的子產品等同于每個微服務的項目(代碼庫)名稱。以下面圖中為例:我們在demo項目中建立了一個子產品demo-hello-service,其實對應的就是Gitlab代碼庫中demo組的demo-hello-service服務。
特性分支:建立好每個子產品後,就可以實作需求與代碼關聯。例如:我們在Jira項目demo中建立一個問題,類型為故事(不受限制可為其他),重點是需要将改故事關聯到子產品(隻有關聯到子產品,我們才能通過接口得知哪個問題關聯的哪個代碼庫)。
版本分支:當特性分支開發完成以及測試驗證完成後,基于主幹分支建立一個版本分支,然後将所有的特性分支合并到版本分支。此時可以通過Jira中建立一個釋出版本,然後問題關聯釋出版本(此動作表示該特性分支已經通過驗證,可以合并)。自動完成版本分支的建立和特性分支到版本分支的合并請求。
2. 配置過程
需求與代碼庫關聯,主要用到的工具鍊為: Jira + GitLab + Jenkins。Jira負責建立需求,配置webhook。Jenkins負責接收Jira webhook請求,然後通過接口實作GitLab項目分支建立。
特性分支自動化:當我們在jira上面建立了問題,此時會通過Jira的webhook觸發對應的Jenkins作業,該Jenkins作業通過解析Jira webhook傳遞的資料,找到問題名稱和子產品名稱。調用GitlabAPI 項目查詢接口,根據子產品名稱找到代碼庫。調用GitLabAPI 分支建立接口,根據問題名稱基于主幹分支建立一個特性分支。任務結束。
版本分支自動化:Jira建立釋出版本,Issue關聯版本。自動在gitlab代碼庫基于master建立版本分支,并開啟特性分支到版本分支的合并請求。
在Jenkins, 建立一個Pipeline 作業并配置GenericTrigger 觸發器,接收JiraWebhook資料。projectKey 參數表示Jira項目名稱,webHookData 參數為Jira webhook的所有資料。token 是觸發器的觸發token,這裡預設采用的作業名稱(作業名稱要唯一)。
在Jira項目中配置Webhook,勾選觸發事件填寫觸發URL。http://jenkins.idevops.site/generic-webhook-trigger/invoke?token=demo-jira-service&projectKey=${project.key} (這個位址是jenkins Generictrigger生成的,這裡不做過多的介紹)
Jira webhook資料參考, 這些參數可以在Jenkinsfile中通過readJSON格式化,然後擷取值。
Gitlab接口文檔:https://docs.gitlab.com/ce/api/README.html
共享庫:src/org/devops/gitlab.groovy
澤陽,DevOps領域實踐者。專注于企業級DevOps運維開發技術實踐分享,主要以新Linux運維技術、DevOps技術課程為主。