持续集成
持续集成(
Continuous Integration,简称CI)指的是,频繁地(一天多次)将代码集成到主干。 关于docker 的介绍,docker启动容器可以关注: docker + Gitlab CI 的持续集成(一) docker + Gitlab CI 的持续集成(二)
GitLab CI是 GitLab 提供的持续集成服务, 默认有3个[stages(阶段)]: build、test、deploy,大部分项目用 CI 跑build 测试,码农可以很快得到反馈,是否写出了 bug
所以借助GitLab CI怎么搞起来呢?
1、首先需要起一个runner服务
runner即build构建脚本的承载者
docker pull gitlab/gitlab-runner
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
有了前两章的经验,很快的启动了一个runner的服务,那怎么跟我们的代码关联上呢?
注册runner
docker exec -it gitlab-runner gitlab-ci-multi-runner register
# gitlab-runner register
Please enter the gitlab-ci coordinator URL: // 构建项目提供的url
# XXX
Please enter the gitlab-ci token for this runner: // 构建项目提供的token
# xxxxxx
Please enter the gitlab-ci description for this runner: // runner描述
# docker
Please enter the gitlab-ci tags for this runner (comma separated): // tags就是指定使用哪个runner来执行这个job
# zb
Please enter the executor: docker, parallels, shell, kubernetes, docker-ssh, ssh, virtualbox, docker+machine, docker-ssh+machine: // runner的执行程序
# docker
Please enter the default Docker image (e.g. ruby:2.1): // 执行程序选择docker 需要指定基础镜像
# docker:latest
第一、二步的URL与token哪里来呢?
去gilab需要构建的项目,settings ----> CI / CD ------> Runners 里会提供,如下图:
按步骤注册以后,gitlab上就会有我们的runner服务了
2、项目根目录创建gitlab-ci.yml文件
cache:
untracked: true
paths:
- node_modules/
stages:
- build
npm_production:
stage: build
script:
- pwd
- docker build -t test-test .
tags:
- zb
only:
- master
本文只是演示build一个名字为test-test的新images,这时在master上 push 代码,就会触发GitLab CI构建,启动zb这个runner来执行script下的脚本
构建成功,服务器上就有了这个images,剩下的事情就是基于这个images run 起来,这一步骤还可以利用 jenkins 来完成
~文中如有不妥之处,欢迎批评指正~