持续集成
持续集成(
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
来完成
~文中如有不妥之处,欢迎批评指正~