Closed whxaxes closed 7 years ago
gitlab-ci 和 docker其实都是出现好长时间的东西了,但是以前没怎么接触过,最近玩了一下,所以本文纯当做笔记了。
ci全名Continuous Integration(持续集成),词汇的具体解释可以查看Wiki,说白了就是用于替代重复而繁杂的项目部署的自动化部署系统。而gitlab-ci,则是配套在gitlab中的一套持续集成系统。如果经常有玩github,并且有开源过组件的,基本上都知道travis-ci这东西,这个就是第三方通过github的webhook对github的项目提供的持续集成系统。如果不知道travis-ci的也没关系,当了解了gitlab-ci之后,travis-ci也就很简单了。
Continuous Integration
对gitlab-ci应用举个例子,当我push代码到gitlab的时候,gitlab-ci则会根据你的配置脚本,就可以对你的代码进行单元测试、覆盖率测试、部署灰度或者上线等等。是不是很方便?
如果想玩一下gitlab-ci,我们就得先搭一套gitlab环境,在哪里搭建呢,可以在本机搭建,也可以在vps上搭建,我是建议租个vps来搭建好,不然下载也要下好久。vps推荐z.com,国外服务器,支持支付宝,花500日元也就是三十块就能玩十多天了。
以前搭gitlab好麻烦,要配各种环境之类的,但是时至今日,gitlab安装简直就是傻瓜包式了。去到gitlab官网,选择服务器系统,然后就会出来一些教你安装的命令,照着执行下去就能安装成功了,举个例子:我的服务器的是centos7。所以执行的命令是:
sudo yum install curl policycoreutils openssh-server openssh-clients sudo systemctl enable sshd sudo systemctl start sshd sudo yum install postfix sudo systemctl enable postfix sudo systemctl start postfix sudo firewall-cmd --permanent --add-service=http sudo systemctl reload firewalld curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash sudo yum install gitlab-ce sudo gitlab-ctl reconfigure
照着一步一步执行下去,gitlab就可以安装在你的服务器上了,gitlab默认监听的是80端口,如果端口被占用了,那么去配置文件里面改一下配置即可,gitlab的配置文件目录是
/etc/gitlab/gitlab.rb
打开之后找到external_url=''这行,在值里面填入地址加端口号:http://100.84.95.31:8888,然后执行
external_url=''
http://100.84.95.31:8888
sudo firewall-cmd --permanent --add-port=8888/tcp sudo firewall-cmd --reload sudo gitlab-ctl reconfigure gitlab-ctl restart
gitlab服务的端口就变成8888了。
配好gitlab后就进入主题啦:gitlab-ci + docker
先讲一下docker,因为如果要把gitlab-ci和docker合起来用,就得先安装docker。
docker是一个容器技术,也可以说是一个超轻量级的虚拟机,但是docker倡导一个容器只跑一个进程,让各个服务相对独立开来。docker的具体解释可看Docker终极指南。
第一步:安装docker
第二步:安装镜像,比如安装一个node的官方镜像
docker pull node
安装完后,运行docker images,就可以看到你安装的镜像目录了,就像这样
docker images
[root@wwwxhh gitlab]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mynode latest 21f0b54a14b6 22 hours ago 665.4 MB node latest 04a4aab809b8 7 days ago 649.6 MB node 4.4.4 1a93433cee73 7 days ago 647 MB gitlab-runner-build a470667 2a4b1a3b7b26 4 weeks ago 43.7 MB centos 7 778a53015523 6 weeks ago 196.7 MB gitlab-runner-service a470667 3ad17ec10f22 10 weeks ago 4.79 MB gitlab-runner-cache a470667 1cde79874428 10 weeks ago 1.114 MB
安装好docker,然后就可以配置gitlab-runner了。
首先我们要在自己服务器上安装gitlab-runner,也是很简单几条命令就安装完成
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash sudo yum install gitlab-ci-multi-runner -y
安装好后,你就可以使用gitlab-runner的cli了,可以gitlab-runner -h看看有啥命令。紧接着,创建一个project,点击project的setting然后点Runners,就可以看到Specific runners下有一些东西,这些是注册runner要用到的。
gitlab-runner -h
然后就可以注册runner,在服务器执行gitlab-runner register,就会出来一些让你填的东西,第一个就是填入Specific runners下的那个ci地址,也就是http://xxx.xxx.xx/ci,然后再让你填token,也照着Specific runners下的token填就行了,再后面会有让你填executor,如果填docker,跑你的gitlab-ci的yaml脚本将会在一个docker容器环境中运行,如果填shell,则会在服务器环境中运行。注册好后,如果你的runner还没有运行,就gitlab-runner start一下,如果已经运行了,就不用再start了。
gitlab-runner register
http://xxx.xxx.xx/ci
gitlab-runner start
注册完runner,再回到我们的project中,就可以看到Specific runners下多了一个runner的状态,如果runner左边显示绿灯,那么我们这个runner就是可用的了。
然后,怎么在push的时候执行单元测试之类的处理呢,我们得在自己的项目下加个脚本文件叫:.gitlab-ci.yml,语法就是yaml的语法,如果不懂,可以看Gitlab Documents文档,文档里讲的相当详细,我就不再赘述了。一个简单的例子:
.gitlab-ci.yml
image: node:4.4.4 before_script: - npm install stages: - test build_test: stage: test script: - npm run test only: - master
这个脚本很简单,就是当我push代码到master分支的时候,使用4.4.4版本的node镜像创建一个容器,在容器里执行单元测试。这个脚本的前提是runner的executor是docker。如果是shell我们就可以命令docker做些其他事。
to be continue ...
【前言】
gitlab-ci 和 docker其实都是出现好长时间的东西了,但是以前没怎么接触过,最近玩了一下,所以本文纯当做笔记了。
【CI简介】
ci全名
Continuous Integration
(持续集成),词汇的具体解释可以查看Wiki,说白了就是用于替代重复而繁杂的项目部署的自动化部署系统。而gitlab-ci,则是配套在gitlab中的一套持续集成系统。如果经常有玩github,并且有开源过组件的,基本上都知道travis-ci这东西,这个就是第三方通过github的webhook对github的项目提供的持续集成系统。如果不知道travis-ci的也没关系,当了解了gitlab-ci之后,travis-ci也就很简单了。如果想玩一下gitlab-ci,我们就得先搭一套gitlab环境,在哪里搭建呢,可以在本机搭建,也可以在vps上搭建,我是建议租个vps来搭建好,不然下载也要下好久。vps推荐z.com,国外服务器,支持支付宝,花500日元也就是三十块就能玩十多天了。
【Gitlab搭建】
以前搭gitlab好麻烦,要配各种环境之类的,但是时至今日,gitlab安装简直就是傻瓜包式了。去到gitlab官网,选择服务器系统,然后就会出来一些教你安装的命令,照着执行下去就能安装成功了,举个例子:我的服务器的是centos7。所以执行的命令是:
照着一步一步执行下去,gitlab就可以安装在你的服务器上了,gitlab默认监听的是80端口,如果端口被占用了,那么去配置文件里面改一下配置即可,gitlab的配置文件目录是
打开之后找到
external_url=''
这行,在值里面填入地址加端口号:http://100.84.95.31:8888
,然后执行gitlab服务的端口就变成8888了。
配好gitlab后就进入主题啦:gitlab-ci + docker
【Docker安装】
先讲一下docker,因为如果要把gitlab-ci和docker合起来用,就得先安装docker。
docker是一个容器技术,也可以说是一个超轻量级的虚拟机,但是docker倡导一个容器只跑一个进程,让各个服务相对独立开来。docker的具体解释可看Docker终极指南。
第一步:安装docker
第二步:安装镜像,比如安装一个node的官方镜像
安装完后,运行
docker images
,就可以看到你安装的镜像目录了,就像这样安装好docker,然后就可以配置gitlab-runner了。
【Runner配置】
首先我们要在自己服务器上安装gitlab-runner,也是很简单几条命令就安装完成
安装好后,你就可以使用gitlab-runner的cli了,可以
gitlab-runner -h
看看有啥命令。紧接着,创建一个project,点击project的setting然后点Runners,就可以看到Specific runners下有一些东西,这些是注册runner要用到的。然后就可以注册runner,在服务器执行
gitlab-runner register
,就会出来一些让你填的东西,第一个就是填入Specific runners下的那个ci地址,也就是http://xxx.xxx.xx/ci
,然后再让你填token,也照着Specific runners下的token填就行了,再后面会有让你填executor,如果填docker,跑你的gitlab-ci的yaml脚本将会在一个docker容器环境中运行,如果填shell,则会在服务器环境中运行。注册好后,如果你的runner还没有运行,就gitlab-runner start
一下,如果已经运行了,就不用再start了。注册完runner,再回到我们的project中,就可以看到Specific runners下多了一个runner的状态,如果runner左边显示绿灯,那么我们这个runner就是可用的了。
然后,怎么在push的时候执行单元测试之类的处理呢,我们得在自己的项目下加个脚本文件叫:
.gitlab-ci.yml
,语法就是yaml的语法,如果不懂,可以看Gitlab Documents文档,文档里讲的相当详细,我就不再赘述了。一个简单的例子:这个脚本很简单,就是当我push代码到master分支的时候,使用4.4.4版本的node镜像创建一个容器,在容器里执行单元测试。这个脚本的前提是runner的executor是docker。如果是shell我们就可以命令docker做些其他事。
【Docker with Gitlab-ci】
to be continue ...