关于ci-cd:如何扩展及优化CICD流水线

现在应用程序的开发通常由多个开发人员组成的团队实现。每个人或团队在我的项目中施展本人的作用,而后咱们发现在我的项目的开端总是有几段代码须要编译,依据每个人的工作办法,治理这种集成可能会节约很多工夫。继续集成和继续交付/部署(CI/CD)便用来解决该问题,确保公布更新顺利进行,防止不必要的提早和抵触。  因而为利用程序开发和施行 CI/CD 工作流程越来越广泛,与此同时,施行 CI/CD 时也面临许多挑战。在明天的文章中咱们将一起探讨这些挑战具体是什么,以及咱们该当如何对 CI/CD 进行扩大和优化。  CI/CD 流程中的挑战CI/CD 过程迟缓速度是任何 CI/CD 过程的重要因素之一。如果您的 CI 服务器和部署须要半小时能力实现该过程,并且您有多个团队,每个团队打算每天部署几次,那么您的 CI/CD 流水线的确会被阻塞。开发人员必须在队列中期待 CI/CD 可用。一些企业限度了能够在给定工夫运行的流水线,但这样仍旧无奈无效提供古代企业所需的疾速公布。  设置新流水线很简单当今 CI/CD 流水线应用的基础设施简单且难以设置。大多数新应用程序都应用微服务,这会频繁触发新的 CI/CD 流水线启动。然而当您扩大现有的 CI/CD 基础架构时,必须解决与云基础架构相干的许多简单问题。如果流水线和基础设施治理不是自动化的,这将节约许多工夫在为新流水线配置基础设施和配置上。  单个 CI 服务器产生阻塞在基于微服务的应用程序部署中,CI 服务器是安稳公布工作流程的关键点。如前所述,微服务疾速触发 CI 服务器,CI 服务器因为申请过多而阻塞是很常见的。您能够垂直扩大 CI 服务器,这将临时解决问题,但最终您将须要创立多个具备独立职责的 CI 服务器。即便是一个整体但一直增长的应用程序也会在冲刺完结时阻塞你的 CI 服务器,因为在最初一分钟有太多的代码更改,并且均匀每 30 分钟就会有不同的开发人员进行部署。  扩大 CI/CD当微服务数量减少时,对 CI/CD 进行扩大是不可避免的。微服务数量的减少导致不同的流水线连贯到单个 git 存储库,这减少了 CI 服务器的负载并升高了性能。要扩大 CI/CD,为所有团队创立一个标准化和自动化的开发流水线,确保开发人员交付和团队交付的品质,同时还让流水线的治理变得容易。  能够通过定义用于执行单元测试和验证交付代码品质的CI 流程来实现扩大,随后是用于构建镜像并将它们继续部署到环境中的 CD 过程,最初定义用于构建镜像并将它们部署到生产环境中的过程。接下来咱们将按步骤来解说如何对 CI/CD 进行扩大。  扩大 CI/CD 的步骤流水线遵循 Git 分支到环境的映射(开发 ➡️ 开发和主控 ➡️ 批准和生产)。而后在每次拉取申请时触发 CI 作业,在映射分支中的每次更改时触发 CD 作业。能够依照以下步骤来创立 CI 和 CD 工作流。  ...

June 26, 2023 · 1 min · jiezi

关于ci-cd:打通微信小程序自动化部署最后一步微信第三方平台

