Ubuntu16.04安裝gitlab runner並配置CI

Ubuntu16.04安裝gitlab runner並配置CI

持續集成

GitLab-CI

GitLab-CI就是一套配合GitLab使用的持續集成系統(當然,還有其它的持續集成系統,同樣可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以後的版本是默認集成了GitLab-CI並且默認啓用的。.gitlab-ci.yml的腳本解析就由它來負責。

GitLab-Runner

GitLab-Runner是配合GitLab-CI進行使用的。一般地,GitLab裏面的每一個工程都會定義一個屬於這個工程的軟件集成腳本,用來自動化地完成一些軟件集成工作。當這個工程的倉庫代碼發生變動時,比如有人push了代碼,GitLab就會將這個變動通知GitLab-CI。這時GitLab-CI會找出與這個工程相關聯的Runner,並通知這些Runner把代碼更新到本地(服務器)並執行預定義好的執行腳本。

在項目根目錄創建.gitlab-ci.yml

當有新內容push到倉庫後,GitLab會查找是否有.gitlab-ci.yml文件,如果文件存在, Runners 將會根據該文件的內容開始build 本次commit。
.gitlab-ci.yml 使用YAML語法, 你需要格外注意縮進格式,要用空格來縮進,不能用tabs來縮進。

基本的.gitlab-ci.yml結構如下:

stages:
  - build
  - test
  - deploy

before_script:
  - echo "Restoring Packages..."

build_job:
  stage: build
  script:
  - echo "Release build..."
  except:
  - tags

test_job:
  stage: test
  script:
  - echo "Tests run..."
  - cd cds.ci.test
  - gradle test
  tags:
     - wikirunner

最上面的stages配置意思是,先構建階段爲build的job,然後再構建階段爲test的job,下面build_job和test_job都是job,如果不配置stages,默認順序爲build - test - deploy。

話不多說,接下來安裝Gitlab Runner

在需要持續集成的項目所在主機安裝gitlab-runner。

Gitlab Runner目前支持package安裝了,具體可以查看官網

安裝過程

# For Debian/Ubuntu/Mint
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt-get install gitlab-runner
# To install a specific version of GitLab Runner:
# for DEB based systems
apt-cache madison gitlab-runner
sudo apt-get install gitlab-runner=10.0.0
# 啓用命令啓動Runner
sudo gitlab-runner run
# For RHEL/CentOS/Fedora
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
sudo yum install gitlab-runner
# To install a specific version of GitLab Runner:
# for RPM based systems
yum list gitlab-runner --showduplicates | sort -r
sudo yum install gitlab-runner-10.0.0-1
sudo gitlab-runner run

在gitlab代碼庫中註冊gitlab-runner

首先打開代碼庫

進入倉庫->settings->CI/CD Pipelines,看到如下頁面
gitlabrunner

在安裝有gitlab-runner的主機上運行

sudo gitlab-runner register
# 會要求填入url和token,就是上圖中遮起來的1和2.
sudo gitlab-runner start
# 此時gitlab-runner就配置完成了,代碼庫中有push就會觸發持續集成

遇到的問題

push之後一直顯示pending,點進去之後報錯,沒有分配的runner。

這個可能是gitlab-runner register的時候配置了tags,而.gitlab-ci.yml中沒有設置tags,導致沒有分配的runner。可以點擊runner(上圖中綠點後面被遮住的部分)查看runner的tags並在.gitlab-ci.yml中進行相應配置。或者點擊runner(上圖中綠點後面被遮住的部分)後面的編輯圖標然後勾選Indicates whether this runner can pick jobs without tags

runner運行過程中報錯沒有權限

CI 默認執行用戶爲 gitlab-runner,可以通過以下命令查看。

$ ps aux | grep gitlab

/usr/bin/gitlab-ci-multi-runner run --working-directory /home/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --syslog --user gitlab-runner
# --user後面的就是gitlab-runner的用戶

可以爲gitlab-runner用戶添加sudo權限。

# 切換到root賬號下
$ su
# 添加sudo文件的寫權限
$ chmod u+w /etc/sudoers
# 編輯sudoers文件
$ vi /etc/sudoers
# 添加如下內容 允許用戶gitlab-runner執行sudo命令,並且在執行的時候不輸入密碼
gitlab-runner ALL=(ALL) NOPASSWD: ALL
# 撤銷sudo文件寫權限
$ chmod u-w /etc/sudoers

或者修改執行gitlab-runner的用戶
修改 /etc/systemd/system/gitlab-runner.service--user之後的gitlab-runner爲擁有權限的用戶。
重新加載配置文件,並啓動

sudo systemctl daemon-reload
sudo systemctl restart gitlab-runner

參考博客

https://blog.csdn.net/ligang2585116/article/details/105316087/
https://www.jianshu.com/p/39881f224077
https://blog.csdn.net/qq_27520051/article/details/80552220

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