使用gitlab進(jìn)行代碼版本管理時,希望能夠在將本地代碼push到遠(yuǎn)程分支的時候或者在將遠(yuǎn)程分支請求合并到master主分支上的時候,為了確保代碼的安全性(以防存在編譯錯誤的代碼合入版本中),可以自動進(jìn)行代碼的編譯。只有編譯通過了才允許將代碼合入主分支。
下面介紹如何使用gitlab的CI/CD實現(xiàn)上述期望功能。
一、安裝并啟動gitlab-runner
首先在安裝gitlab的服務(wù)器上安裝gitlab-runner,安裝命令如下:
sudo yum install gitlab-runner
安裝成功后將gitlab-runner啟動起來。 進(jìn)入安裝目錄下的bin/下:
gitlab-runner start
二、配置runner
2.1 獲取runner配置信息
在gitlab項目頁面選擇左側(cè) Settings ——> CI/CD ——> Runner settings ——> Expand
可以看到下面信息:
runner-settings.PNG
圖中Setup a specific Runner manually模塊下的2和3是下一步注冊配置服務(wù)器上的runner需要的信息。
2.2 配置runner信息
在安裝gitlab-runner的服務(wù)器端注冊新的runner:
gitlab-runner register
按照提示輸入配置信息:
[root@awaken120 bin]# gitlab-runner register
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://1.1.1.1/ #需根據(jù)上述頁面的配置信息2填寫URL
Please enter the gitlab-ci token for this runner:
M************** #需根據(jù)上述頁面的配置信息3填寫token
Please enter the gitlab-ci description for this runner:
[awaken120]: project #描述隨便寫
Please enter the gitlab-ci tags for this runner (comma separated):
project #tag 后面的項目文件.gitlab-ci.yml中用到
Whether to run untagged builds [true/false]:
[false]: true #是否運行未打標(biāo)簽的項目,選擇的true
Whether to lock Runner to current project [true/false]:
[false]: #直接回車,選擇false
Registering runner... succeeded runner=M8c-SAdx
Please enter the executor: docker-ssh+machine, kubernetes, parallels, shell, docker+machine, virtualbox, docker, docker-ssh, ssh:
shell #此處選擇的shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
2.3 項目中配置.gitlab-ci.yml
在項目根目錄下增加.gitlab-ci.yml文件,內(nèi)容:
variables:
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
corresponding plugins.
MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
stages:
- build
- test
- deploy
cache:
paths:
- .m2/repository
build-job:
stage: build
tags:
- project
only:
- branches
except:
- master@project/project
script:
- 'mvn compile'
# For merge requests do not `deploy` but only run `test`.
# See https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
test-job:
stage: test
tags:
- project
only:
- branches
except:
- master@project/project
script:
- 'mvn test'
再次將本地帶有.gitlab-ci.yml文件的分支push到遠(yuǎn)程分支,gitLab就會自動CI編譯了。