之前在公司搭建了一个前端部署平台(cb-cycle),波及小程序、网页利用的部署。(流程节点可自定义开发,原则上任意程序都能够实现部署,甚至不至于部署)。 无奈小程序自动化只能到上传代码(miniprogram-ci)这一步,连根本的主动设为体验版都做不到(当然能够手动固定机器人版本默认作为体验版),手工运维占了大部分,导致这小程序自动化部署性能被诟病。 当然如果前行是能够将这个流程跑通的:通过保护管理员账户通过无头浏览器进行主动保护,对我来说属于不到无可奈何不干的事件。 不过好巧工作这么久的常识让我受益匪浅,脑子里蹦出了“微信第三方平台”。 什么是“微信第三方平台”摘一段官网形容: 微信官网为了帮忙服务商开发者能够更加聚焦业务开发,缩小在环境搭建、管理工具建设等我的项目的老本投入,推出“一键搭建第三方平台后端服务、一键部署第三方平台管理工具”的性能,助力服务商更高效地基于第三方平台开展业务。 由官网保护迭代的“第三方平台后端服务”以及名称为【服务商微管家】的“第三方平台管理工具”,以镜像形式和开源的形式进行凋谢。开发者一键部署即可取得开箱即用的后端服务与服务商 saas 利用(服务商微管家),开发者也能够进行与业务的开发对接。 在该板块中次要介绍该工具的性能、使用指南、开发和保护指南等相干内容。 简略说:就是能够通过第三方对受权的公众号小程序进行部署保护和开发。 本文不介绍账户注册审核相干信息,如果须要请关注微信第三方文档。 https://developers.weixin.qq.... 官网提供了一套基于golang的程序跑起来就能够实现大部分事件了。 https://developers.weixin.qq.... 流程劣势原有根底流程: 开发 -> 手动上传代码 -> 手动 [体验版测试] -> 手动提交审核 -> 手动公布(灰度?) 现有自动化:比照上一个流程,只是标准了分支和上传。 开发 -> 上传到开发分支 -> 合并到[测试|公布分支] -> webhook触发构建 -> 上传代码  -> 手动 [体验版测试] -> 手动提交审核 -> 手动公布(灰度?) 接入第三方的自动化:残缺的从开发到公布的标准,几乎完满,就是步骤多了一点。 开发 -> 上传到开发分支 -> 合并到[测试|公布分支] -> webhook触发构建 -> 上传草稿代码 -> 设置成模版代码 -> 上传模版代码 ->  [体验版测试] -> 提交审核 -> 公布(灰度?) 从上传到公布都能够通过第三方平台进行。 利用接入当领有第三方平台利用后第一步就是接入了,这个很简略通过官网程序让管理员抉择小程序进行接入就好了。 利用开发相比旧的开发,这里的改变十分小,只减少了一个ext.json的配置文件。ext.json决定开发时采纳的小程序。 ...

February 9, 2023 · 1 min · jiezi

关于ci-cd:工程化-CICD-管道安全实践

随着互联网越来越受器重,前端开发不再是简略的实现一个界面,应用 Javascript 让页面有肯定的交互特效。在同一个期间的迭代里,咱们可能须要同时开发浏览器利用、桌面端,甚至是 App、小程序等等。导致了咱们迫切的须要思考一种新的形式,优化咱们前端的开发工作。而 CI/CD 是工程化的重要环节之一。 为什么须要 CI/CD ?咱们每次我的项目迭代过程中都会听到的各种埋怨:来自测试的埋怨、开发的埋怨,甚至是技术主管、运维的埋怨...... 工夫一长,很可能会导致同一个项目组的成员关系越来越差,我的项目的品质也不会好。我的项目迭代过程中常随同着以下 5 大现状: 或者有人会说:我的项目发版一年只有那么几次,比起我的项目疾速的迭代,搭建 CI/CD 零碎只是一件必要然而不紧急的事件。 咱们先来看看 GitLab 2020 DevSecOps 的考察数据统计: 频繁的发版,可能导致咱们每天都得耗在发版里,基本没有工夫做新的迭代。这尚且是 2020 年的数据统计,如今已是 2022 年,发版只可能更加频繁。 那么,搭建 CI/CD 零碎还是一件不紧急的事件吗? 什么是 CI/CD ?CI/CD 起源于 70 年代,软件工程的概念被提出,通知咱们不仅须要会开发软件,还须要零碎的、标准的开发和保护软件,这标记着工程化意识的沉睡。直到几十年后,2015 年比尔团队的《凤凰我的项目: 一个 IT 运维的传奇故事》这本书才介绍了 CI/CD 的雏形。现今,CI/CD 已被宽泛地提起以及利用。 从字面意思了解,CI/CD 是由两局部组成的。CI 指代继续集成,是指咱们 Push 代码后对代码进行的一系列质保实际。通过继续集成,咱们能够更早地辨认和修复谬误以及平安问题。CD 是由继续交付和继续部署组成。简略了解是上线过程的一组实际,缩小人为误操作的危险。简略的了解就是,CI/CD 是继续集成和继续交付联合的一组实际。 传统上咱们将新代码从提交到生产中所需的大部分或全部都是人工干预,例如构建、测试和部署,以及基础设施的配置等等。而 CI/CD,是将所有都自动化了。应用 CI/CD 管道,开发人员只需将更改后的代码 Push 上代码仓库,而后 CI/CD 管道会主动构建和测试,最初进行交付和部署。 深刻理解 CI/CD回顾残缺的 CI/CD 过程图,咱们能够发现版本控制和自动化测试是整个 CI/CD 管道中重要的两个环节。 ...

