博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gitlab的CI/CD初尝试
阅读量:6861 次
发布时间:2019-06-26

本文共 2480 字,大约阅读时间需要 8 分钟。

初衷:今天公司的前端和测试人员吵起来了。原因是测试埋怨前端人员把Bug的状态更改为已解决,结果代码根本没提交,而前端人员埋怨测试测的太频繁了,需要打几个环境的包不方便。又要改东西又要频繁打包费时间。凡正各有各的理由,就是不想办法解决问题。

哎,没办法,为了解决这种问题,我打算看看Gitlab的CI集成,如果能弄上这个那么开发只管提代码就行了,会自动构建环境。

我这也是现学现卖,今天照着官网和查资料,刚把基本的流程跑通,中间还是费了点时间的,这里记录下

按照官网上说的,要使用CI,就弄两个东西就行了

1 在你的项目工程中创建.gitlab-ci.yml文件,这个文件主要是配置Piplines和stages以及脚本。gitlab-runner就是执行这个文件来构建环境的。

2 安装和配置gitlab-runner,一个Go写的工具,用于执行.gitlab-ci.yml里面的脚本。

一 创建.gitlab-ci.yml

stages:  - deploy deploy_develop:  stage: deploy  tags:    - nodejs  script:    - echo "hello,ci/cd"  only:    - dev复制代码

上面的文件我定义了一个piplines(deploy), 然后定义了一个job(deploy_develop), 只对dev分支有效,执行这个job时,会输出"hello,ci/cd"

二 gitlab-runner的安装和配置

这个gitlab-runner不需要和gitlab在一台机器上,甚至可以是在本地机器。相反官方也建议单独是最好的,构建必须要耗性能呀,不影响其它业务就好。

安装gitlab-runner 我是按照官方的步骤一步步来的,系统是Centos,如果是其它系统按照上面的安装方式就行

sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64复制代码

如果需要设置环境变量,则设置/usr/local/bin到PATH中

设置可执行权限

sudo chmod +x /usr/local/bin/gitlab-runner复制代码

增加一个单独用户用于gitlab-runner

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash复制代码

安装服务和启动

sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runnersudo gitlab-runner start复制代码

三 配置gitlab-runner

安装好gitlab-runner后,需要注册下,runner和gitlab之间通过Api通信的

gitlab-runner register复制代码

Please enter the gitlab-ci coordinator URL (e.g. ):

上面这个url从gitlab的pipelines里面的Specific Runners去找

四 遇到的问题

  1. 提交了代码没有触发,一直停留在pending 报错:This job is stuck, because you don't have any active runners that can run this job. 需要tags,值为在gitlab-runner注册的时候设置的
stages:  - deploy deploy_develop:  stage: deploy  tags:    - nodejs  script:    - echo "hello,ci/cd"  only:    - dev复制代码
  1. 遇到使用git clone拉取代码权限问题 我安装gitlab-runner的时候使用的是新建的一个用户,然后在gitlab-runner的安装机器上使用git clone代码时报权限问题。 需要将gitlab对应的公钥加到用户的.ssh/目录下面

经过上面的步聚,基本的CI就完成了,在以后的开发中,只需要将代码合到相应的分支,就会按照.gitlab-ci.yml里面的脚本构建了,记得在上家公司刚看到这个的时候感觉好厉害呀,只不过一直没动手弄过,今天自已动手试了下不光印象要深刻些,感觉也没有像以前那么神秘了。

我这个只是跑通了基本的,接下来还用弄nodejs和webpack前端打包这个,这个到时候弄一个shell脚本,然后定义在gitlab-ci.yml里面就行了。

PS:这里不得不喷下公司的运维,平时啥事都不干,四个运维除了平时发个版本一点事情没有,而且不管是环境还是什么,从来不管的,都是开发自已在弄。要一个线上的只读权限库也不肯给,说有安全问题,线上的有些问题完全没法查。

而且,更可笑的时,线上的发版你都没法想像,都是我们本地打成压缩包到指定的文件夹,然后他们再一台台机器发布,什么年代了,还整得这么原始。有这时间好好研究下现在的工具提高效率多好。关键是我们的leader也差不多这想法,导致这种事一直压着。

就像今天安装Ci这个,我开始以为gitlab-runner一定要装在gitlab的机器,去找他们开权限,结果他们以没有听过Ci是啥和可能有安全性为由拒绝了,后面看到官方文档说可以不在一台机器,就找了一台我们部门内部的一台测试机安装的。哎,真是无语了。

程序员的危机大部分也是自已造成的,自已不思进取。等那天被淘汰时,又会责怪现实的无情,须不知这一切和自已有很大的关系,很庆幸我还一直在努力,保持学习的习惯。

转载地址:http://lsayl.baihongyu.com/

你可能感兴趣的文章
聊聊Java对象在内存中的大小
查看>>
Spring Boot集成JasperReports生成PDF文档
查看>>
xmake v2.1.5版本新特性介绍
查看>>
TWaver可视化编辑器的前世今生(二)3D编辑器
查看>>
数据结构与算法——常用数据结构及其Java实现
查看>>
HTTP 缓存的关键路径
查看>>
HTTP读书笔记——了解Web及网络基础
查看>>
thinkPHP按月统计订单总金额
查看>>
二分查找(面试必备)
查看>>
Leetcode解题报告:Remove Duplicates from Sorted Array
查看>>
12行原生JS代码实现最简单的图片轮播
查看>>
[elk]基于elk的业务日志格式设计
查看>>
每日7千次的跨部门任务调度,有赞怎么设计大数据开发平台?
查看>>
进击的下一代推荐系统:多目标学习如何让知乎用户互动率提升100%?
查看>>
OpenAI披露最新研究成果:AI训练如何扩展到更大规模?
查看>>
从大数据到AI:AI的现状和未来
查看>>
Vue性能优化:如何实现延迟加载和代码拆分?
查看>>
深入JVM彻底剖析ygc越来越慢的原因(下)
查看>>
IDC报告:欧洲区块链支出8亿美元,排在首位
查看>>
Python 入门继续用tkinter实现股票查询
查看>>