GitLab的CI自动编译

使用gitlab进行代码版本管理时,希望能够在将本地代码push到远程分支的时候或者在将远程分支请求合并到master主分支上的时候,为了确保代码的安全性(以防存在编译错误的代码合入版本中),可以自动进行代码的编译。只有编译通过了才允许将代码合入主分支。

下面介绍如何使用gitlab的CI/CD实现上述期望功能。

一、安装并启动gitlab-runner

首先在安装gitlab的服务器上安装gitlab-runner,安装命令如下:

sudo yum install gitlab-runner

安装成功后将gitlab-runner启动起来。 进入安装目录下的bin/下:

gitlab-runner start

二、配置runner

2.1 获取runner配置信息
在gitlab项目页面选择左侧 Settings ——> CI/CD ——> Runner settings ——> Expand

可以看到下面信息:


runner-settings.PNG

图中Setup a specific Runner manually模块下的2和3是下一步注册配置服务器上的runner需要的信息。

2.2 配置runner信息
在安装gitlab-runner的服务器端注册新的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/              #需根据上述页面的配置信息2填写URL
Please enter the gitlab-ci token for this runner:
M**************              #需根据上述页面的配置信息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                #是否运行未打标签的项目,选择的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文件,内容:

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到远程分支,gitLab就会自动CI编译了。

你可能感兴趣的:(GitLab的CI自动编译)