生產環境hotfix部署流程

針對生產環境發佈新版本後有bug需要緊急修復的情況,協作流程思路:新建對應的hotfix補丁分支,相關開發人員基於hotfix分支進行bug修復,修復完畢驗證無誤後,同樣通過Merge Request合併至主倉庫,然後由hotfix分支構建重新發布至生產。

      其中Master成員負責tag和branch的創建,全體相關開發人員基於分支進行開發。詳細流程如下(以JIRA Sprint 31爲例,該迭代結束後需要發佈版本R-XYPJ-S-CAMS-0.11.0

     

      一. Master成員:

       1. 迭代結束後生產上線,上線後打tag,tag名:R-XYPJ-S-CAMS-0.11.0,tag名與JIRA中發佈版本保持一致,隨後每次發佈變更小版本號

       2. 如果生產發現問題需要修復,建立分支B-R-XYPJ-S-CAMS-0.11.0,branch名以“B-”開頭,後面加上JIRA發佈版本,同時在GitLab上將分支設爲受保護。例如B-R-XYPJ-S-CAMS-0.11.0,該分支永久存在。

       3. 當相關人員代碼開發修復後,處理Merge Request,基於主倉庫的B-R-XYPJ-S-CAMS-0.11.0分支再次構建發佈新版本,每次發佈生產後,再次打tag,同時tag中小版本號遞增,例如修復若干bug重新發布後,新的tag名爲:R-XYPJ-S-CAMS-0.11.1,再修復若干bug重新發布後,新的tag名爲R-XYPJ-S-CAMS-0.11.2,以此遞增。

       

      二. 相關開發人員:

       1. 明確當前生產環境問題基於哪個branch進行修復, 可詢問Master成員。例如, 當前bug修復分支爲:B-R-XYPJ-S-CAMS-0.11.0

       2. 本地運行 git fetch upstream 更新遠端repo的信息。

       3. 本地運行 git branch -a, 查看所有分支。輸出結果中應該可以看到遠端分支:remotes/upstream/B-R-XYPJ-S-CAMS-0.11.0

       4. 本地運行git checkout B-R-XYPJ-S-CAMS-0.11.0,切換至hotfix分支

       5. 在 B-R-XYPJ-S-CAMS-0.11.0分支上修改,提交。

       6. 本地運行git push origin B-R-XYPJ-S-CAMS-0.11.0,將更改提交至個人倉庫origin。

       7. 在Gitlab上發起Merge Request, 從 origin/B-R-XYPJ-S-CAMS-0.11.0 -> upstream/ B-R-XYPJ-S-CAMS-0.11.0

       8. 注意必要情況下使用cherry-pick,例如B-R-XYPJ-S-CAMS-0.11.0上修復的內容同時需要合併到master,則:git checkout master,切換到master分支,然後執行 git cherry-pick [commit-id],合併無誤後,push到origin master並提MR到upstream master。反之,如果要同步master上一個commit到B-R-XYPJ-S-CAMS-0.11.0同樣方法進行操作。

     

      三. 相關命令參考

      1. 分支操作

## 查看分支

git branch -a

 

## 新建分支

git checkout -b B-R-XYPJ-S-CAMS-0.11.0

## 從某個commit新建分支,後面跟commit id

git checkout -b B-R-XYPJ-S-CAMS-0.11.0 8c8ecc322753c36ff49d01b490a882485a1c3e59

## 從tag創建分支 git branch <new-branch-name> <tag-name>

git branch  B-R-XYPJ-S-CAMS-0.11.0  R-XYPJ-S-CAMS-0.11.0

 

## 刪除本地分支(參數可以是-d或者-D,-d是處於別的分支時刪除,-D是強制刪除)

git branch -d B-R-XYPJ-S-CAMS-0.11.0

## 刪除遠程分支

git push origin --delete B-R-XYPJ-S-CAMS-0.11.0

git push upstream --delete B-R-XYPJ-S-CAMS-0.11.0

 

## 推分支到遠程

git push origin B-R-XYPJ-S-CAMS-0.11.0

git push upstream B-R-XYPJ-S-CAMS-0.11.0

      2. tag操作

## 查看tag

git tag -l

 

## 新建tag,

git tag -a R-XYPJ-S-CAMS-0.11.0 -m "Sprint 31發佈版本0.11.0"

 

## 如果要從某個commit打tag

git tag -a R-XYPJ-S-CAMS-0.11.0 8c8ecc322753c36ff49d01b490a882485a1c3e59 -m "Sprint 31發佈版本0.11.0"

 

## 刪除tag

git tag -d R-XYPJ-S-CAMS-0.11.0

## 刪除遠程tag

git push origin --delete tag R-XYPJ-S-CAMS-0.11.0

git push upstream --delete tag R-XYPJ-S-CAMS-0.11.0

 

## 獲取遠程tag

git fetch upstream tag R-XYPJ-S-CAMS-0.11.2

## 推tag

git push origin R-XYPJ-S-CAMS-0.11.0

git push upstream R-XYPJ-S-CAMS-0.11.0

## 推所有tag

git push origin --tags

      3. cherry-pick

## 單個commit, git cherry-pick加commit id

git cherry-pick d01b490

## 多個commit,git cherry-pick commitid1..commitid100,中間兩個點

## 注意,不包含第一個commitid , 即  git cherry-pick (commitid1..commitid100]

git cherry-pick d01b490..a1c3e59

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章