針對生產環境發布新版本後有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 originb-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 checkoutmaster,切換到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
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
django生產環境部署
最近嘗試進行一些python web生產環境部署的任務。主要是使用django框架進行web開發。本地使用windows python3.7可是上到伺服器之後是ubuntu系統。ubuntu預設是python2和python3.5兩者都不符合現在的python開發版本。筆者嘗試進行了部署。一般來說,...
django生產環境部署
最近嘗試進行一些python web生產環境部署的任務。主要是使用django框架進行web開發。本地使用windows python3.7可是上到伺服器之後是ubuntu系統。ubuntu預設是python2和python3.5兩者都不符合現在的python開發版本。筆者嘗試進行了部署。一般來說,...
雲環境部署django uwsgi 生產環境
1.確保有乙個能夠用runserver正常啟動的django專案 2.專案已上傳到linux 3.linux上已部署好python環境,且已安裝好專案所需的模組 pip3 install uwsgi 1 在django專案同級目錄建立script目錄,用於存放配置指令碼等等 root hecs x ...