① gitlab 搭建 備份 升級 遷移恢復
在執行命令之前,將gitlab.example.com替換為你的實際域名。完成後,通過運行以下命令啟動GitLab實例:
配置後應啟動所有的GitLab服務:
停止用戶連接
創建備份
如果出錯請檢查許可權問題 我的是默認root
可以加sudo重新試一下
gitlab普通升級就正常升級就可以了
升級不能跨越大版本號,因此只能升級到當前大版本號到最高版本,
方可升級到下一個大版本號
如果是跨大版本升級要嚴格按照官方指導的升級順序進行
參考:
https://docs.gitlab.com/ce/policy/maintenance.html
1.執行備份數據
2.在目標機器中搭建與執行備份相同版本的gitlab
版本一定要相同
3.將備份的tar包復制到目標機器備份目錄
默認路徑為: /var/opt/gitlab/backups/
4.恢復數據
正常情況下就是以上這些步驟了
如果你整個過程順順利利的那麼到這里就結束了
但是我的過程中充滿了曲折
以下是我遇到的一些錯誤
僅以記錄供參考
gitlab-ctl reconfigure
gitlab-ctl restart
即可生效
postgresql 沒有啟動
參考 https://www.tlanyan.me/deal-gitlab-upgrade-error/
在升級完成 執行gitlab-ctl reconfigure的時候出現
參照的這個
http://www.doc88.com/p-2542809540436.html
我也沒看太懂原理
反正好使 回頭再研究
至此 gitlab總算啟動起來了
感謝google&各路大神
以上
② gitlab和github區別是什麼
導入和導出數據不同。盡管GitLab提供了更多的導入源,但GitHub是成功的選擇。它具有專用的導入工具,可以導出整個Wiki,問題,項目上載等等。
身份驗證不同。這兩個平台以不同的方式處理許可權。GitLab具有一個角色系統,基於該角色,可以授予不同類型的訪問許可權。在GitHub中,團隊成員可以為單獨的存儲庫授予讀取或寫入許可權。
內部來源不同。在一個組織內部採用開源文化的實踐。這是GitLab另一個優勢所在,因為它本身就支持內部采購。
保密不同。manbetx客戶端打不開有一個模塊可以創建機密的問題,需要高許可權級別的訪問。
二者介紹:
GitHub是Git存儲庫託管服務,但它增加了許多功能。雖然Git是命令行工具,但是GitHub提供了基於Web的圖形界面。它還為每個項目提供訪問控制和多種協作功能,例如Wiki和基本任務管理工具。
GitLab是基於Web的DevOps生命周期工具,它使用GitLab Inc.開發的開源許可證,提供了一個Git存儲庫管理器,該管理器提供Wiki,問題跟蹤和持續集成/連續部署管道功能。
以上內容參考:網路-gitlab;網路-Github
③ GitLab存儲目錄遷移(數據)
在生產環境上遷移GitLab的目錄需要注意一下幾點:
遷移方法:
此方法適用於版本:11.4.5+
在做以上操作時,對創建軟鏈接這步特別重要,在做之前一定要保證第二步的備份正確,備份正確後能確保目錄「/var/opt/gitlab/git-data」調整為「/var/opt/gitlab/git-data_bak」,即「/var/opt/gitlab/git-data」不存在了,這樣才可以確保軟鏈接沒有問題。
④ 代碼管理-gitlab使用方法建議
對gitlab的使用主要從兩個角度去分析,一個是管理員,一個是開發提交者。
1.1 初始配置
瀏覽器訪問 http://伺服器IP:11000
第一次訪問會默認以root管理員用戶登陸,需要輸入兩遍密碼。
登陸後,可以看到,gitlab中主要圍繞著以下幾個概念進行操作:
group 團隊
如果是作為個人使用,那麼使用root用戶創建project就可以實現上傳下載代碼了。
如果是小團隊項目,就需要創建group,並在group中創建projects,添加user到group中,並給用戶相應的許可權。
1.1.1 關閉系統注冊功能
為了便於管理,可以選擇關閉gitlab的注冊功能.
在主界面左邊條依次選擇 **Settings -> General -> Sign-up restrictions** ,點擊 Expand 按鈕,在 **Sign-up restrictions** 選項處將勾點掉,下拉點擊 **Save changes** 就可以了。
1.1.2 修改網站logo
為了讓我們的gitlab看起來更符合項目,可以對網站的logo進行調整,在 **Appearance** 中對 導航條圖標(Navigation bar)、網站圖標(Favicon)、登陸頁圖標(Sign in/Sign up pages)進行設置。
1.2 代碼管理
1.2.1 團隊協作方式
gitlab團隊協作主要有兩種方式:
使用fork
* 項目負責人在gitlab上新建一個項目,並分享URL給開發人員
* 開發人員在負責人的gitlab項目頁面上點擊「fork」按鈕,將此項目fork到自己的gitlab上,這相當於是從負責人那拷貝了一份項目副本,無論開發人員如何修改代碼都不會影響負責人那master分支上的代碼
* 然後開發人員可以根據自己的項目分工,像對待普通項目一樣做clone、add、commit、push等操作
* 如果開發人員人為一個小模塊做好了,可以點擊「**New Merge Request**」按鈕,向負責人發送代碼合並請求,要合並的代碼文件也會以列表的形式同時發送給負責人,此時負責人會看到開發人員的請求,經審核如果代碼沒問題則會合並模塊,並向開發人員發送確認合並的通知
不使用fork
1. 負責人為開發人員分別創建開發分支(namedev_branch)
* 項目負責人在gitlab上新建一個項目,並為每一個開發人員創建一個開發分支(namedev_branch)
* 開發人員clone項目之後,經git branch檢查發現本地只有master分支,因此也需要把屬於自己的開發分支也一起獲取下來
> `git fetch origin namedev_branch:namedev_branch`
> `#拉取遠程的一個叫namedev_branch的分支,並在本地創建一個叫namedev_branch的分支和遠程的分支匹配`
* 切換到namedev_branch分支
> `git checkout namedev_branch`
* 之後的操作如同對待普通項目一樣
> `git add hello.py`
> `git commit -m "add hello.py"`
> `git push -u origin namedev_branch #需要注意,是push到遠程的namedev_branch分支`
~~這個方式感覺有風險,項目成員要注意自己的branch,很容易因為忽略branch直接向master提交變更,對代碼管理會添加麻煩~~
2. 負責人不為開發人員分別創建開發分支 (開發者自己創建)
* 雖然項目負責人不分別為開發人員創建分支,但是需要把他們添加到一個group中,否則開發人員在向項目push自己的開發分支時遇到許可權錯誤
* 開發人員在把項目clone之後需要為自己新建一個開發分支(namedev_branch),因為經由git branch查看發現本地只有master分支
> `git branch namedev_branch #新建分支`
> `git checkout namedev_branch #切換到開發分支`
> `git push origin namedev_branch #將新建的開發分支push到遠程項目上`
* 之後的操作如同對待普通項目一樣
> `git add hello.py`
> `git commit -m "add hello.py"`
> `git push -u origin namedev_branch #需要注意,是push到遠程的namedev_branch分支`
之後,兩種方式下項目負責人都可以在項目的gitlab主頁上看到每個開發人員的工作進度,並考慮何時merge開發人員的分支到master分支上以完善項目。
所有成員包括項目負責人除克隆、修改、提交代碼這些操作外,其它merge、建立分支等操作都在Gitlab網頁端進行。
所有分支中,master分支為主幹分支,此分支的代碼不允許直接修改,只能由其它分支(一般只由develop分支)發出merge請求,經項目管理員代碼審查通過後合並代碼,普通開發者無權執行push、merge等操作,確保此分支任何時候、任何tag處導出的項目代碼都是穩定可正常運行的代碼;develop分支為開發分支,可以接受由其它分支發起的merge請求,同樣只能經項目管理員代碼審查通過後予以合並。
1.2.2 團隊初始化
假設我們項目組分為兩個組team1、team2,每個組有不同的組員和對應的不同的子項目,對項目組用戶開放項目的訪問,使用fork方式來做代碼的更新和提交。
因此我們的gitlab的架構大概是這樣的:
1. 創建Group,在主界面上方的加號選擇**New Group**,創建Group只需要填寫 Group path 、Group name、Description 幾個選項就可以了。Visibility Level選項選擇 Private-私有倉庫
2. 創建user,對需要加進來的團員,由管理員負責給他們創建相應的用戶,創建用戶需要填寫合法的Email地址,正常情況下會向這個Email發送登陸的初始連接,但是如果不方便的話,也可以在創建後由管理員修改這個user的初始登陸密碼。
3. 選中Group添加相應的user,user的角色分以下幾種:Guest、Reporter、Developer、Maintainer、owner,基本上我們只會用到guest和developer兩種。
4. 在Group中創建project,選中Subgroup,點擊 New project 來創建新的項目。
5. 項目完成創建後,相應的團隊成員也可以使用fork來獲取項目的內容,fork後屬於成員自己的項目的git地址是不一樣的,這個一定要注意,後面提交代碼都是提交到這個fork項目的地址,只有在網頁端發起merge request 以及從master更新fork項目時才會用到主項目
1.2.3 代碼提交管理
當有新的代碼提交請求時,項目負責人可以通過查看merge requests獲取到來自fork或者branch的合並請求:
接受合並時,可以選擇 Open in Web IDE 來檢查審核變更的內容,確認沒問題後點擊Merge按鈕來合並。
1.2.4 活躍度查詢
右邊條選擇 Project -> Activity 可以看到push、merge、issue、comment(討論)等信息
選擇 Cycle Analytics 可以看到圖形化的分析內容,這部分需要有足夠的數據支持,還需要好好研究下。
> Cycle Analytics measures the time it takes to go from an idea to proction for each project you have.
> 周期分析功能是監測從每個項目一個想法到產品所需的時間。
## 項目開發方式 issue+milestone+label
如何結合gitlab提供的這些功能來完整的梳理、管理一個產品、或者一個模塊的開發方式
定義一個開發任務從開始如何分配到最後如何標識完成的過程。
這一塊是用好gitlab的重點,否則就是用gitlab來做一個簡單的代替svn的版本管理工具
2.1 fork項目
項目成員首先利用瀏覽器進入gitlab的系統後,查看自己的group和project,並fork自己需要參與開發的project。
> 在project的detail界面中點擊fork按鈕。
fork時會提示選擇**Namespace**,這個選擇是用來決定這個工程所屬的,可以選Users,或者選擇Groups,這個會影響到後面工程的url,項目成員都統一選擇users本人的命名空間就可以了。
2.2 獲取fork項目
項目內容獲取主要使用git客戶端工具來實現,項目開發人員首先要在本機安裝git客戶端軟體,[下載地址](https://www.git-scm.com/)
安裝時基本都採用默認設置就可以了。
安裝完成後我們主要使用Git Bash命令行工具來工作。
2.3 設置賬戶信息
設置修改本地對應的gitlab用戶和郵箱。
2.4 配置ssh連接信息 (windows下沒調成功)
1. 創建 SSH密鑰
通過下面的命令生成密鑰,將命令中的[email protected]替換為注冊Gitlab時用的Email地址。
`ssh-keygen -t rsa -C "[email protected]"`
注意:Enter passphrase (empty for no passphrase) :時,可以直接按兩次回車鍵輸入一個空的 passphrase;也可以選擇輸入一個 passphrase 口令,如果此時你輸入了一個passphrase,請牢記,之後每次提交時都需要輸入這個口令來確認。
2. 獲取公鑰內容
SSH密鑰生成結束後,根據提示信息找到SSH目錄(通常ssh密鑰保存路徑均為~/.ssh 目錄),會看到私鑰id_rsa和公鑰id_rsa.pub這兩個文件,不要把私鑰文件id_rsa的信息透露給任何人。
用記事本打開id_rsa.pub,復制裡面的所有內容以備下一步使用。
3. 將密鑰中的公鑰添加到Gitlab
登錄Gitlab的web站點,進入個人資料設置 - SSH Keys頁面,將第2步所獲得的內容粘貼在文本框key內,並填寫title以便記憶,而後保存。
2.5 克隆代碼
在gitlab網頁端進入project的detail中可以下拉看到提示的代碼信息。
這樣在本地就可以獲取到fork的項目內容。
2.6 正常代碼更新提交
2.7 更新本地倉庫內容命令
2.8 請求合並到master
在網頁端進入到project的detail界面後,如果fork的項目代碼有變動,在界面右上角會提示**Create merge request** 來提交合並申請
點擊創建後,輸入本次提交的title和描述,描述要說明本次提交修改的腳本、修改的內容等信息,便於管理員審核。
2.9 【關鍵】同步最新master庫內容
fork後的項目不會自動從master主分支獲取更新,需要負責fork的開發人員自己更新版本
如何更新已經fork的代碼:
* 首先要先確定一下是否建立了主repo的遠程源:
在本地項目庫下執行 `git remote -v`
* 如果裡面只能看到你自己的兩個源(fetch 和 push),那就需要添加主repo的源:
* fetch源分支的新版本到本地
執行 `git fetch upstream`
執行後本地庫的內容會更新為與master庫一致的內容
* 合並本地兩個版本的代碼:
執行 `git merge upstream/master`
* 將在本地合並後的代碼push到自己的github上去,以更新github上fork的倉庫
執行 `git push origin master `
執行後網頁端的倉庫內容更新為合並後的新版本
對於開發人員來說,會使用fork克隆項目,會使用本地git客戶端對項目內容進行更新、編輯、提交,會在網頁端提交代碼合並申請並且規范編寫申請描述就足夠了。
對管理人員來說,使用gitlab能方便的知道每個員工負責的內容的提交進度情況,方便對他們提交的代碼進行質量的檢查走讀,還有更多統計類、開發進度管理等等功能,但是需要熟練掌握gitlab上的一些功能使用方法,比如使用issue來管理開發任務分配,使用milestone來制定和管理里程碑等等。
# 3. gitlab使用開發規范
參考:[gitlab使用開發規范](https://blog.csdn.net/ruanhao1203/article/details/80440824)
⑤ 怎麼連接gitlab的資料庫
將GitLab的資料庫導入阿里雲PostgreSQL RDS
GitLab的資料庫用的是PostgreSQL,之前由於阿里雲RDS不支持PostgreSQL,只能將GitLab的資料庫部署在雲伺服器上。
6月1日得知阿里雲推出了PostgreSQL RDS,於是立馬將GitLab的資料庫遷移至PostgreSQL RDS。
下面分享一下遷移的主要操作步驟:
1)在GitLab伺服器上備份GitLab資料庫
操作命令:
sudo gitlab-rake gitlab:backup:create SKIP=db
註:這個命令原本是只備份資料庫,但實際運行時也會備份repositories,可以在完成資料庫備份時,ctrl+C直接退出。
資料庫備份成功後,會在 /var/opt/gitlab/backups/db 文件夾中看到 database.sql 文件,導入時只需將這個文件導入到阿里雲RDS。
2)在阿里雲RDS中創建GitLab的資料庫帳戶與資料庫
在阿里雲RDS控制台首頁點擊「登錄資料庫」,進入idb.rds.aliyun.com,選擇對應的PostgreSQL實例。
a)創建2個帳戶:gitlab, gitlab-psql
b)創建gitlabhq_proction資料庫,所有者為gitlab。
3) 在GitLab伺服器上進行導入操作
a) cd /var/opt/gitlab/backups/db
b) psql -h [RDS實例網址] p 3433 -d gitlabhq_proction -U gitlab -f database.sql
⑥ 如何將GitLab的資料庫從PostgreSQL遷移至MySQL
如何將GitLab的資料庫從PostgreSQL遷移至MySQL
轉資料庫偷懶的做法就是:用一台裝有sql server的機器,運行DTS程序(導入導出數據),然後源選擇postgresql,目標選擇mysql,直接導。。。記得裝ms的兩個資料庫驅動程序 很多情況下,簡單的資料庫一下就能導過去,但是出於需要,還是建議人工建表,核對欄位比較穩妥
⑦ Gitlab的備份與恢復
一、Gitlab的備份目錄路徑設置
Gitlab的備份目錄可以在Gitlab的配置文件中設置:
創建備份目錄
最後使用下面命令重載gitlab配置文件,使上述修改生效!
二、GItlab的備份
手動使用命令備份gitlab
然後查看下備份文件(文件許可權是設定好的644)
編寫備份腳本,結合crontab實施自動定時備份,比如每天2點備份一次
然後加入到crontab中
三、Gitlab的恢復
GItlab只能還原到與備份文件相同的gitlab版本。
假設在上面gitlab備份之前創建了test項目,然後不小心誤刪了test項目,現在就進行gitlab恢復操作
1、停止相關數據連接服務
查看gitlab狀態
2、通過之前的備份文件進行恢復(這里備份路徑我自定義的/data/gitlab/backups,默認的是/var/opt/gitlab/backups)
最後再次啟動Gitlab
查看gitlab狀態
恢復命令完成後,可以check檢查一下恢復情況