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持续集成实战 的相关文章

  • 如何解决“端口号以 'y' 结尾”的 url 错误?

    在尝试将现有存储库从 gitlab 克隆到我的本地驱动器时 我使用的格式 git clone https github com libgit2 libgit2 mylibgit 生成的文件夹例如mylibgit在 XAMPP Web 文件夹
  • 无法验证 的证书,因为它不包含任何 IP SAN

    我正在开发一个 GitLab CI 管道 它将部署我的 docker 堆栈 我正在尝试将 DOCKER HOST 设置为tcp DROPLET IP 2377 但我收到一条错误消息 指出我的证书不包含任何 IP SAN 我正在使用 Digi
  • 远程:GitLab:不允许您将代码推送到此项目上的受保护分支

    我正在尝试推送到存储库的主分支 但我未能这样做 因为它受到保护 我尝试查看项目设置 但没有看到任何受保护分支的选项 我能看到的唯一选择是会员 remote GitLab You are not allowed to push code to
  • 无法将文件推送到 git,因为:无法推送一些引用

    我有一个目录 我想将其转换为 git 项目 我在 gitlab 中创建了一个新项目 然后执行了以下操作 git init git remote add origin email protected cdn cgi l email prote
  • Gitlab 管道 - 报告配置包含未知键:cobertura

    由于此错误 我无法运行 gitlab 管道 Invalid CI config YAML file jobs run tests artifacts reports config contains unknown keys cobertur
  • 无法在 CentOS 7 上的 PHP 中打开 file_put_contents 上的流

    我知道这是许多线程的常见错误 但我厌倦了搜索 但仍然没有解决它 当我尝试运行该函数时文件放置内容我收到以下错误 Warning file put contents test txt failed to open stream Permiss
  • Gitlab-CI,按计划运行,但仅在有更改时运行

    我想每天部署一次我的项目 但前提是发生了更改 我可以在每个特定的时间进行部署 并且我很乐意使用预定的管道来触发和部署 但是 并不总是存在需要部署的更改 理想情况下 如果自上次部署以来代码库没有发生任何更改 则管道当天不会运行 有什么办法可以
  • 让 GitLab CI 克隆私有存储库

    我设置了 GitLab 和 GitLab CI 来托管和测试我的一些私人存储库 对于此系统下的作曲家模块 我设置了 Satis 来解析我的私有包 显然这些私有包需要 ssh 密钥来克隆它们 并且我在终端中可以使用它 我可以运行compose
  • 有什么方法可以在 Jenkins 中获取 Gitlab 管道工件吗?

    我在gitlab中有一个项目 该项目会在存储库中的每次签入时构建 并在 gitlab 管道成功时创建构建工件 我想在我的詹金斯管道工作中获得这些构建工件 有什么办法可以做到这一点吗 我在 Jenkins 中找不到任何插件来执行此操作 任何帮
  • Bitnami:如何在 Apache2 中配置 GitLab 5.0 应用程序而不具有相对根目录?

    或者如何使 GitLab 应用程序作为 Apache2 HTTP 服务器上的根应用程序 我以前没有使用过 Apache2 但是我得到了Bitnami GitLab 虚拟机 http bitnami com stack gitlab virt
  • 从 JIRA 创建 Gitlab 分支

    我最近开始使用 Gitlab 并与 Jira 集成 Gitlab 和 Jira 服务器都是在我的公司环境内部自行托管的 我遇到了一个要求 我想直接从 JIRA 问题在 Gitlab 中为项目 问题创建一个分支 有可能做到吗 如果是的话怎么办
  • 如何修复 CI/CD 上的 SSH Webpack 构建超时 (Gitlab)

    我已经创建了与 Gitlab 的 CI CD 集成 并且在运行 CI CD 时一直拖延 webpack 和资产的最终编译 这是针对 Linux 16 04 t2 small AWS 实例的 我很好奇这是否是内存 处理器问题 尽管如果我通过
  • 在 Docker 中使用私有模块构建 Go 应用程序

    我正在尝试在依赖于私有子模块的 docker 容器中构建一个 go 项目 我本来希望 mount type ssh会将我的 ssh 凭据传递给容器并且它会起作用 目前我可以在本地构建 只需制作GOPRIVATE变量集和git config
  • 世博会错误 - 无法加载所有资源

    由于某种原因 当第一次使用命令启动我的应用程序时expo r ci no dev我收到Failed to load all assets error 收到错误的图像 https i stack imgur com pcvv4 png 如果我
  • GITLAB SSL证书问题:无法获取本地颁发者证书

    我正在尝试在 gitLab 中推送我的第一个项目 但出现此错误 致命 无法访问 https git SSL证书问题 无法获取本地颁发者证书 最后我在这里找到了解决方案https newbedev com invalid ssl certif
  • 为不同分支部署GitLab页面

    我正在使用 GitLab Pages 部署我的 React 应用程序 并且运行良好 这是我的gitlab ci yml Using the node alpine image to build the React app image nod
  • Mac上使用docker安装gitlab的权限问题

    我正在尝试让 Gitlab 在本地运行 但遇到了权限问题 cp cannot create regular file etc gitlab gitlab rb Permission denied 我正在运行的命令是 sudo docker
  • .gitlab-ci.yml yaml 内的数组变量

    我想在 gitlab ci cd yml 文件的变量中使用数组 如下所示 variables myarrray abc dcef script echo myarray 0 myarray 1 但 Lint 告诉我该文件不正确 variab
  • Gitlab CI - 不支持:外部构建目录

    我在保存工件时遇到问题 该项目分为3个模块 其中一个已保存 另外两个不保存 克隆项目 克隆到 home gitlab runner builds Gso uWvA 0 www project infoserwis project root
  • 将 Gitlab CI 阶段配置为不并行运行

    我有一个具有多个阶段的 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