gitlab的ci/cd初尝试(代码片段)

smartrui smartrui     2022-12-08     262

关键词:

初衷:今天公司的前端和测试人员吵起来了。原因是测试埋怨前端人员把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是啥和可能有安全性为由拒绝了,后面看到官方文档说可以不在一台机器,就找了一台我们部门内部的一台测试机安装的。哎,真是无语了。

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

gitlab-ci/cd(代码片段)

Gitlab-Runner自动构建服务器搭建1这里讲到的gitlab仓库指的是https://gitlab.com/,自建gitlab仓库也基本相同。项目的构建打包过程相对比较消耗系统性能,所以gitlab将这部分任务都交给了gitlab-runner来做,因为gitlab-runner可以部署到不同... 查看详情

ci/cd之搭建私有git仓库gitlab(代码片段)

私有仓库GitlabGitlab简介CI/CD安装GitlabGitlab使用Gitlab简介GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab官方文档:... 查看详情

ci/cd之搭建私有git仓库gitlab(代码片段)

私有仓库GitlabGitlab简介CI/CD安装GitlabGitlab使用Gitlab简介GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab官方文档:... 查看详情

还在用jenkins?试试gitlab的ci/cd功能吧(代码片段)

...化打包部署,一般都需要借助Jenkins。不过,现在Gitlab的CI/CD功能也能实现自动化部署,并且操作更加简单。如果你也正在使用Gitlab作为Git仓库的话,不妨试试它的CI/CD功能。一、安装通过Gitlab的CI/CD功能实现自动化... 查看详情

ci/cd之jenkins(代码片段)

...nkins安装安装jenkins插件安装中文插件安装流水线插件安装gitlab插件jenkins和gitlab联动jenkins轮询检查gitlab代码变更使用webhook实时检查gitlab代码变更推送dockerfile文件自动构建镜像新增agent节点jenkins用户管理CI/CD简介CI(Continuousintegration... 查看详情

ci/cd之jenkins(代码片段)

...nkins安装安装jenkins插件安装中文插件安装流水线插件安装gitlab插件jenkins和gitlab联动jenkins轮询检查gitlab代码变更使用webhook实时检查gitlab代码变更推送dockerfile文件自动构建镜像新增agent节点jenkins用户管理CI/CD简介CI(Continuousintegration... 查看详情

gitlab-ci-runner安装(代码片段)

...,自动化测试(CI)编译测试成功后,部署到线上服务器(CD)gitlab-runner介绍gitlab提供了一个持续集成的服务,如果你在项目仓库里面加入.gitlab-ci.yml文件同时给 查看详情

ci/cd之jenkins+gitlab(代码片段)

文章目录一、Jenkinx+Gitlab持续集成环境概述(1)什么是CI/CD(2)Jenkins概述(3)Gitlab概述(4)Gitlab和Github的区别(5)Jenkins配合Gitlab持续集成系统的工作流程二、部署持续集成环境(1&... 查看详情

gitlab_ci/cd详细过程(代码片段)

一、GitLabRunner服务器安装Docker和GitLabRunner环境(一)、增加GitlabRunner用户以及Docker用户组增加GitlabRunner用户#增加gitlab-runner用户sudouseradd--comment'GitLabRunner'--create-homegitlab-runner--shell/bin/b 查看详情

gitlab_ci/cd详细过程(代码片段)

一、GitLabRunner服务器安装Docker和GitLabRunner环境(一)、增加GitlabRunner用户以及Docker用户组增加GitlabRunner用户#增加gitlab-runner用户sudouseradd--comment'GitLabRunner'--create-homegitlab-runner--shell/bin/b 查看详情

gitlab_ci/cd详细过程(代码片段)

一、GitLabRunner服务器安装Docker和GitLabRunner环境(一)、增加GitlabRunner用户以及Docker用户组增加GitlabRunner用户#增加gitlab-runner用户sudouseradd--comment'GitLabRunner'--create-homegitlab-runner--shell/bin/b 查看详情

还在用jenkins?试试gitlab的ci/cd功能吧(代码片段)

...化打包部署,一般都需要借助Jenkins。不过,现在Gitlab的CI/CD功能也能实现自动化部署,并且操作更加简单。如果你也正在使用Gitlab作为Git仓库的话,不妨试试它的CI/CD功能。一、安装通过Gitlab的CI/CD功能实现自动化... 查看详情

rancher+gitlab+appveyor实现ci/cd流水线(汇总)(代码片段)

rancher+gitlab+appveyor实现CI/CD流水线本文主要是做一些汇总,将近期接触并弄好的一些工具整合起来,弄一套流水线,减轻一定工作压力工具介绍所有的组件都是使用docker跑的,所以一款好用的docker的ui管理工具很重要,那就是ranche... 查看详情

git客户端连接gitlab实现简单的ci/cd(代码片段)

1.git客户端的安装下载:https://git-scm.com/download/win截至最近:20180728最新版本2.18的下载地址https://github-production-release-asset-2e65be.s3.amazonaws.com/23216272/c0b82e3e-7623-11e8-93a5-b72bebbce542?X-Amz-Algorithm=AW 查看详情

持续集成指南:gitlab的ci/cd工具配置与使用(代码片段)

1前言写代码这项工作,本质就是将工作自动化,减少手工操作提供效率,因为人的本质都是懒狗,程序员也不能例外,为了各种意义的效率提升(懒),我们需要持续集成工具,将代码测试、... 查看详情

如何解决“远程:您不允许上传代码”。 GitLab CI/CD 作业出错?

】如何解决“远程:您不允许上传代码”。GitLabCI/CD作业出错?【英文标题】:Howtosolvethe"remote:Youarenotallowedtouploadcode."erroronGitLabCI/CDjob?【发布时间】:2018-12-2710:26:58【问题描述】:我目前正在尝试使用GitLab运行CI/CD作业,... 查看详情

Vue Cypress 和 Gitlab CI/CD

】VueCypress和GitlabCI/CD【英文标题】:VueCypressandGitlabCI/CD【发布时间】:2020-07-0309:01:03【问题描述】:我目前正在尝试使用他们的CI/CD平台在Gitlab上运行我的E2E测试。我目前的问题是我的开发服务器和cypress不能同时运行,以便E2E测... 查看详情

分享一个ci/cd的自动部署想法(代码片段)

...操作方式是:研发将配置、DB变更文件与代码一起提交到Gitlab仓库。如果检测到Gitlab的commit信息中带JiraI 查看详情