问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Gitlab-ci:从零开始的前端自动化部署

发布网友 发布时间:2024-09-29 08:56

我来回答

1个回答

热心网友 时间:2024-11-12 10:15

以gitlab-ci为例,通过在项目根目录下配置.gitlab-ci.yml文件,可以控制ci流程的不同阶段,例如install/检查/编译/部署服务器。gitlab平台会扫描.gitlab-ci.yml文件,并据此处理ci流程。ci流程在每次团队成员push/merge后触发。每当你push/merge一次,gitlab-ci都会检查项目下有没有.gitlab-ci.yml文件,如果有,它会执行你在里面编写的脚本,并完整地走一遍从intall => eslint检查=>编译 =>部署服务器的流程。gitlab-ci提供了指定ci运行平台的机制,它提供了一个叫gitlab-runner的软件,只要在对应的平台(机器或docker)上下载并运行这个命令行软件,并输入从gitlab交互界面获取的token,就可以把当前机器和对应的gitlab-ci流程绑定,也即:每次跑ci都在这个平台上进行。gitlab-ci的所有流程都是可视化的,每个流程节点的状态可以在gitlab的交互界面上看到,包括执行成功或失败。不同push/merge所触发的CI流程不会互相影响,也就是说,你的一次push引发的CI流程并不会因为接下来另一位同事的push而阻断,它们是互不影响的。pipeline不仅能被动触发,也是可以手动触发的。

自动化部署的好处体现在几个方面。首先,提高前端的开发效率和开发测试之间的协调效率。在项目上线前的测试阶段,前端同学修复bug之后,通过gitlab-ci,可以直接部署到测试或集成环境的服务器,节约了开发时间,同时,测试同学可以随时把握代码部署的情况,并通过交互界面手动启动pipeline进行部署测试,节约了与开发之间的沟通时间。其次,从更细的粒度把握代码质量。可以将eslint或其他的代码检查加到pipeline流程中,每当团队成员提交和合并一次,pipeline都会触发一次并对代码做一次全面检测,控制代码质量。

gitlab-ci的基本概念包括pipeline & job、runner、executor、stages & stage、script、tags等。pipeline是gitlab根据项目的.gitlab-ci.yml文件执行的流程,由许多任务节点组成,每个节点都是一个独立的job。runner在特定机器上执行pipeline的程序,有specific runner和shared runner两种类型。executor指的是在特定机器上执行的平台。stages定义了pipeline的不同流程节点,stage表示当前的pipeline节点,script是当前pipeline节点运行的shell脚本,tags是当前job的标记,用于判断runner是否执行当前job。

编写gitlab-ci的"hello world"包括下载并安装gitlab-runner、初始化runner、注册runner、梳理和规划pipeline的不同阶段和过程、编写.gitlab-ci.yml配置文件。在编写配置文件时,需要考虑pipeline的阶段,如install、eslint、build和deploy。deploy阶段又分为服务器的申请和安装web服务,以及部署资源。编写配置文件后,通过提交项目代码,pipeline即可开始运行,最终将项目代码部署到服务器上。

在使用gitlab-ci过程中遇到的典型坑点包括runner未激活问题、job一直挂起、specific runner被share runner抢占job等。解决方法包括重新启动runner、给job添加tags、删除旧的runner并使用更新后的token重新注册runner等。

gitlab-ci的进阶功能包括YML的片段复用和模块化,通过YML的include关键字可以导入外部的YML文件,实现配置的复用和模块化。cache关键字可以缓存node_moles包,避免重复安装,提高pipeline性能。artifacts关键字可以将生成的资源作为pipeline运行成功的附件上传,并在gitlab交互界面上提供下载。image/services关键字可以使用Docker的镜像和服务运行Job。only/except关键字可以设置job在特定tag或分支名下运行。allow_failure和retry关键字可以设置job是否允许失败以及失败重试次数。timeout关键字可以设置job的超时时间。When关键字可以设置job在何种状态下运行。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 交互设计的“根”——七大定律 交互设计原则和理论2——七大定律 七大设计原则 附近的加油站有哪些 附近的加油站有哪些地方 ci框架上传文件怎么上传到框架外面去 铁冬青小苗价格多少钱一棵 红果冬青小苗多少钱一棵 冬青小苗价格多少钱一棵?冬青小苗种植技术有哪些? 北美冬青小苗多少钱一棵 完美冬青小苗那里有 ...时按ctrl+空格,只能显示极品五笔,不能进行切换. ...极品五笔无法快捷CTRL+空格切换中英文输入!!!▄▄▄ 什么是乏燃料,跟核废料是同一个说法吗? ...微信红包的钱转入农业银行怎么现在卡上还没有钱呀 我昨天晚上一点左右微信红包提现的,为什么现在还没到,我刚才又从微信红... 为什么我从微信红包提现到中国银行卡,过了约定时间钱还没有到账?我是... 微信红包提现了200元到绑定的卡上但到账成功了,卡上怎么没有钱,有很... 怎么查看平板真实配置 ...就生气了一直和他吵架,他今天也不说不理我怎么办? 后排安全带卡槽拆卸教程 安全带卡座插槽拆卸教程 人教版品德与社会六年级上册第一课是什么? 品德与社会六年级上册第四单元勿忘国耻面向未来的稿子怎么写_百度知 ... 品德与社会六年级上册第十九页格言栏 ...负责人不按规范指导施工、随意压缩工期造成的质量事故,按事故责任分 ... ...<武林外传>的"我姓王,草头王,王是王豆豆的王,豆是王豆豆的豆"_百度... 沁字组三个词~ 摊,疏,施,苞,婪,吮,贪,蕾,沁能组什么词 2个字各组三个词 干春笋怎样凉拌好吃又简单 凉拌春笋的做法!学会它你一定不会失望的! 怎样能使凉拌春笋的味道更好? 凉拌春笋的技巧有哪些值得分享? 凉拌酸辣春笋的做法步骤(酸辣海笋凉拌方法) ...时候那声音特大声像拖拉机一样响是什么原因? ...月份网上买的现在洗了到脱水时声音像拖拉机 雪纺是什么面料雪纺面料的优缺点? lol小鱼人打光辉容易吗 疾风剑豪+刀锋之影能打过 潮汐海灵+死亡颂唱者+德玛西亚皇子 么? 女生单招最吃香的十大专业 什么专业就业好 车间主任如何管理车间的管理方案矩阵图车间主任如何管理车间 花桥怎么造句 “以情感支持 以方法指导” ---一位初中英语学困生的转化... 江西赣州特产:赣州腊猪肝