公司的 gitlab 之前一直都有相應的 runner 可供使用的,但是最近機器遷移之後,就沒人重建 runner 了。所以,我就自己借了臺虛機來安裝 gitlab runner 來做 CI。
前提
- 操作環境:CentOS 7
- gitlab 版本: GitLab Community Edition 8.12.4
- 安裝過程使用的用戶: root
大概步驟如下:
添加 repository (Add the repository)
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
安裝
gitlab-ci-multi-runner
(Install gitlab-ci-multi-runner)
yum install gitlab-ci-multi-runner
註冊 runner (Register the Runner)
1. 如果要在同一臺機器上註冊多個 runner,只需要反覆執行該步驟。
2. 如果要同時處理多個 build 的話,需要進 /etc/gitlab-runner/config.toml
文件配置 concurrent
它的值爲 >1 的值
gitlab-ci-multi-runner register
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.com
Please enter the gitlab-ci token for this runner
xxx
Please enter the gitlab-ci description for this runner
my-runner
INFO[0034] fcf5c619 Registering runner... succeeded
Please enter the executor: shell, docker, docker-ssh, ssh?
docker
Please enter the Docker image (eg. ruby:2.1):
ruby:2.1
INFO[0037] Runner registered successfully. Feel free to start it, but if it's
running already the config should be automatically reloaded!
以上步驟,可以參見官方說明
通過上面步驟安裝的 gitlab runner 默認情況下是最新版本的,它可能與你的 gitlab 版本不兼容。比如,我在安裝好之後,就被提示不兼容了:
GitLab Runner >= 9.0 can be used ONLY with GitLab CE/EE >= 9.0
那怎麼辦呢?還能怎麼辦啊,只好去找與 gitlab 版本相匹配的 gitlab runner 嘍,除非你能說服公司的相關人員將 gitlab 升級到最新版本。(反正在我們公司這點是很難的。。。)
還好,我找到了官方安裝低版本說明
在這個頁面中,它列出來 gitlab 與 gitlab runner 的兼容關係表,根據表中的內容,我決定安裝 1.10.7 這個版本的。(PS:所有版本列表可以參見 gitlab 的 release note )
yum install gitlab-ci-multi-runner-1.10.7-1
這樣 1.10.7 版本的 runner 將被安裝好,然後,你只需要再執行上面的 register 步驟就可以了。
另外,我的項目是基於 maven 的 java 項目,我的 .gitlab-ci.yml 是這麼寫的:
build:
script:
mvn clean compile -DskipTests
所以,明顯的,爲了能夠讓 runner 運行成功,我們還得在 runner 所在的機器上安裝 JDK 和 Maven。
這裏,我建議大家還是手動安裝 這兩個比較好。如果通過 yum install maven
來安裝的話,將會自動下載 OpenJDK,這可能不是我們想要的哦。各位自己考慮。
最後,需要說明的一點,當 runner 運行時,它使用的是 gitlab-runner 這個用戶。這個用戶哪裏來的?它是你在 yum install gitlab
的時候自動安裝好的。
所以,我們需要爲這個 gitlab-runner 用戶配置環境變量,讓它能執行 mvn 變量。比如,我的設置是:
# su - gitlab-runner
# vim ~/.bashrc
添加以下內容
export JAVA_HOME=/usr/java/jdk1.7.0_80
export MAVEN_HOME=/opt/apache-maven-3.3.9
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
保存退出(:wq!)
# source ~/.bashrc
參考 blog