Gitlab的CI/CD初尝试

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

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

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

gitlab ci/cd快速入门

按照官网上说的,要使用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
https://docs.gitlab.com/runner/install/linux-manually.html
我是按照官方的步骤一步步来的,系统是Centos,如果是其它系统按照上面的安装方式就行
shell 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中

设置可执行权限
shell sudo chmod +x /usr/local/bin/gitlab-runner
增加一个单独用户用于gitlab-runner
shell sudo useradd --comment ‘GitLab Runner‘ --create-home gitlab-runner --shell /bin/bash

安装服务和启动
shell sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner sudo gitlab-runner start

三 配置gitlab-runner

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

gitlab-runner register

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://172.18.10.22/

上面这个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是啥和可能有安全性为由拒绝了,后面看到官方文档说可以不在一台机器,就找了一台我们部门内部的一台测试机安装的。哎,真是无语了。

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

原文地址:https://www.cnblogs.com/smartrui/p/10836038.html

时间: 2024-10-09 12:37:47

Gitlab的CI/CD初尝试的相关文章

gitlab 实现 CI/CD

gitlab 实现 CI/CD 图文详解k8s自动化持续集成之GitLab CI/CD 原文地址:https://www.cnblogs.com/hool/p/12368254.html

GItlab作CI/CD时,想快点,有啥招?

如果希望.m2文件有存缓,或是不要每次从dockerhub上找镜像(有的是本地镜像,远程没有的) 那么,gitlab-runner的config.toml初步优化文件如下: concurrent = 1 check_interval = 0 [session_server] session_timeout = 1800 [[runners]] name = "cl-runner" url = "http://xxx.com:8888/" token = "

centos7下使用gitlab+shell实现CI/CD持续集成持续部署

centos7下使用gitlab+shell实现CI/CD持续集成持续部署 流程解释:第一步ci客户端向gitlab服务器注册自己,建立通信,第二步,当项目分支代码收到变化时,自动触发yml脚本,yml脚本根据注册时带入的runner通知客户端deploy脚本更新代码,同时执行编译和部署过程,deploy脚本写代码集成相关操作,具体见下面的讲解 CI部分 第一步:准备三台虚拟机S,C1,C2,我这里的三台机子都是全新的,除了系统文件没有其他文件 S:内存是4G用于装gitlab服务器 IP:19

Github原生CI/CD,初尝Github Actions

Github 原生 CI/CD,初尝 Github Actions Intro Github 目前已经推出了自己的 CICD 服务 -- Github Actions,而且比微软的 Azure DevOps Pipelines 对开发者来说更友好,使用起来更好用. Github Actions 核心概念 总体看下来感觉是从 Azure Pipelines 迁移过来的东西,有许多概念和 Azure Pipelines 是类似的,如果你之前用过 azure pipelines,应该很容易上手 Run

如何使用GitLab和Rancher构建CI/CD流水线 – Part 2

这是我们使用GitLab和Rancher构建CI/CD流水线系列教程的第二部分.第一部分的内容介绍了如何部署.配置和确保GitLab在Rancher的运行.这一部分中,我们将介绍如何使用GitLab CI Multi-Runner构建容器,以及如何使用GitLab容器registry配置项目.除此之外,我们还将涉及如何用GitLab CI建立容器并部署到Rancher上. 使用GitLab CI Multi-Runner构建容器 GitLab CI是用于持续集成和持续交付的强大工具.它需要和Ra

Gitlab Pipeline+Supervisor 实战Python项目CI/CD

一.背景 谈到到CI/CD,我们不禁会想到Gitlab + Jenkins + Docker等一些列优秀的工具,Jenkins以其丰富的插件及灵活配置已经非常好的满足我们日常工作中的CI/CD需求,通常的做法为Gitlab配置webhook,开发人员通过push代码或merge request可以触发执行一些列的测试部署上线工作,打通了开发到部署到整个生命周期,完成持续集成持续构建.在Gitlab 也是具有一套CI/CD到框架,通过简单的注册Gitlab Runner,根据业务测试部署需求撰写

基于docker搭建Jenkins+Gitlab+Harbor+Rancher架构实现CI/CD操作

一.各个组件的功能描述: Docker 是一个开源的应用容器引擎. Jenkis 是一个开源自动化服务器. (1).负责监控gitlab代码.gitlab中配置文件的变动: (2).负责执行镜像文件的构建.上传与下载; (3).通过Rancher插件系统构建stack/service; GitLab: 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具. (1).保存项目配置文件; (2).nginx定制配置文件; (3).Dockerfile文件; Harbor:开源的docker镜

jinkens+gitlab针对k8s集群实现CI/CD

一.环境准备 k8s集群环境(我这里是三台的K8s集群): 单独一台docker服务器,主要用于向私有仓库上传镜像,Jenkins和gitlab也部署在这台服务器: 上述环境共计服务器4台,均指向同一个私有仓库,以便共享docker镜像: 服务器IP依次为192.168.20.2.20.3.20.4.20.5(前三个IP为K8s集群中的节点) Jenkins采用war包的方式部署,需要用到tomcat环境,自行参考博文,进行部署:其他环境部署可以参考以下博文:Tomcat安装及优化配置:Dock

rancher+gitlab+appveyor 实现 CI/CD 流水线(汇总)

rancher+gitlab+appveyor 实现 CI/CD 流水线 本文主要是做一些汇总,将近期接触并弄好的一些工具整合起来,弄一套流水线,减轻一定工作压力 工具介绍 所有的组件都是使用 docker 跑的,所以一款好用的 docker 的 ui 管理工具很重要,那就是rancher.这里只是用来管理一些工具,有点屈才了 项目代码托管使用 gitlab,其内置了 CI/CD,成套使用,非常方便 appveyor 也是一个 CI/CD 解决方案,基于asp.net core开发.其内置 nu