CICD初探(二)Gitlab通过GitLab-Runner持续集成

Mon Aug 13, 2018

1300 Words|Read in about 3 Min
Tags: devops  

GitLab、GitLab-CI、GitLab-Runner

持续集成在之前都文章中已经有过简单的介绍CICD扫盲

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

这里简单介绍一下gitlab相关的应用

GitLab-CI

GitLab-CI就是一套配合GitLab使用的持续集成系统(当然,还有其它的持续集成系统,同样可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以后的版本是默认集成了GitLab-CI并且默认启用的。

GitLab-Runner

GitLab-Runner是配合GitLab-CI进行使用的。一般地,GitLab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知GitLab-CI。这时GitLab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本。

GitLab-CI与GitLab-Runner关系示意图 GitLab-CI与GitLab-Runner关系示意图

Docker中部署GitLab-Runner

安装Docker

参考Docker安装

启动指定配置文件目录的gitlan-runner(如我的配置目录为下)

/srv/gitlab-runner/config

docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest
注意: 在Mac下使用/Users/Shared 来替代 /srv.

或者可以使用挂载自定义数据卷并运行runner:

docker run -d --name gitlab-runner-config \
    -v /etc/gitlab-runner \
    busybox:latest \
    /bin/true

docker run -d --name gitlab-runner --restart always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    --volumes-from gitlab-runner-config \
    gitlab/gitlab-runner:latest
注意上述是启动一个已经有配置的gitlab-runner

Register

(从头开始配置,上面的可以不用看,官方文档顺序就这么写的,我看到这里也懵逼了。。。。)

如果你从来没有跑过gitlab-runner,也按照我上面的教程进行到这里了,那么请执行下面两行:

docker stop gitlab-runner
docker rm gitlab-runner

下面才是我们第一次的实践,请运行以下命令,/srv/gitlab-runner/config为上一步的配置目录(和我不一样可以换成自己的):


docker run --rm -d -t -i -v /srv/gitlab-runner/config:/etc/gitlab-runner --name gitlab-runner gitlab/gitlab-runner register \
  --non-interactive \
  --executor "shell" \
  --url "http://10.100.7.46:8088" \
  --registration-token "yWZLWrCcynm9WYc-Fdwy" \
  --description "blink" \
  --tag-list "blink" \
  --run-untagged \
  --locked="false"

docker run -d -t -i -v /srv/gitlab-runner/config:/etc/gitlab-runner --name gitlab-runner gitlab/gitlab-runner register

把上面的参数换成自己的,我这里使用的是最简单的shell,token获取参考下面,上述第一步是注册,第二步是启动gitlab-runner

项目token的截图: 打开自己要cicd的项目 2 点击cicd 3 点击Expand 4 查看token并复制出来 5

到这里gitlab-runner就算部署成功了,下面是触发ci

编辑一个最简单的.gitlab-ci.yml,然后提交到gitlab

# 定义 stages
stages:
  - build
  - test
# 定义 job
job1:
  stage: test
  script:
    - echo "I am job1"
    - echo "I am in test stage"
# 定义 job
job2:
  stage: build
  script:
    - echo "I am job2"
    - echo "I am in build stage"

查看结果 6

OK到这里就差不多了,祝你好运!

See Also

Mon Aug 13, 2018

1300 Words|Read in about 3 Min
Tags: devops