December 22, 2022 · 3 min · jiezi

关于ci-cd:建木v257发布

建木是一个面向DevOps畛域的极易扩大的开源无代码(图形化)/低代码(GitOps)工具。能够帮忙用户轻松编排各种DevOps流程并散发到不同平台执行。 建木v2.5.7现已公布 性能优化与BUG修复将排序维度--最近执行开始工夫改成最近触发工夫 我的项目未开启并发执行,前序流程执行中或挂起,以后流程待启动,在日志中减少相应提醒 0s<=执行时长<1s时,应展现为“有余1s” 待启动我的项目执行时长应为“无” 节点运行工夫过长时,容器因超时强制进行缩短卡片状态切换的工夫卡片应展现最初一次触发的流程实例待启动我的项目点击终止,执行时长应间接变成无点击触发,应实时展现我的项目状态在搜寻我的项目页面,待启动我的项目点击终止按钮后,页面数据凌乱待启动的我的项目,其开始工夫为上一个流程实例的开始工夫,应该为空官⽹:https://jianmu.dev代码:https://gitee.com/jianmu-dev文档:https://docs.jianmu.dev示例:https://ci.jianmu.dev

October 21, 2022 · 1 min · jiezi

关于ci-cd:十大-CICD-安全风险二

在上一篇文章中,咱们次要介绍了 CI/CD 中流程管制机制有余和身份及拜访治理有余两大平安危险,并为企业及其开发团队在缓解相应危险时给出了一些倡议。明天咱们将持续介绍值得企业高度关注的 CI/CD 平安危险。 依赖链滥用依赖链滥用(Dependency Chain Abuse)危险是指攻击者滥用与软件开发工作站和构建环境如何获取代码依赖项相干的缺点,导致恶意程序包在拉取时无心中被提取并在本地执行。 危险形容随着企业中所有开发环境中波及的零碎数量越来越多,治理自编写代码应用的依赖项和内部包变得更加简单。通常应用每种编程语言的专用客户端来获取包,这些包来自自治理的包存储库(例如 Jfrog Artifactory)和特定语言的 SaaS 存储库(例如——Node.js 具备 npm 和 npm 镜像仓库,Python 的 pip 应用 PyPI , 并且 Ruby 的 gems 应用 RubyGems)。 大多数企业可能轻松地检测具备已知破绽的软件包的应用状况,并对自行编写的代码和第三方代码进行动态剖析。然而,在应用依赖项的上下文中,须要一组同样重要的管制来爱护依赖项生态系统,包含爱护定义如何拉取依赖项的过程。 不充沛的配置可能会导致安全意识不强的软件开发人员下载歹意包。在大多数状况下,因为预装置脚本和相似过程旨在在拉取包后立刻运行包的代码,因而这个过程不仅下载了包,并且在下载后立刻执行包。在这种状况下,次要的攻打向量是: 依赖性混同——在公共存储库中公布与外部包名称雷同的歹意包,试图诱使客户端下载歹意包而非公有包。依赖劫持——取得对公共存储库包的维护者帐户控制权,来上传宽泛应用的包的歹意版本,让用户拉取最新版本的包。Typosquatting - 公布与风行软件包名称类似的恶意软件包,在开发人员拼错软件包名称时无心中获取名称类似的恶意软件包。Brandjacking – 以与特定品牌包的命名约定或其余特色统一的形式公布歹意包,利用与品牌的谬误关联,试图让开发人员无心获取这些包。影响应用上述形式之一将包上传到公共包存储库的攻击者,其指标是在拉取包的主机上执行恶意代码。这能够是开发人员的工作站,也能够是拉取软件包的构建服务器。一旦恶意代码运行,就能够在执行的环境中利用它来窃取凭据和横向挪动。另一个潜在的状况是攻击者的恶意代码从构建服务器进入生产环境。在许多状况下,恶意程序包还将持续放弃用户冀望的原始平安性能,从而升高被发现的可能性。 倡议依据特定于不同语言特定客户端的配置以及外部代理和内部包存储库的应用形式,对应的危险缓解办法在具体执行时会有所不同,不过所有举荐的管制都具备雷同的领导准则: 不应容许任何拉取代码包的客户端间接从 Internet 或不受信赖的起源获取包。相同,应施行以下管制: 每当从内部存储库中提取第三方包时,请确保通过外部代理而不是间接从 Internet 中提取所有包。在代理层部署额定的安全控制,具备针对被拉取的包的进行平安考察的能力。在实用的状况下,不容许间接从内部存储库中提取包。将所有客户端配置为从外部存储库中提取蕴含预先审查的包的包,并建设平安机制来验证和强制执行此客户端配置。为拉取的包启用校验和验证和签名验证。防止将客户端配置为拉取最新版本的软件包。首选配置预先审查的版本或版本范畴。应用特定于框架的技术将组织所需的包版本继续“锁定”到稳固且平安的版本。范畴: 确保所有公有包都在组织范畴内注册。确保所有援用公有包的代码都应用包的范畴。确保客户端被迫仅从您的外部注册表中获取您组织范畴内的包。当装置脚本作为包装置的一部分执行时,请确保这些脚本存在独自的上下文,该上下文无权拜访构建过程中其余阶段可用的秘密和其余敏感资源。确保外部我的项目始终在我的项目的代码存储库中蕴含包管理器的配置文件(例如 NPM 中的 .npmrc),以笼罩在获取包的客户端上可能存在的任何不平安配置。防止在公共存储库中公布外部我的项目的名称。思考到企业同时应用的包管理器和配置的数量之大,齐全避免第三方链滥用(third party chain abuse)并不容易。因而,倡议确保对检测、监控和缓解措施给予适当的关注,以确保在产生事变时尽快发现并尽可能减少潜在侵害。基于流水线的访问控制有余流水线执行节点能够拜访执行环境内外的泛滥资源和零碎。在流水线中运行恶意代码时,攻击者利用有余的基于流水线的访问控制(Pipeline-based access control, PBAC)危险滥用授予流水线的权限,以便在 CI/CD 零碎外部或内部横向挪动。 危险形容流水线是 CI/CD 的要害外围。执行流水线的节点执行流水线配置中指定的命令,来进行大量的波及敏感信息的流动: 拜访源代码,并进行构建和测试。从不同地位获取机密信息,例如环境变量、保存库、基于云的专用身份服务(例如 AWS 元数据服务)和其余地位。创立、批改和部署工件。PBAC指的是每个流水线以及该流水线中的每个步骤正在运行的上下文。 鉴于每条流水线的高度敏感和要害性质,必须将每个流水线限度为它须要拜访的确切数据和资源集。现实状况下,每个流水线和步骤都应该受到限制,以确保在攻击者可能在流水线上下文中执行恶意代码的状况下,潜在的侵害水平最小。PBAC 包含与流水线执行环境相干的泛滥元素的管制: 在流水线执行环境中拜访:对代码、秘密、环境变量和其余流水线的拜访。对底层主机和其余流水线节点的权限。互联网出入口的过滤。影响一段可能在流水线执行节点的上下文中运行的恶意代码,领有其所运行的流水线阶段的齐全权限。它能够拜访秘密、拜访底层主机并连贯到有问题的流水线的任何零碎能够拜访。这可能导致秘密数据的泄露、CI 环境内的横向挪动,可能拜访 CI 环境之外的服务器和零碎,以及将歹意工件部署到流水线中,甚至生产环境中。攻击者毁坏流水线执行节点或将恶意代码注入构建过程的场景的潜在毁坏水平,取决于环境中 PBAC 的粒度。 ...

