我如何用JFrog管道跃进我的Jenkins建设

詹金斯是当今市场上最流行的开源CI工具。作为市场的早期进入者,Jenkins推广了CI。和其他CI工具一样Jenkins使开发人员能够在将代码提交到源存储库时自动构建、集成和测试代码。这允许开发人员快速捕获bug并最终更快地部署。
现在,在《詹金斯》首次上映十多年后,它正处于一个十字路口。对于詹金斯社区的很大一部分人来说,它已经成为他们“容忍”的工具。术语“Jenkins扩展”已经成为IT术语的一个常见部分。当使用大量的插件并且这些插件开始相互碰撞时,Jenkins遇到了复杂性墙。摆脱这种“插件地狱”的一种方法是将工作负载(和插件)分散到更多的服务器和实例上。随着开发团队添加更多的Jenkins实例,他们面临管理激增的孤立的Jenkins配置的挑战。不幸的是,你只是在用一种复杂性换取另一种复杂性。此外,詹金斯是为前集装箱和前微服务时代而建造的。任何工具要保持其价值,都必须与这些更广泛的技术趋势保持一致。
在这篇博文中,我将介绍加速和提高的不同方法你的CI / CD DevOps使用JFrog管道作为您的SDLC.
JFrog pipeline是一种用于构建、测试和部署软件的自动化解决方案。它提供所有键的端到端编排和优化你的DevOps管道的流程,包括以下优点:
- 管道不仅仅是一个独立的CI/CD解决方案,它是JFrog平台,以Artifactory和您的二进制文件为核心
- 插件免费架构——我们都知道维护插件有多麻烦……
- 快速和简单的管道配置本机的步骤
- 集中服务(与“詹金斯扩张”相比)尺度到正无穷
- YAML的语法-易学
- 内置的安全漏洞扫描和license遵从性与JFrog x光
作为JFrog的一名解决方案工程师,以下是我经常从我们企业+产品的客户那里得到的一些问题和关注。具体来说就是如何处理Jenkins环境到JFrog pipeline的迁移过程。
- 为什么我们要通过改变工作的过程来冒险部署呢?
- 将我们所有的CI/CD流程迁移到JFrog pipeline将花费大量的时间!
- 我们有Jenkins的所有插件!我们对JFrog也会有同样的支持吗?

詹金斯管道的例子
我将使用下面的内容端到端Kubernetes CI / CDJenkins管道基线示例,说明如何以及为什么使用JFrog管道可以为您工作。这条管道构建了众所周知的宠物医院Maven项目,使用Docker对其进行容器化,并使用Helm图将创建的映像部署到K8s集群环境中。它包括以下步骤:
持续集成(CI)
- 构建一个Maven项目(宠物诊所Spring应用程序),并将结果二进制文件部署到Artifactory。
- 使用Docker对新应用程序进行容器化,并将新映像部署到Artifactory。
持续部署(CD)
- 安装Helm, k8s的包管理器。
- 使用Artifactory中提供的Helm Chart,将承载应用程序的映像部署到基于k8s的生产环境中。

以上管道(Jenkinsfile & Dockerfile)的代码示例是可用的在这里.
让我们看看可以为这个非常常见的CI/CD示例实现的可能技术。
使用JFrog管道向前跃进
您可以选择三种基本技术来启动JFrog pipeline。前两种方法实现了与Jenkins的集成,并且可以以任何顺序进行,或者您也可以选择这两种集成方法中的一种。一旦你将Jenkins与JFrog pipeline集成在一起,你就可以继续进行#3,并将所有未来的投资集中在JFrog pipeline上:
- 触发管道(CD)从詹金斯(CI)使用进来的人- JFrog管道公司的一等公民。
- 迁移SDLC的部分内容是可行的方法;触发你的Jenkins (CD)从JFrog管道(CI)与詹金斯集成.
增加更多的自动化来简化您的流程用JFrog pipeline设计新的CI/CD流程.
1.webhook是JFrog pipeline的一级公民
一种方法是保存和维持詹金斯的CI,但使用JFrog pipeline执行实际部署.
连接JFrog管道与Jenkins是可能的使用进来的人,它在Jenkins的CI的最后一步触发执行一个新的运行在JFrog管道,通过发送webhook请求JFrog管道码头工人形象而且建立信息部署在Artifactory中。
优点:
- 减少了处理Helm &谷歌云SDK安装的需要,从而更快地执行部署。
- 避免Jenkins扩展和基于Kubernetes Plugins的“插件地狱”,使用JFrog pipeline原生步骤来部署到Kubernetes。
- 本地集成与Artifactory拉和管理Helm图表。

Jenkins构建完成后,JFrog pipeline可以管理将图表部署到k8s集群。
这可以用HelmDeployJFrog pipeline中的原生步骤,这是一个预先打包的声明性步骤,不需要Helm脚本。
让我们记住,我们的集群运行在谷歌Kubernetes Engine上。因此谷歌云集成添加以允许部署步骤:

代码示例(Jenkinsfile & pipelines.yml)是可用的在这里.
2.Jenkins与JFrog管道的集成—部分迁移是可行的方法
从头重写整个CI/CD并没有什么意义。到目前为止,您使用Jenkins所做的所有努力都是有价值的。与我们的詹金斯集成对于将要迁移的特定部分,您拥有完全的灵活性。您甚至可以选择与Jenkins集成,而不将当前的工作负载从Jenkins迁移出去,而是将所有未来的工作负载集中在JFrog pipeline上。出于本文讨论的目的,我们假设您希望迁移部分工作负载。
例如,假设您在CD流程中投入了大量资金,并且希望将当前实现保留在Jenkins中,只迁移CI部分以受益于JFrog pipeline的优势。
优点:
在JFrog管道上创建一个新的Jenkins集成:

Jenkins的用户名、API令牌和URL将被JFrog pipeline用于通信,而Callback URL将被Jenkins使用。
Jenkins中的配置如下所示:

“测试连接”基于在pipeline端创建的Integration URL,验证从Jenkins端也可以实现通信。
然后CI可以在JFrog pipeline中执行:

最后一步将触发一个新的部署(CD),它在Jenkins中以相同的方式实现:

在Jenkins中,最后一步报告部署已成功完成。
代码示例(Jenkinsfile & pipelines.yml)是可用的在这里.
3.Helm CI/CD—增加更多的自动化以简化您的流程
Helm是Kubernetes的包管理器。Helm部署定义打包应用程序的图表。它是所有版本化的、预配置的应用程序资源的集合,可以作为一个单元部署。2022世界杯阿根廷预选赛赛程
我们经常更改部署软件的方式,这些更改反映在不同的Helm图表版本中,这些版本都可以存储在Artifactory中使用执掌图表库.
使用JFrog pipeline,您可以自动将新的Helm图表部署到Artifactory的过程HelmPublish本机的一步。
优点:
- 打包图表不需要使用Helm进行编码,而是使用原生编写的步骤,该步骤还会检查图表的可能问题(lint: true)。
- 减少了处理Helm安装的需要(版本可以根据需要选择v2/v3)。
更新现有管道资源立即触发将此资源作为输入的其他管道。

代码示例(pipelines.yml)是可用的在这里.
在这篇博文中,我们发现了三种不同的方法,可以将JFrog pipeline作为现有的基于Jenkins的DevOps流程的一部分来实现飞跃。希望这将鼓励您考虑同时使用多种方法。
看看JFrog pipeline如何为您工作,自己试试>
