持续集成指南:GitLab 的 CI/CD 工具配置与使用

1前言

写代码这项工作,本质就是将工作自动化,减少手工操作提供效率,因为人的本质都是懒狗,程序员也不能例外,为了各种意义的效率提升(懒),我们需要持续集成工具,将代码测试、编译、发布这些重复性很高的工作,全部变成自动化,减轻工作量,提高效率,解放生产力,为华夏伟大复兴贡献力量

说回正题,持续集成工具主流的就 Jenkins 、Gitlab CI/CD 这些,因为我们刚好在用 Gitlab,所以就不去折腾 Jenkins 了,直接用这个好了~

关于 Gitlab 的安装,可以参考我之前写的文章:GitLab的安装、配置、使用

概念科普

缩略词 CI / CD 具有几个不同的含义。CI/CD 中的"CI"始终指持续集成,它属于开发人员的自动化流程。成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。

CI/CD 中的"CD"指的是持续交付和/或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。

…… (省略又臭又长的名词解释)

只需记得 CI/CD 其实就是一个流程(通常形象地表述为管道),用于实现应用开发中的高度持续自动化和持续监控。因案例而异,该术语的具体含义取决于 CI/CD 管道的自动化程度。许多企业最开始先添加 CI,然后逐步实现交付和部署的自动化(例如作为云原生应用的一部分)。

2安装Gitlab-Runner

根据Gitlab官网的指引

# Download the binary for your system
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64# Give it permissions to execute
sudo chmod +x /usr/local/bin/gitlab-runner# Create a GitLab CI user
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash# Install and run as service
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

服务器使用的是CentOS7系统,实际配置时遇到无法识别gitlab-runner命令的问题,用echo $PATH打印了一下环境变量发现是没有/usr/local/bin,添加到PATH就可以了

安装的时候会自动创建gitlab-runner用户,Runner会在这个用户下执行各种任务,当然用户名和Home目录都可以自定义,就是上面倒数第二个命令。

3注册Runner

在Gitlab中,依次进入:菜单 - 管理员 - 概览 - Runner - 注册一个实例Runner

就会出来一个token,使用以下命令注册即可

sudo gitlab-runner register --url http://gitlab地址:端口/ --registration-token HjymWn4gEzHaVizpvG

注册过程中会让你输入一些信息,最后需要选择executer,可选项有virtualbox、docker、shell之类的,这里我选的shell,直接执行命令控制项目部署。其他的executer等后面再来研究用法。

注册完辽就可以在Gitlab的管理界面看到这个Runner了

2c59de7119bffa233f296725b7dc8567.png

为了让所有项目都能用这个Runner进行部署,需要修改一下配置,把这个钩打上

caa541311201c3af5ddd909199673a7e.png

4配置

为了让gitlab-runner用户能够使用docker,需要将其加入到docker用户组

usermod -aG docker gitlab-runner

配置docker代理

因为我们的生产服务器不能直接访问外网,所以还得配置一下docker的代理

编辑文件:/home/gitlab-runner/.docker/config.json

{"proxies":{"default":{"httpProxy": "http://proxy_ip:8080","httpsProxy": "http://proxy_ip:8080","noProxy": "localhost,127.0.0.1"}}
}

5gitlab-ci.yml

只要在项目的根目录中加入这个文件,然后推送代码到 Gitlab (一般来说是 master 分支),Gitlab Runner 就会根据 script 来执行构建任务。

平时开发时,如果不想要自动构建,可以 checkout 到其他分支(例如 dev)进行开发,等到功能完成需要发布的时候,再合并到 master 分支即可。

这里我写的是用 docker 部署一个 AspNetCore 应用的例子,实际还有 Python、Go、前端项目等常用例子,我后面再更新相关的文章~

variables:GIT_STRATEGY: none
stages:- deploy
deploy_job:stage: deployonly:- masterscript:- cd /home/gitlab-runner/projects/dotnet/dashboard- rm -rf dashboard-backend- git clone http://127.0.0.1:8080/deali/dashboard-backend.git- cd dashboard-backend- docker-compose up --build -d

6小结

这样就搞定了 Gitlab CI/CD 的基础用法,也就是所谓的“持续集成”,可以说灰常好用了~

当然它的功能很强、很多,本文的例子只是用到了其中一种,更多的用法我还在探索中,有收获的话后续会更新这个系列的文章。

7参考资料

  • Post-installation steps for Linux:https://docs.docker.com/engine/install/linux-postinstall/

  • Docker 代理脱坑指南:https://www.cnblogs.com/michael9/p/12300824.html

  • asp.net core结合Gitlab-CI实现自动化部署:https://www.cnblogs.com/guolianyu/p/9709166.html

  • 用 GitLab 做 CI/CD 是什么感觉,太强了:https://cloud.tencent.com/developer/article/1684099

  • CI/CD 工具选型:Jenkins 还是 GitLab CI/CD:https://www.infoq.cn/article/9hscujuukmbbwjpr0p0g

  • 还在用Jenkins?试试Gitlab的CI/CD功能吧,贼带劲!https://juejin.cn/post/6989411087611330573

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 错误日志 redis' already loaded in Unknown on line 0

环境介绍:LNMP 报错信息:注:这个php_errors.log 是我在php.ini 中定义的错误日志路径 问题原因: 报错信息给出的意思是:redis和memcache 模块已经加载过问题解决: php加载模块有两种方式,一种是…

第一周作业

我的Git账号:AI1452349541 和代码图 这是我在电脑和手机上下的网易有道词典 , C也下了。 ***学习内容总结*** 感觉任务并不是很难,有些任务没完成是 因为还没买电脑不好弄,下周电脑一定到位。 ***遇到的问题…

升级MariaDB为10.1版本

2019独角兽企业重金招聘Python工程师标准>>> CentOS中升级mariadb为10.1GA版本。 1、如果有,停止服务 systemctl stop mariadb 2、卸载原来的数据库服务 yum -y remove mari* 3、删除数据库文件 rm -rf /var/lib/mysql/* 4.创建/etc/yum.repos.d/MariaDB…

第一篇文章

第一次写博客。欢迎各位大牛捧场转载于:https://www.cnblogs.com/clnchanpin/p/6753665.html

羊了个羊的Ignite大会又来啦

据说最近羊了个羊非常火啊~可惜没有时间精力研究。不过,薅微软羊毛的机会我是一定不会错过的,这不,薅羊毛的机会来了,哈哈哈。作为经常薅微软羊毛的老司机,今天收到了微软的邮件,告知有新的羊毛…

清除谷歌浏览器的dns缓存

谷歌地址栏输入: chrome://net-internals/#dns出现下面界面:找到DNS选项,选择clear host cache即可效果:这样,谷歌浏览器上的dns缓存就清理掉了。应用场景: 本地环境和线上环境用的是一个host,这…

生产YUM源搭建

企业内部YUM源搭建转载于:https://www.cnblogs.com/xiangtanglaojing/p/7603581.html

什么样的代码称得上是好代码?

“软件自有其美感所在” --《重构》图片:崇礼瀚海梁的山花 拍摄于2022年8月13日 摄影师:刘先生这篇内容写作于4年前(2018年),是自己多年软件开发工作的一点感悟,现在看来虽有偏颇,但总体思想方…

Coding and Paper Letter(十四)

2019独角兽企业重金招聘Python工程师标准>>> 资源整理。 1 Coding: 1.R语言包ungeviz,ggplot2的拓展包,专门用来作不确定性的可视化。 ungeviz 2.计算机图形学相关开源项目。 计算机图形学光线追踪开源项目C源码。 computer graphics ray tra…

QBC运算符含义

HQL运算符 QBC运算符 含义 Restrictions.eq() 等于 <> Restrictions.not(Exprission.eq()) 不等于 > Restrictions.gt() …

eclipse安装反编译插件

一、下载插件 1、官方地址&#xff1a;http://jd.benow.ca/ 2、百度网盘&#xff1a;http://pan.baidu.com/s/1eSJ7Tiq 密码&#xff1a;sr6p 二、打开eclipse&#xff0c;点击“Help > Install New Software” 三、Name填&#xff1a;JD-Eclipse Update Site&#xff08;可…

PHP 项目中缓存的多种应用实现

一、CDN缓存原理和介绍 1、各地部署多套静态存储服务&#xff0c;本质上是空间成本换时间 2、CDN是域名和真实服务器中间的一个环节&#xff0c;添加cdn节点后&#xff0c;用户访问时&#xff0c;自动选择最近的节点内容&#xff0c;不存在再请求原始服务器 3、CDN本质上是一种…

【tomcat】servlet原理及其生命周期

1.什么是servlet&#xff1f; Servlet&#xff08;Servlet Applet&#xff09;&#xff0c;全称Java Servlet,是用Java编写的服务器端程序。而这些Servlet都要实现Servlet这个接口。其主要功能在于交互式的浏览和修改数据&#xff0c;生成动态Web内容。Servlet运行于支持Java的…

实现一个监控 IP 的 windows 服务

实现一个监控 IP 的 windows 服务Intro我们公司的 VPN 用自己的电脑连公司的台式机的时候需要用 IP 地址&#xff0c;有一次尝试去连的时候发现连不上&#xff0c;第二天到公司发现 IP 变掉了&#xff0c;不是之前连的 IP 了&#xff0c;于是就想写一个简单 Windows 服务来监控…

微信企业号开发:启用回调模式

微信企业号开发怎样启用回调模式&#xff1f;就是简单的登陆PC版微信&#xff0c;点击应用中心&#xff0c;选择须要应用&#xff0c;再点击回调模式启用&#xff1f;似乎不是这么简单。&#xff01;能够看到核心的仅仅有三个URL。Token&#xff0c;EncodingAESKey这三个參数能…

MVC中提交表单的4种方式

一&#xff0c;MVC HtmlHelper方法 Html.BeginForm(actionName,controllerName,method,htmlAttributes){} BeginRouteForm 方法 (HtmlHelper, String, Object, FormMethod) 二&#xff0c;传统Form表单Aciton属性提交 三&#xff0c;JqueryAjax 提交表单 四&#xff0c;MVC C…

photoshop制作网站圆形图标ico

1、选择左侧工具栏中的椭圆工具2、鼠标直接在图片上选择区域3、在图片上鼠标右键建立选区&#xff0c;在弹出的对话框直接点确定变成这样&#xff1a;4、点击选择&#xff0c;然后点击反选变成这样5、图层栏&#xff0c;在图片上右键复制图层&#xff0c;弹出对话框直接确定即可…

《简明 PHP 教程》00 开篇

《简明 PHP 教程》是一本旨在介绍如何使用 PHP 语言进行编程的自由图书。它以教材与指南的形式为入门者介绍 PHP 编程语言。如果你对电脑知识的了解仅限于如何保存文本文件的话&#xff0c;那这本书就是为你准备的。 本博客后续将以连载的方式为读者呈现这本书。 关于作者 一名…

WPF 窗体设置亚克力效果

WPF 窗体设置亚克力效果控件名&#xff1a;WindowAcrylicBlur作者&#xff1a; WPFDevelopersOrg - 吴锋原文链接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40。Visual Studio 2022。项目使用 MIT 开源许可协议。WindowAcrylicB…

JS向后台传递json数组对象

var Obj [];            //一下代码可以循环插入            var returnObj new Object();//创建一个对象returnObj.id “123”&#xff1b;returnObj.money 456“”;Obj.push(returnObj);           JS中将Obj对象进行序列化操作   …