October 11, 2022 · 1 min · jiezi

关于ci-cd:CICD-大型企业与开发团队如何进行持续集成与持续发布

Jenkins是当今最风行的继续集成工具之一, 企业抉择Jenkins,能够从它的灵活性和自动化能力中获益。但除此之外的其余需要呢?企业规模在一直增大,他们如何在不减少管理负担的状况下,让CI扩大到整个组织,并满足平安和合规要求? 作为业余的DevSecOps解决方案提供商、CloudBees受权合作伙伴,龙智始终关注继续集成、继续公布,致力于为您带来最佳实际参考,欢送随时分割咱们,理解更多Jenkins企业版——CloudBees的相干信息。 Jenkins®领有超1800个插件,以及一个充满活力、一直发展壮大的社区。显然,它是寰球当先的继续集成(CI)和继续交付(CD)的开源自动化服务器,十分弱小、灵便,可能帮忙用户在各种软件开发环境中获得成功。 企业受害于Jenkins的灵活性和自动化能力,但同时,他们也有其余需要,比方,他们须要在不减少管理负担的状况下,将CI扩大到整个组织,并满足平安和合规要求。如何做到? 答案是应用CloudBees CI。这是一个由Jenkins的最大贡献者——CloudBees基于Jenkins构建的解决方案,被称为Jenkins的企业版。 CloudBees CI是一个对立的治理引擎,为实际继续集成的软件开发团队治理所有CI自动化的需要。它建设在Jenkins根底之上,并减少了对单个团队我的项目/Controller、弹性扩大、合规性和安全性的集中管理。这一切都是在业余Jenkins反对下,让人毫无顾虑。CloudBees CI能够让您播种两败俱伤的后果:Jenkins基础设施管理员实现了集中管理与工作量的升高,同时也让开发人员取得了自主权,能够更加专一于翻新。 集中管理Jenkins管理员能够通过一个地方控制台治理多个Controller、我的项目和团队,这将大大简化治理工作。开发团队能够建设本人的Jenkins实例和工具,同时由管理员集中处理反对和保护。同样,插件也能够集中管理,这样就能确保每个团队都有他们须要的集成,而不必担心平台的稳定性。 内置平安企业能够通过一个反对单点登录、事后配置的平安模型,疾速退出新我的项目和团队。基于角色的访问控制让您可能更精密地管制对流水线和工作的拜访权限。除了这一平安性能,还有其余许多平安性能独特作用,让变更在无心中进入生产的危险大大降低。 除此之外,CloudBees CI还提供一个牢靠的、通过验证的Jenkins版本,并通过更新被动解决开源的任何破绽。插件也通过稳定性和安全性测试,以便与Jenkins构建一起应用。如果构建中呈现问题,CloudBees能够很容易复制并找到修复办法,从而缩小了管理员调试问题所破费的工夫和资源。如果您打算在Kubernetes上运行CloudBees CI,则会提供一个通过签名的、平安加固的容器镜像。 弹性扩大CloudBees CI的扩大在两个维度下进行:基础设施层和组织层。当CloudBees CI托管在Kubernetes平台上时,它能够利用Kubernetes的弹性和还原力。这样,不论运行多少数量的测试或构建,企业都不会遭逢瓶颈,甚至能够同时运行。而且,如果某个Controller资源处于闲置状态,它能够休眠,缩小反对它的不必要的基础设施老本。 在组织层面,每个开发团队都有他们本人的虚构Jenkins Controller。这缩小了对基础设施的限度,并确保如果一个Controller产生故障,危险就会被隔离在该我的项目或团队,而不是波及整个组织。 合规性领有成熟CI实际的企业当初寻求的是更高层次的平安和治理,所以CloudBees自带的性能能够让员工疾速上手,遵循企业的最佳实际,合乎企业标准以及职责拆散模型。 开发团队能够应用他们本人的平安、隔离的工作区,这些工作区事后针对他们的需要配置了通过批准的、齐全反对的插件和平安设置。 规范的团队环境为了确保遵循平安最佳实际,会应用集中管理、独特配置的代码包。这些代码包中包含了集中管理的规范流水线,这样团队就能够专一于他们正在构建的代码,缩短产品的上市工夫,同时确保实际的规范化与安全性。 专家反对CloudBees作为Jenkins的贡献者,他们的工程师领导了Jenkins社区的许多要害动作。 作为CloudBees受权合作伙伴,龙智联结CloudBees的技术专家为您提供业余的技术支持,DevOps落地的最佳实际参考,以及CloudBees的相干培训。

September 5, 2022 · 1 min · jiezi

关于ci-cd:研讨会回放视频如何提升Jenkins能力使其成为真正的DevOps平台

“如何实现集中管理、灵便高效的CI/CD”在线研讨会精彩分享演讲嘉宾:杨海涛在2022年3月29日举办的“如何实现集中管理、灵便高效的CI/CD”在线研讨会中,嘉宾杨海涛为大家带来了主题为“从Jenkins到DevOps平台”的精彩演讲。 杨海涛是现任 CloudBees 亚太区资深解决方案工程师,他在帮忙企业实现麻利和云原生上领有丰盛的实践经验和深刻了解。CloudBees 是 Jenkins 的重要贡献者,其团队奉献了 Jenkins 中80%以上的代码。 方才两位老师从实践到实际,对于 CI/CD,包含DevOps技术进行了十分精彩的论述。我将进一步的跟大家收敛一下,具体的聊聊目前应用最广泛的 CI/CD 工具 —— Jenkins 。以及如何把现有的 Jenkins 能力再晋升一个级别,让它成为一个真正的 DevOps 平台。再看看从 CI/CD 到 DevOps 平台,两头到底短少了哪些,如何去把这些能力补足。 既然来讲 Jenkins ,那总得晓得点他人不晓得的货色,对不对?上面,就从两个插件开始讲起。这两个插件置信大家肯定都不太理解、不太晓得。但这两个插件性能十分特地。具体哪两个插件,咱们一个个来说。△ 研讨会现场ppt示例 第一个插件叫 Chunk Norris,不晓得大家有没有据说过。如果有趣味大家能够在网上搜一下。这老兄是一位好莱坞明星,同时也是一位空手道世界冠军。他已经主演了一部电影,这个电影名字叫做《猛龙过江》,另外一位演员就是李小龙。大家大略晓得这老兄的定位,就是功夫硬汉明星。 Jenkins 把他加到插件里,实现了什么性能?其实是一个十分有意思的性能,那就是每次你在 Jenkins 做一个 build,不论胜利或者失败或者怎么样,依据不同 build 的后果,都会展示他(Chunk Norris)各种各样不同的照片,以及他已经说过的话,还是很有意思的。这个(插件)在国外十分的广泛,我预计在国内用的人不多,晓得的人也不多。 第二个插件是什么?这个叫做 Emotional Jenkins ,就是情绪化的 Jenkins ,或是理性的 Jenkins 。因为Jenkins自身来源于一个具体的人物 —— Jenkins 学生,所以有人在开发过程当中,加点有意思的调料,像 Chunk Norris 插件一样。他加了几张不同的图片,比如说在 build 胜利的时候,会显示 Jenkins 学生快乐的图片。如果测试失败,会呈现发愁的图片,阐明没有通过。如果编译谬误,就是呈现发怒的图片。 可能有敌人会说,你这是在逗闷呢,对的,的确是开个玩笑。因为说实话,Jenkins 在开发团队、各个企业中应用切实太广泛了,社区中的高手太多,所以就我本人来讲,真不敢跟大家讲 Jenkins 更高级的性能和程度。我置信比我更理解开源 Jenkins 的人还有很多,所以也不敢卖弄。 Jenkins当初应用很广泛,广泛到什么水平?咱们能够看到,Jenkins 通过了十年多的倒退,到目前,寰球有超过70%的开发人员在应用开源的 Jenkins 。随着应用的人数越来越多,围绕着 Jenkins 也造成了一个十分宏大的生态系统。在这个生态系统里,当初有超过1,800个插件。 ...

