GitLab的CI自動編譯

使用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編譯了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容