GitLab-CI持续集成服务主要包括gitlab、runner 2个模块。Gitlab主要负责代码文件的管理;runner则负责版本编译、存储、推送等任务。
GitLab服务公司原有已经搭建。只需搭建runner服务,并与gitlab对接即可。
安装和注册runner
- 安装runner
在目录/etc/yum.repos.d/ 新建文档gitlab-runner.repo
内容如下(根据Linux版本选择)
- CentOS6版本:
[gitlab-runner]
name=gitlab-runner
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el6
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
- CentOS7版本:
[gitlab-runner]
name=gitlab-runner
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
然后执行如下命令
sudo yum makecache
sudo yum install gitlab-runner
启动和关闭命令如下
sudo gitlab-runner start
sudo gitlab-runner stop
- 注册runner
- 执行注册命令
sudo gitlab-runner register
出现
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
时,输入gitlab的地址,例如http://192.168.159.129
-
出现
Please enter the gitlab-ci token for this runner:
时,输入gitlab-ci的token,token的获取方法是(打开所需要Token的项目的主页进入CI/CD setting Setting -> CI/CD -> Genneral pioelines settings -> Expand
获得一个token如:HkY-dqp3BytPFPVoJni2
)
出现
Please enter the gitlab-ci description for this runner:
时,按自己需要输入一个描述,例如:testrunner
出现
Please enter the gitlab-ci tags for this runner (comma separated):
,也按自己需要输入,例如test
出现
Please enter the executor: ssh, virtualbox, docker+machine, docker-ssh+machine, docker, parallels, shell, docker-ssh, kubernetes:
,按自己需要选择,这里我选shell
-
此时在项目的
设置->CI/CD->Runners设置
可以看到这个runner,绿色时代表是启用的
-
使runner可以公用
-
直接注册一个共享runner
管理区域->概述->Runners
- 设置
gitlab-ci.yml
文件,例子如下,可以根据自己的项目修改
before_script:
- version=`git log --pretty=format:"%H" -n 1 | cut -c1-10`(提交的版本)
- gitBranch=`git describe --contains --all HEAD|tr -s '\n'`(提交的分支)
- DST_PATH=/home/ivs/$gitBranch && mkdir -p $DST_PATH(放包的目录)
- GRADLE_PATH=/utry_workspace/ivs/$gitBranch(代码下载和打包的目录)
- echo "version:"$version
- echo "gitBranch:"$gitBranch
- echo "DST_PATH:"$DST_PATH
- echo "GRADLE_PATH:"$GRADLE_PATH
build_HelloJava:
script:
- rm -rf $GRADLE_PATH/HelloJava
- cp -rf ../HelloJava $GRADLE_PATH/
- cd $GRADLE_PATH/HelloJava
- gradle clean
- gradle war
- cp -f build/libs/HelloJava.war $DST_PATH
- echo "HelloJava - $version" > $DST_PATH/HelloJava_commit
- 在项目的pipeline中查看执行结果,这个包存放在目录
/utry_workspace/ivs/remotes/origin/develop1
- 手动触发
-
CI/CD->pipeline->Run PIpeline->选择一个分支->创建流水线
-
设置->CI/CD->流水线触发器->增加触发器
,复制授权码到下面并设置你的分支或标签名。此例子是将触发重新构建。
curl -X POST \
-F token=TOKEN \
-F ref=REF_NAME \
http://192.168.159.129/api/v4/projects/2/trigger/pipeline