April 26, 2022 · 1 min · jiezi

关于ci-cd:基于DroneGogs流水线全面认识轻量级云原生CI引擎Drone

1. 介绍Drone by Harness™ 是一个基于Docker容器技术的可扩大的继续集成引擎,用于自动化测试、构建、公布。每个构建都在一个长期的Docker容器中执行,使开发人员可能齐全管制其构建环境并保障隔离。开发者只需在我的项目中蕴含 .drone.yml文件,将代码推送到 git 仓库,Drone就可能自动化的进行编译、测试、公布。能够与Docker完满集成。https://docs.drone.io/ 特点Drone引入了Pipelnes的概念,管道可帮忙咱们自动化软件交付过程中的步骤,例如启动代码构建,运行自动化测试以及部署到暂存或生产环境。通过将.drone.yml文件放在git信息库的根目录中来配置管道。 yaml语法旨在易于浏览和表白,以便查看存储库的任何人都能够了解工作流程。Drone通过多个step来实现一系列的指令。为什么抉择Drone?和 Jenkins 相比, Drone 就轻量的多了,从利用自身的装置部署到流水线的构建都简洁的多。因为是和源码管理系统相集成,所以 Drone 天生就省去了各种账户权限的配置,间接与 gitlab 、 github 、 Bitbucket 这样的源码管理系统操作源代码的权限统一Drone 与风行的源代码治理提供商无缝集成,反对github、gitlab、gogs、gitea、gitee、bitbucket server/cloud, 这是应用Drone的第一印象,能够履行疾速打造GitOps场景流水线插件是执行预约义工作的 Docker 容器,通过将它们配置为Pipeline中的步骤。插件可用于部署代码、公布工件、发送告诉等。 2. 部署Gogs-极易搭建的自助 Git 服务 装置MySQLdocker run --name gogs-mysql --restart=always -v /opt/mysql/mysqlVolume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7.19创立Gogs及drone数据库#mysql -uroot -p123456 -h 127.0.0.1CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;create database drone;# Pull image from Docker Hub.$ docker pull gogs/gogs# Create local directory for volume.$ mkdir -p /var/gogs运行Gogsdocker run --name=gogs --restart=always --link gogs-mysql:db -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs账号:admin明码:123456 ...

March 20, 2022 · 2 min · jiezi

关于ci-cd:Day-28100-CI-CD-基本入门概念

CI/CD 是一种通过在利用开发阶段引入自动化来频繁向客户交付利用的办法。CI/CD 的外围概念是继续集成、继续交付和继续部署。 1、CI继续集成(Continuous Integration)CI/CD 中的"CI"始终指继续集成,它属于开发人员的自动化流程。 胜利的 CI 意味着利用代码的新更改会定期构建、测试并合并到共享存储库中。该解决方案能够解决在一次开发中有太多利用分支,从而导致互相抵触的问题。 古代利用开发的指标是让多位开发人员同时解决同一利用的不同性能。然而,如果企业安顿在一天内将所有分支源代码合并在一起(称为"合并日"),最终可能造成工作繁琐、耗时,而且须要手动实现。这是因为当一位独立工作的开发人员对利用进行更改时,有可能会与其余开发人员同时进行的更改发生冲突。如果每个开发人员都自定义本人的本地集成开发环境(IDE),而不是让团队就一个基于云的 IDE 达成统一,那么就会让问题更加雪上加霜。继续集成(CI)能够帮忙开发人员更加频繁地(有时甚至每天)将代码更改合并到共享分支或"骨干"中。一旦开发人员对利用所做的更改被合并,零碎就会通过主动构建利用并运行不同级别的自动化测试(通常是单元测试和集成测试)来验证这些更改,确保这些更改没有对利用造成毁坏。这意味着测试内容涵盖了从类和函数到形成整个利用的不同模块。如果自动化测试发现新代码和现有代码之间存在抵触,CI 能够更加轻松地疾速修复这些谬误。 2、CD继续交付(Continuous Delivery)实现 CI 中构建及单元测试和集成测试的自动化流程后,继续交付可主动将已验证的代码公布到存储库。 为了实现高效的继续交付流程,务必要确保 CI 已内置于开发管道。继续交付的指标是领有一个可随时部署到生产环境的代码库。在继续交付中,每个阶段(从代码更改的合并,到生产就绪型构建版本的交付)都波及测试自动化和代码公布自动化。在流程完结时,运维团队能够疾速、轻松地将利用部署到生产环境中。3、CD 继续部署(Continuous Deployment)对于一个成熟的 CI/CD 管道来说,最初的阶段是继续部署。 作为继续交付——主动将生产就绪型构建版本公布到代码存储库——的延长,继续部署能够主动将利用公布到生产环境。因为在生产之前的管道阶段没有手动门控,因而继续部署在很大水平上都得依赖精心设计的测试自动化。实际上,继续部署意味着开发人员对利用的更改在编写后的几分钟内就能失效(假如它通过了自动化测试)。这更加便于继续接管和整合用户反馈。总而言之,所有这些 CI/CD 的关联步骤都有助于升高利用的部署危险,因而更便于以小件的形式(而非一次性)公布对利用的更改。不过,因为还须要编写自动化测试以适应 CI/CD 管道中的各种测试和公布阶段,因而后期投资还是会很大。 参考链接https://www.redhat.com/zh/top...

February 18, 2022 · 1 min · jiezi

关于ci-cd:GrowingIO-Design-组件库搭建之-CICD

前言在《GrowingIO SaaS 产品 CI/CD 实际》一文中,介绍了继续集成(Continuous Intergration,简称 CI)、继续交付(Continuous Delivery,简称 CD)和继续部署(Continuous Deployment,简称 CD)三个概念,以及在 GrowingIO SaaS 产品中的实际。 文中还强调一个典型的 CI/CD 流程建设至多须要具备以下性能的工具: 代码存储库,即须要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库继续集成服务器,用于主动执行构建,测试,部署等工作集中的制品治理仓库,用于寄存构建的成绩物,用于部署主动部署工具,用于将构建到的程序主动的部署到指标服务器 对于 GrowingIO Design,应用的工具是:代码存储库:GitHub继续集成服务器:GitHub Actions集中的制品治理仓库:npm主动部署工具:Vercel继续集成 代码查看(Lint codes)在《GrowingIO Design 组件库搭建之开发工具》一文中,介绍了组件库应用 stylelint 和 ESLint 作为代码标准工具。 为了方便使用,在 package.json 文件中减少一下两个脚本(后文简称脚本化): { "scripts": { "eslint": "eslint src --ext .ts,.tsx", "stylelint": "stylelint 'src/**/*.{css,less}' --syntax less", }, } 而后用 GitHub Actions 来执行这两个命令: jobs: lint: name: Lint codes needs: install runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 with: ref: ${{ github.event.pull_request.head.sha }} - name: Setup Node.js uses: actions/setup-node@v2.4.1 with: node-version: 14 - name: Restore Node.js modules uses: actions/cache@v2.1.6 with: path: node_modules key: ${{ runner.os }}-${{ hashFiles('yarn.lock') }} - name: StyleLint run: yarn stylelint - name: ESLint run: yarn eslint 单元测试(Unit test)《GrowingIO Design 组件库搭建之单元测试》中提到单元测试工具次要应用 Jest,在 CI 流程中除了保障单元测试通过,还要统计测试笼罩状况(通过 --coverage 参数来实现)。 命令脚本化: ...

October 15, 2021 · 4 min · jiezi

关于ci-cd:Linux下使用GitLab的runner来自动部署Go项目

Linux下应用GitLab的runner来主动部署Go我的项目在我的项目开发过程中,咱们常常会应用GitLab的CI/CD来主动部署我的项目,明天就让咱们来实现一个在Linux下启用GItLab的CI/CD来实现Go我的项目的主动部署。 咱们须要在GitLab上有一个我的项目,这里就不做演示了,咱们间接开始先装置runners。 1 装置runnersGitLab有三种Runner,别离是: Shared runners are available to all groups and projects in a GitLab instance.Group runners are available to all projects and subgroups in a group.Specific runners are associated with specific projects. Typically, specific runners are used for one project at a time.了解来说的话,就是: Shared runners是所有组和我的项目都能够应用共享流道,管理员来操作,通常只用在小团队中,GitLab中,默认是没有的。Group runners比拟罕用,能够反对团队内多个我的项目共享。 可复用的Runner,能够同时反对一类我的项目的CI,进步资源复用率。Specific runners则是与特定的我的项目关联,不能共享。 而且,对集体我的项目来说,没有Group这一层,应用Specific runners是比拟适合的。Runner是由运行在服务器上的守护过程来治理,一个守护过程能够治理多个runner,多个runner之间是依据token和url,注册到指定的GitLab上。 上面的教程也是基于Specific runners来做演示,首先咱们先下载GitLab的runner,咱们先进入GitLab的runner下载页面:https://docs.gitlab.com/runne...,能够看到官网的装置教程。 我当初应用的机器是一台腾讯云的Linux服务器,因而我须要抉择Install on GNU/Linux,如下图所示: 如果大家应用的是别的零碎,能够抉择对应的下载方式即可。 而后能够依据提醒进入下载页面,也可间接看上面的例子,下载对应的安装包,演示的机器应用的是Centos,抉择上面的例子即可。 这时候会发现,这个命令里有一个${arch}的参数,咱们看正文: # Replace ${arch} with any of the supported architectures, e.g. amd64, arm, arm64# A full list of architectures can be found here https://gitlab-runner-downloads.s3.amazonaws.com/latest/index.htmlcurl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_${arch}.rpm"${arch}能够替换为任何反对的体系架构,也就是咱们须要改成这个样子: ...

October 11, 2021 · 2 min · jiezi

关于ci-cd:开发侧的CI-应该怎么做

CI 的理念是「频繁地,疾速地检测软件品质」,曾经被证实是一种比拟好的开发实际。本文沿着这一思路,试图总结出一点教训。 一种典型的开发人员流程如下: CI中最重要的准则是两个: 频繁,频次尽可能高。如果一个自动化工具不能被频繁地应用,那么它的价值会被大打折扣。疾速。如果一个自动化工具,单次应用的工夫太长,那么它的价值会被大打折扣。根据上述准则,流程中每一阶段的比照: 综合上述表格,有如下教训: push 阶段的CI必做合并merge request的CI倡议做,也能够将其提前本地commit阶段的CI,有精力就做,但大概率投产比不会高因而能够用一幅图概括:

July 28, 2021 · 1 min · jiezi