centos7下安装gitlab-ci持续集成实战

2023-05-16

    gitlab提供了ci/cd持续集成/持续部署的功能,当我们安装了gitlab之后,需要单独再安装gitlab-ci-multi-runner,其实就是gitlab-runner,为了试验,我们一次性安装gitlab,gitlab-ci-multi-runner,在centos7下他们需要单独的安装源,可以使用清华的gitlab-ce与gitlab-ci-multi-runner源,如下所示:

/etc/yum.repo.d/gitlab.repo

[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
gpgcheck=0
enable=0

[gitlab-ci-multi-runner]
name=gitlab-runner
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ci-multi-runner/yum/el7/
gpgcheck=0
enable=0

设置好了yum源,我们直接yum makecache。接下来就是安装gitlab-ce,gitlab-ci-multi-runner了。

yum install gitlab-ce gitlab-ci-multi-runner -y

    

    安装过程很漫长,需要安装769m的各种包,主要是gitlab,别小看gitlab,他包含了一系列的组件:nginx,redis,postgresql等等,我们后续还要说这里,所以虚拟机的要求很高,我这里是使用的4G内存的vm。 gitlab单独作为gitserver使用的话,感觉和gitee,github,gitweb都差不多,如果在公司内部做git仓库,还是很常用的,毕竟加入了ci/cd之后,可以帮助我们做一些集成测试与部署,能够方便很多。

    gitlab单独安装,可以参考博客:CentOS7安装gitlab。

    gitlab安装成功之后,首次使用需要进行初始化,需要运行gitlab-ctl reconfigurer,gitlab提供了一套webUI以及git仓库的功能,这些功能的实现需要借助数据库postgresql,因此初始化的时候会创建一系列的表。所以初始化的过程也很漫长。

    

    gitlab-ctl reconfigure

     

    configure complete:

     

    配置完成,我们可以查看gitlab状态,默认运行了很多组件,包括前面提到的nginx,redis,postgresql等等。

    

        因为gitlab安装的时候,默认安装了nginx,所以访问的时候,实际上利用nginx还做了反向代理,我们直接访问的是主机名就可以,无需增加端口。 在访问gitlab webui之前,我们需要关闭vm的防火墙,并禁用,防止下次开机再启动。

[root@gitserver yum.repos.d]# systemctl stop firewalld
[root@gitserver yum.repos.d]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

    第一次访问,虚拟机ip是:192.168.131.129,浏览器输入IP即可。

    1、首次访问需要设置密码,设置一个至少8位的密码

    2、登录:

 3、创建一个组:

 4、组创建完毕,默认为空,提示创建工程,也就是项目仓库git repository:

5、项目创建在组中,默认一个空的repository:

     要使用gitlab-ci,前提是我们需要新建一个组group,然后在group下新建仓库,也就是我们的项目,之后,我们可以将项目拉倒本地,编写好了代码,自测无误之后,我们提交代码,按照gitlab-ci的操作,我们还需要在gitlab的ui界面中新建一个.gitlab-ci.yml文件,这个文件就是用来做自动测试与部署的文件。有了这个文件,我们每次提交代码,他都会执行集成测试。

     光有了项目,.gitlab-ci.yml文件还是不够,我们还需要设置gitlab-runner,当我们的项目在ui界面创建之后,我们需要获取项目的token信息:

   在项目所在页面,依次点击左侧菜单的settings->ci/cd->runners->expand等选项,找到runner注册需要的token信息:

点击页面的expand,我们会看到关于这个项目的token:

    有了token信息,我们需要执行注册:gitlab-ci-multi-runner register,按照提示,输入项目地址以及token。

    gitlab-ci-multi-runner安装之后,默认就是运行的:

    

    可以查看帮助,我们如何执行命令:

    

    执行 gitlab-ci-multi-runner register 

    

    注册runner这一步,默认填写了前面的项目url前缀,以及项目token,最后一步是选择执行器,这里默认选择shell,表示直接运行本地命令,一般是运行docker,这里是测试gitlab-ci集成,所以默认选择了shell。 

    本地代码提交到该远程仓库:首先需要在本地新建文件夹,然后执行git init,添加文件之后执行git add xxx,运行git commit -m "",设置远程仓库地址 git remote add origin http://192.168.131.129/test/webapp.git。提交:git push -u origin master,默认会提示输入用户名和密码,这里输入我们在刚进入http://192.168.131.129时设置的密码,用户名默认是root。

   本地提交之后的截图:

    

    gitlab webui界面显示如下:

    完成了这一步,我们的gitlab-ci准备工作才算是真正的结束。另外,.gitlab-ci.yml文件也是需要做配置的,需要一定的技巧,他需要遵守一定的语法规则,需要设定任务,以及任务执行的脚本:

    首先需要在ui界面新建文件,如下图所示:

    

   在新的界面中,依次选择.gitlab-ci.yml模板,然后apply a template,选择nodejs,默认会帮助我们生成一些代码,如下所示:

    我们只保留文件中的一部分,然后修改测试代码运行 node app.js

    

 一个简单的gitlab-ci的示例到此就配置完成了,我们需要让他自动运行,这时候就需要修改本地代码,再次提交并推送到该远程仓库。

  运行之前,需要修改一个地方:远程仓库的地址默认是http://gitlab.example.com开头,如果没有配置这个映射会报错,所以为了简单起见,我们修改如下配置文件/var/opt/gitlab/gitlab-rails/etc/gitlab.yml:

[root@gitserver etc]# pwd
/var/opt/gitlab/gitlab-rails/etc
[root@gitserver etc]# ls
database.yml  gitlab_shell_secret  gitlab_workhorse_secret  gitlab.yml  rack_attack.rb  resque.yml  secrets.yml  unicorn.rb
[root@gitserver etc]# 

    修改他的host: 192.168.131.129,这样,我们在页面上看到clone的时候地址就是我们的ip地址开头的地址,而不是http://gitlab.example.com开头了。

    提交代码,我们在项目页面左侧菜单:CI/CD->Pipelines会看到任务列表,点进去看任务执行情况:

   因为我的runner在注册的时候指定的执行器是shell,因此就是在本地运行,而我的项目需要的环境是node,.gitlab-ci.yml中指定的node app.js需要运行在node环境下,所以本机需要安装nodejs。这个安装在这里略过。

    我的app.js的内容如下:

new Promise(resolve => {
   setTimeout(function(){
     resolve("hello");
   },1000);
}).then(value => {
   console.log(value+",world.");
});

    当我们环境都配置正确之后,运行点进去正常运行的截图如下所示:

    

    这是一个运行成功的示例,运行成功,再返回pipelines列表页面,状态显示passed,运行失败的显示failed:

      

    这篇文章体验了一把gitlab-ci,主要还是gitlab的安装与gitlab-ci-multi-runner的安装,还需要注册runner,注册runner也很简单,就是对runner和project通过token做一个关联,最后需要在项目中新建一个.gitlab-ci.yml配置文件,用来设定任务执行的脚本script,脚本内容就是我们在平时项目开发完成之后,进行的一些单元测试,这里只是一个简单的示例,体验了一把gitlab-ci。正常的gitlab-ci是利用docker来做执行器。所有的操作都在docker中执行和完成,包括CI之后的CD。 

     总结一下gitlab-ci就是:1、安装gitlab,gitlab有很多组件,初次使用,需要运行gitlab-ctl reconfigure。2、安装gitlab-ci-multi-runner,默认安装完成即启动,无需手动启动,3、新建仓库之后会有一个token,我们需要通过register的方式和runner进行关联。4、编写.gitlab-ci.yml。

    需要注意的地方:1、git仓库克隆地址默认是 gitlab.example.com,需要手动修改/var/opt/gitlab/gitlab-rail/etc/gitlab.yml配置文件,修改host为我们的域名或者主机。2、代码提交即运行runner,如果显示failed,可以点进去看具体的报错信息,看看是什么原因,很多可能是环境的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

centos7下安装gitlab-ci持续集成实战 的相关文章

随机推荐

  • python3安装以及安装pip之后出现的问题

    python3在windows10上的安装 xff0c 为了省事 xff0c 直接下载的是python 3 7 4 embed adm64 zip免安装版本 xff0c 下载解压 xff0c 然后将python目录加入环境变量的path中
  • eclipse安装pydev插件开发python程序

    做Java开发的 xff0c 想学习python xff0c 可以不用安装别的pycharm IDE xff0c 我们直接通过在eclipse中安装一个python插件pydev即可 xff0c 前提是你的机器上已经安装了python xf
  • docker私有镜像服务搭建

    docker容器技术已经在部署服务上使用的非常普遍 xff0c 主要是它的隔离性以及快速启动的特性 xff0c 一般启动一个容器 xff0c 如果镜像不存在会先去dockerhub仓库下载 xff0c 然后存储在本地 xff0c 后续可以继
  • vs2017开发第一个desktop应用程序

    desktop应用程序也叫窗口程序 xff0c 我们平时在电脑上安装的APP xff0c 都是桌面程序 xff0c 比如QQ xff0c 各种播放器 xff0c 包括浏览器 桌面程序最主要的特点 xff0c 就是点击运行之后 xff0c 会
  • 量子编程入门第一篇环境搭建dotnet-sdk+Microsoft.Quantum.IQSharp+python3.6+qsharp

    量子编程已经提上日程 xff0c 微软提供了quantum开发工具包 Microsoft Quantum Development Kit简称QDK xff0c 在visual studio 2019环境下 xff0c 可以安装quantum
  • ROS2学习笔记(十)-- ROS2 launch启动文件

    简介 xff1a 接触过ROS1的同学对launch肯定不陌生 xff0c 在ROS1中 xff0c 我们常用launch实现node和master同时启动 多节点同时启动配置等功能 xff0c ROS2中的launch也是用于多节点启动
  • 记录一次解决TypeError: 'NoneType' object is not callable的办法

    如题所示 xff0c 这是python运行时报错 xff0c 关键信息就是 xff1a TypeError 39 NoneType 39 object is not callable xff0c 错误栈信息如下 xff1a 有的文章提示 x
  • windows下VC++6.0编写c++程序连接mysql示例

    windows下通过c 43 43 编码连接mysql数据库 xff0c 需要做一些设置 xff0c 因为我们需要连接mysql并执行相关操作 xff0c 需要使用mysql提供的api xff0c 这api在mysql h头文件中定义了
  • windows修改cmd命令行字体

    默认情况下 xff0c windows命令行字体只有两种 xff0c 点阵字体和新宋体 如果你想使用系统自带的其他字体 xff0c 需要更改注册表 这里介绍如何修改 windows系统字体在目录C Windows Fonts 下 xff0c
  • centos7安装与配置DNS服务器

    centos7上安装DNS服务器可以实现域名与IP的双向解析 xff0c 即通过域名可以找到主机IP xff0c 也可以通过IP找到域名 在postfix搭建邮件服务器中 xff0c 需要用到DNS正向解析与反向解析 xff0c 因此DNS
  • springboot项目单元测试

    springboot项目和普通的spring项目一样也可以做单元测试 xff0c 一般是测试service层的方法 xff0c 在进行项目构建的时候 xff0c 需要在springboot默认依赖的基础上 xff0c 再加上spring b
  • ipfs星际文件系统初体验

    ipfs是InterPlanetary File System的简称 xff0c 即星际文件系统 xff0c 他不同于一般的操作系统文件系统 xff0c 也不同于分布式文件系统 xff0c 因为分布式文件系统最终访问文件还是采用的http协
  • truffle构建以太坊应用并测试第一个helloworld智能合约

    最近因为国家对区块链又重视起来了 xff0c 相信今年年底到明年年初会是一个区块链的新的爆发点 xff0c 也是碰巧学习了一下以太坊构建区块链应用 xff0c 以前都是简单的了解 xff0c 并没有实际动手演练 今天趁机会也学习一下区块链
  • docker启动报错:standard_init_linux.go:211: exec user process caused "no such file or directory"

    如题所示 xff0c 根据自己构建的镜像启动docker容器 xff0c 直接退出 xff0c 查看容器日志报错信息 xff0c 没有任何别的信息 网上搜索这个问题 xff0c 发现很多人都遇到过 xff0c 解决办法也各不相同 xff0c
  • windows下telnet回显解决办法

    telnet相信大家都用过 xff0c 在tcp连接中 xff0c 我们可以用来模拟发送客户端请求 xff0c 当我们输入telnet 127 0 0 1 8888连接本机的tcp 8888端口时 xff0c 连接成功后 xff0c 会进入
  • springboot与flyway集成做数据迁移

    flyway是一种用来做数据迁移的框架 xff0c 如果你的项目不是jpa 43 hibenate xff0c 比如使用的mybatis xff0c 那么你需要在实体创建之前 xff0c 在数据库中生成表结构 xff0c 然后逆向工程 xf
  • ROS2学习笔记(十一)-- ROS2 bag数据记录与回放

    简介 xff1a ROS2提供了ros2 bag命令 xff0c 可以记录指定主题的数据到文件中 xff0c 也可以将记录下的内容再发布出来 xff0c 相当于是数据的回放 xff0c 除了通过命令行的方式实现数据记录以外 xff0c 也可
  • C++实现简单链表

    链表是最常用的一种数据结构 xff0c 无论什么语言 xff0c 学习数据结构 xff0c 都绕不开链表 xff0c 下面通过c 43 43 来实现简单链表 xff0c 所谓简单链表 xff0c 就是构建链表 xff0c 然后遍历打印链表
  • 二分查找算法介绍

    二分查找算法的实现过程如下 xff1a 在排序数组中查找某一个数据项 xff0c 首先让待查数据与中间下标元素开始比较 xff0c 如果相等则返回 xff0c 如果小于中间下标元素 xff0c 重新开始从低位开始 xff0c 中间下标 1
  • centos7下安装gitlab-ci持续集成实战

    gitlab提供了ci cd持续集成 持续部署的功能 xff0c 当我们安装了gitlab之后 xff0c 需要单独再安装gitlab ci multi runner xff0c 其实就是gitlab runner xff0c 为了试验 x