最近一些使用GitLab的記錄與心得

建立時間: 2018-04-29 14:02:47
更新時間: 2019-04-17 23:00:50

相關參考資訊

 

安裝

安裝就沒什麼好特別說的

就照著官方的提供的步驟安裝就對了

只是要注意第二點的EXTERNAL_URL要設定成自己的gitlab網址

一開始自己就偷懶沒看仔細說明一直複製command貼上執行

結果不小心把範例的網址給設定下去

當然初始設定錯誤也是可以重新設定啦

GitLab有Maintenance commands可以調整

在Gitlab裝好後找到/etc/gitlab/gitlab.rb

然後搜尋external_url改成自己要的網址(localhost也行)

接著下command gitlab-ctl reconfigure重新起動GitLab就可以了

 

常用的command

如果你GitLab是裝在local

可能會需要下面幾個command

# 啟用開機時自動啟動GitLab
sudo systemctl enable gitlab-runsvdir.service

# 停用開機時自動啟動GitLab
sudo systemctl disable gitlab-runsvdir.service

# 手動啟動GitLab
sudo systemctl start gitlab-runsvdir.service

# 重新啟用設定
sudo gitlab-ctl reconfigure

# 重啟GitLab服務
sudo gitlab-ctl start

# 關閉GitLab服務
sudo gitlab-ctl stop

 

開始使用

其實用起來跟Github很像

只是他多了更多專案管理的功能

對Developer來說跟Github一樣要新增SSH Key才能存取Repo

 

專案有Wiki功能能夠紀錄專案的一些瑣碎的事情

 

issue功能部份也很完整

包含assign、deadline、label、milestone等功能

 

 

 

 

Web IDE

一開始在專案首頁看到這個按鈕我還以為我看錯了

點進去看還真的是IDE

左邊的專案結構側選單、code highlight、基本編輯等功能應有盡有

而且還可以一次開多個檔案

 

CI/CD

我決定嘗試GitLab最大的動機

就是聽說GitLab的CI/CD很強大

開始之前要先了解幾個GitLab定義的名詞

  • Job: 在某些定義的狀況下, 要讓GitLab自動執行工作
  • Runner: 執行Job的一個服務(GitLab是說A 'Runner' is a process which runs a job)

 

設定Runner

首先要設定Runner才能執行Job

GitLab Runner可以使用Kubernetes自動建立或是手動建立

不過Kubernetes我還不熟

這邊就先使用GitLab Runner手動建立Runner(安裝GitLab Runner說明請參閱官方文件)

GitLab Runner安裝完後前往Runnder設定頁(Setting > CI/CD > Runners settings)

可以看到Setup a specific Runner manually

這些這邊的URLToken等等會用到

接著依照官方文件註冊Runner

註冊Runnder時的URLtoken就是用上面Runner設定頁提供的

 

建立.gitlab-ci.yml

這個是我覺得GitLab最猛的地方

只要你專案有.gitlab-ci.yml這個CI/CD的設定檔

就能在push的時候或是指定的hook進行CI/CD

這邊有.gitlab-ci.yml的範例(更多設定檔說明可參考官方文件)

stages:
  - test
  - build
  - deploy

test:
  stage: test
  script: echo "Running tests"

build:
  stage: build
  script: echo "Building the app"

deploy_staging:
  stage: deploy
  script:
    - echo "Deploy to staging server"
  environment:
    name: staging
    url: https://staging.example.com
  only:
  - master

 

當你加到專案中push後就會看到Job執行的report

 

其他

502 Error - GitLab is taking too much time to respond

GitLab的unicorn預設使用的port為8080

如果因為port衝突出現GitLab is taking too much time to respond的502 Error

需要修改/etc/gitlab/gitlab.rb內的unicorn port設定

unicorn['listen'] = '127.0.0.1'
unicorn['port'] = 3002

 

接著重新載入設定並重啟GitLab即可

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart