gitlab簡單使用教程【轉】


平時一直是用git來管理代碼倉庫,也用過一段時間github,但是github免費版不能建私有倉庫。后來轉到了bitbucket,后來被atlassian收購后有點不適應,而且在國內訪問經常連不上。還是gitlab比較好用,因為公司也是用gitlab,所以上手很快,新增的構建功能非常方便。

1. GitLab.com

gitlab是開源項目,官網也提供了社區版安裝包,如果有自己服務器的話可以私有化部署一個,安裝教程參考官網,只需要簡單幾步就能運行,地址https://about.gitlab.com/installation/。

但是對於個人開發者來說要求的服務器配置有點高,1核1G的服務器也只能勉強跑起來。另一種選擇就是使用GitLab.com,這是官方提供的免費平台,功能和社區版一樣,有人在維護、更新,新功能會比較多,缺點就是偶爾抽風。地址https://gitlab.com/users/sign_in > GitLab.com offers free unlimited (private) repositories and unlimited collaborators.

這是官方的宣傳語,提供無限的免費的私人的倉庫,無限制的協作者,條件非常誘人。

注冊流程比較簡單,填一下username和email就差不多了,這也將是git空間的標記,名字不要取得太隨意就行了。

2. 創建項目

登錄后點擊右上角的加號(New project)。

  • Project path:如果你屬於group的話可以選group名字,這樣項目就會放在對應group下,一般團隊項目比較好用。
  • Project name:你的項目名字
  • Import project from:可以從多個github、bitbucket等主流托管平台導入項目。
  • Project description:項目描述,可選
  • Visibility Level:項目可見級別
    • Private:私有項目,需要授權才能訪問,適合個人、團隊開發。
    • Internal:內部項目,注意只要登錄賬號就能訪問,適合開源貢獻代碼。
    • Public:公開項目,不用登錄就能訪問,適合分享項目。

點擊create,創建項目,進入空項目,會出現初始化步驟,可以用ssh和https方式來上傳代碼,推薦ssh,比較安全。

3. 配置ssh(可選)

如果本地沒有ssh key,用ssh-keygen初始化一個,可以參考我之前寫的github教程git初始化那部分https://wuyuans.com/2012/05/github-simple-tutorial/#toc-3

有ssh key后添加到后台,點擊右側頭像,下拉菜單里選settings,在頂部的tab里點擊SSH Keys,或者直接訪問https://gitlab.com/profile/keys。

Key就是.ssh/id_rsa.pub文件內容,title填自己知道的就行,盡量語義化點。

Add key,完成。

4. 上傳項目

回到我們創建的空項目頁面,在項目名稱下面選擇傳輸協議,ssh或者https,下面教程里的url會跟着變。

之后按照下面的教程來做就行了,最后push

  1. git push -u origin master

完成,這時項目頁面應該就有東西了,后面就可以用正常的git命令來維護代碼倉庫了。

5. 配置CI(持續集成)

如果只是要一個git代碼托管的話上面幾步已經足夠了,現在開始介紹gitlab提供的持續集成功能,這對於需要打包、發布的人來說非常方便。

5.1 Pipelines

一個pipeline就是一次持續集成任務,一般由一次push觸發,在網頁上對項目的修改、merge也會觸發pipline。pipline由Runner執行,Runner有兩種:

  • Specific Runners:私有runner,部署和執行在自己服務器上,優點是安全、速度快,缺點是需要提供服務器,部署教程https://docs.gitlab.com/runner/install/linux-repository.html
  • Shared Runners:共享runner,官方提供的runner,優點是免費,缺點是會偶爾抽風、或者速度慢

5.2 Jobs

pipline由多個job組成,一個job會發給一個runner來執行,所以各個job之間的數據不是共享的,除非使用cache。所以盡量把一些有依賴的步驟放到一個job里,或者把一些通用步驟放到before_script里,這個后面會提到。

5.3 stages

stage是對job的分組,同一個stage里的job是並行的,兩個stage之間是串行的

5.4 .gitlab-ci.yml

要想配置上面說的這些,需要在項目根目錄新建.gitlab-ci.yml文件,文件格式為yaml,教程https://docs.gitlab.com/ee/ci/yaml/README.html。舉個例子,這是我www工程配置文件的簡化版,使用golang編譯:

  1. image: golang:latest
  2. before_script:
  3. - ln -s /builds/wuyuans/www /go/src/www
  4. - cd /go/src/www
  5. - mkdir bin
  6. stages:
  7. - build
  8. - deploy
  9. build_web:
  10. stage: build
  11. script:
  12. - go build -v -o bin/web www/web
  13. except:
  14. - release
  15. build_service:
  16. stage: build
  17. script:
  18. - go build -v -o bin/service www/service
  19. except:
  20. - release
  21. deploy_web:
  22. stage: deploy
  23. script:
  24. - go build -v -o bin/web www/web
  25. - scp bin/web root@${HOST_1}:/bin/
  26. environment:
  27. name: www/web
  28. url: http://$CI_ENVIRONMENT_SLUG.wuyuans.com
  29. when: manual
  30. only:
  31. - release

5.4.1 image

編譯使用的docker鏡像,如果是golang的話可以用golang:latest,使用最新版golang,其他可以在docker hub查https://hub.docker.com/_/golang/

5.4.2 before_script

每個job執行前都會執行before_script里的步驟,主要是做一些環節初始化,比如我這里把工程目錄鏈到了GOPATH下,這樣方便使用go命令。也可以在這里做一些go get工作

5.4.3 stages

我分了兩個stage,build和deploy。build里有build_web、build_service,deploy里的是deploy_web,名字可以隨便,主要是job里的stage字段需要和stages里定義的對應上。

5.4.4 build_web、build_service

script里的是執行的命令,做go build的工作,except表示這個job不能在release分支執行。

5.4.5 deploy_web

script和前面一樣。environment用來標記發布的名字,我們可以用environment來管理發布版本、回滾等。when表示執行時間,默認是always每次都會執行,manual表示需要在后台手動執行,這樣在不需要所有deploy job都執行的時候手動deploy項目。only表示只在release分支執行。

5.5 Environments

在.gitlab-ci.yml里配置了environment后,job執行完后會在項目頁面里的Pipelines->Environments下看到這次job,他會按照配置里的name來合並,每次job都可以重做,也就是可以用來做項目的重發和回滾,右邊有相對於的按鈕,很方便。

6. 總結

gitlab有很多功能非常實用,比如上面講到的Pipelines、Environments等,還有像Graph(以前叫network)可以顯示所有分支的樹狀結構,這對於在多個分支里來回切換、分不清在哪個分支提交的人來說很直觀。而且gitlab對於權限控制提供了很多的選項,很適合團隊合作。然而缺點也還是有的,因為是官方托管的平台,日常維護、偶爾抽風什么的,還有被牆的風險什么的。。。如果是個人用戶應該關系不大,如果是團隊的話還是自建gitlab社區版,功能應該差不多,畢竟安全和穩定對團隊來說是比較重要的。

作者:wuyuan 本文來自 Wuyuan's Blog 轉載請注明,謝謝! 文章地址: https://wuyuans.com/2017/05/gitlab-simple-tutorial


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM