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

我的詹金斯建立与JFrog管道863_300-100

詹金斯是当今市场上最流行的开源CI工具。作为市场的早期进入者,Jenkins推广了CI。和其他CI工具一样Jenkins使开发人员能够在将代码提交到源存储库时自动构建、集成和测试代码。这允许开发人员快速捕获bug并最终更快地部署。

现在,在《詹金斯》首次上映十多年后,它正处于一个十字路口。对于詹金斯社区的很大一部分人来说,它已经成为他们“容忍”的工具。术语“Jenkins扩展”已经成为IT术语的一个常见部分。当使用大量的插件并且这些插件开始相互碰撞时,Jenkins遇到了复杂性墙。摆脱这种“插件地狱”的一种方法是将工作负载(和插件)分散到更多的服务器和实例上。随着开发团队添加更多的Jenkins实例,他们面临管理激增的孤立的Jenkins配置的挑战。不幸的是,你只是在用一种复杂性换取另一种复杂性。此外,詹金斯是为前集装箱和前微服务时代而建造的。任何工具要保持其价值,都必须与这些更广泛的技术趋势保持一致。

在这篇博文中,我将介绍加速和提高的不同方法你的CI / CD DevOps使用JFrog管道作为您的SDLC

JFrog pipeline是一种用于构建、测试和部署软件的自动化解决方案。它提供所有键的端到端编排和优化你的DevOps管道的流程,包括以下优点:

作为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上:

  1. 触发管道(CD)从詹金斯(CI)使用进来的人- JFrog管道公司的一等公民。
  2. 迁移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图表。

触发JFrog管道

Jenkins构建完成后,JFrog pipeline可以管理将图表部署到k8s集群。

这可以用HelmDeployJFrog pipeline中的原生步骤,这是一个预先打包的声明性步骤,不需要Helm脚本。

让我们记住,我们的集群运行在谷歌Kubernetes Engine上。因此谷歌云集成添加以允许部署步骤:

JFrog管道管理Helm图部署到K8S集群部署

代码示例(Jenkinsfile & pipelines.yml)是可用的在这里

2.Jenkins与JFrog管道的集成—部分迁移是可行的方法

从头重写整个CI/CD并没有什么意义。到目前为止,您使用Jenkins所做的所有努力都是有价值的。与我们的詹金斯集成对于将要迁移的特定部分,您拥有完全的灵活性。您甚至可以选择与Jenkins集成,而不将当前的工作负载从Jenkins迁移出去,而是将所有未来的工作负载集中在JFrog pipeline上。出于本文讨论的目的,我们假设您希望迁移部分工作负载。

例如,假设您在CD流程中投入了大量资金,并且希望将当前实现保留在Jenkins中,只迁移CI部分以受益于JFrog pipeline的优势。

优点:

  • JFrog管道与Artifactory的本地集成。
  • Dockerize应用程序很容易从Artifactory中获取最新的软件JFrog CLI/文件规范

在JFrog管道上创建一个新的Jenkins集成:

在JFrog pipeline上创建一个新的Jenkins Integration

Jenkins的用户名、API令牌和URL将被JFrog pipeline用于通信,而Callback URL将被Jenkins使用。

Jenkins中的配置如下所示:

JFrog在Jenkins中管道服务器配置

“测试连接”基于在pipeline端创建的Integration URL,验证从Jenkins端也可以实现通信。

然后CI可以在JFrog pipeline中执行:

CI在JFrog管道中执行

最后一步将触发一个新的部署(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)。

更新现有管道资源立即触发将此资源作为输入的其他管道。

发布舵手图与JFrog管道

代码示例(pipelines.yml)是可用的在这里

在这篇博文中,我们发现了三种不同的方法,可以将JFrog pipeline作为现有的基于Jenkins的DevOps流程的一部分来实现飞跃。希望这将鼓励您考虑同时使用多种方法。

看看JFrog pipeline如何为您工作,自己试试>