2020年绝对是值得我们所有人记住的一年。和你们一样,我们一直在家工作,应对各种新的挑战和流程。但是,当我们与您并肩工作时,我们将继续通过增强JFrog平台来实现卓越的价值。这包括所有产品的变化,允许更好的CI/CD编排、更好的二进hth华体会最新官方网站制管理、创新的分发、增强的安全性、创造性的混合架构和更好的端到端平台体验。以下是我们将在本次网络研讨会上介绍的所有新功能:

端到端平台

  • 多步骤的验证
  • 元数据的GraphQL
  • 可观察性:日志分析和开放度量
  • 人则


分布

  • P2P下载
  • 离线分布
  • 通过CDN分发


管道

  • 支持K8S的动态节点池
  • 矩阵构建
  • 可扩展性框架
  • 更深层次的Jenkins集成

会议记录

大家好!我的名字是Or Gat,我是JFrog产品团队的一员,我主要管理与平台和基础设施相关的问题。所以今天我将利用网络研讨会来描述我们在最后一个队列中所做的事情。介绍我们发布的三个主要功能,它们围绕着基础设施和你可以做到的方式,其中大多数是与安全相关的,但也包括你如何与JFrog平台集成,提取一些信息。我希望它会很有趣。

因此,我们今天在JFrog平台上的议程是我们在上个季度启用的多因素身份验证功能。GraphQL的元数据服务,Webhooks。然后[Ifgani 00:00:50]将接管可观察性:日志分析和开放度量项。

因此,我将深入研究多因素身份验证。这不是JFrog独有的,那么什么是多因素身份验证呢?它基本上是多因素身份验证,这意味着您可以通过防止只有一个身份验证因素的用户登录或访问您在应用程序中代表您拥有的数据来提高安全性。因此,在我们的例子中,如果我有我的用户名和密码,这是对JFrog平台进行身份验证的唯一意义,如果其他人获得了我的密码,他们可以验证为我并获得我的数据。

因此,现在大多数模型应用程序都可以启用,您可以作为JFrog平台上的管理员启用多因素身份验证。因此它允许管理员设置基于时间的一次性临时密码的要求,这是TOTP协议的缩写,作为一种额外的身份验证方法。它究竟是如何工作的?一旦启用了该特性,用户在启用该特性后第一次登录时预计会注册一个身份验证方法,即TOTP应用程序,他们可以谷歌身份验证器。它也可以是其他TOTP应用程序。大多数一次性密码都遵循这一协议。

对不起。之后,每次你登录时,除了你的应用程序密码,你的JFrog平台密码,你还会被要求输入一个单独的时间密码。它背后的想法是再次提高安全性,不仅要有我知道的可能的东西,还要有我可能拥有的东西,这是一个设备,它会在JFrog平台上同步给我的用户,让我生成单一的短时间密码,以确保我也有设备。因此,让我们快速演示启用JFrog的多因素身份验证。一秒。这是一个录音机的演示,我会从头到尾讲,如果你们有任何问题,请走开。当然是在聊天的时候。在这个演示中,我是以管理员身份登录的。首先,我需要启用多因素身份验证。我做到了。 So security, settings, we enable Google authenticator, multi-factor authentication. As I mentioned, it doesn’t have to be, it’s not uniquely for Google authenticator. It can be any other authenticator app.

就是这样。一旦启用,用户登录时将被要求注册,然后使用单次密码。我生成一个用户只是为了证明一点,不管这个用户是不是管理员,不管他在应用程序上有什么权限。设置一个快速密码,然后保存,以管理员身份注销,以新用户身份登录。哦,所以在演示中,它从中间被剪掉了。等一下,让我停止分享,我去找…很抱歉,这是演示的问题。上帝总是存在于细节之中。

好的。我将从同一时间点重新分享。我在等它加载,等一下。你们马上就会看到我的屏幕。这是在我创建了用户之后,我要点击播放,继续演示。我以那个用户退出,然后以我刚创建的新用户重新登录,并提供密码。现在我需要能够,我将被要求扫描条形码,基本上,如果我没有上传验证器,你可以下载一个验证器应用程序到我的移动设备上,然后扫描条形码。为了做那个传送门并向您展示它的样子,我在我的机器上有一个模拟器来铸造我的手机。所以我现在就开始。你可以在我的手机上看到这个设备,但最终扫描条形码本身,你必须相信我。

这是我的设备。顺便说一下,这些是我的孩子。现在如果我打开谷歌认证程序,如果这是我第一次扫描,当它要求扫描条形码时,我允许摄像头扫描。我在扫描的时候,手机本身的图像就丢失了,因为这是谷歌的安全功能。但一旦我扫描,我就会在设备上得到一个单一的时间密码。我要关闭这个网站,然后点击下一步。现在我可以在应用程序中使用设备的验证码,在JFrog平台上登录。

这就是多因素认证的基本原理。如果您有任何问题,请发送过来,我们可以稍后讨论。好的。接下来我们将讨论用于JFrog元数据服务器的GraphQL。为了做到这一点,我们将从讨论什么是元数据服务器开始,然后我将讨论什么是GraphQL,然后我也将展示它们。你们能看到我的屏幕吗?表示吗?对不起。是吗?

是的。是的,我们可以

那么什么是元数据服务器呢?它是一个跨JFrog集群内所有JFrog服务提供统一元数据的服务。多产品的数据丰富。hth华体会最新官方网站它是包原生UI屏幕的后端。这是你的着陆屏幕,JFrog平台7版。作为一个非管理员用户,你登陆的第一个尺度是包搜索扫描。元数据服务器基本上就是UI的后端。它为JFrog平台支持的所有包提供了一个通用模型。它还具有改进的数据建模,以便更好地扫描、搜索、过滤等。这是你着陆的屏幕。 This is actually when you dive into a package version, a specific package version, but you can see all the different packages in the JFrog platform. You can dive into a package, a specific package version, and then you can start reading information about the package version. All of this information is basically metadata on package that accumulated in the metadata server.

有些数据是上传到JFrog时随包提供的数据。有些数据是由JFrog平台计算出来的,例如下载计数等。有些数据是你只有在JFrog平台中有多个服务时才能获得的数据,你可以从其他服务中获得丰富的数据,比如XRay数据、分布数据、包部署到哪里以及其他服务。举个例子,这里,你可以看到,我可以看到一个有版本的包,我可以看到它是MIT授权的。但具体来说,如果XRay扫描NPM包,就会发现依赖项使用了不同的车牌,这影响了应该为特定包呈现的实际许可证。然后在这里更改包许可证名称。

因此,您可以在单个UI中获得多个JFrog服务的丰富元数据。但是如何在自动化流程中查询这些信息呢?为此,我们有元数据GraphQL API。GraphQL是一种查询语言,它使您能够查询api并获取所需的特定数据,而且只获取所需的特定数据。使用一个端点,您可以查询您想要检索的相邻格式的数据,这非常容易使用。元数据GraphQL提供了一种获取存储在元数据服务中的包数据的简单方法。由于GraphQL允许您在层次结构中查询对象,因此它允许您选择在响应中包含哪些字段。我们马上会看到一个例子。

此外,您还可以应用许多额外的过滤器。GraphQL中有一个非常好的工具,所以你可以有自己的设备来测试你的查询。我们还提供了一个平台,我马上会展示给你,叫做GraphiQL。这是我们在JFrog平台上提供的一个模型,用来测试你的查询,并学习如何构建查询,看看你得到了相关的结果集等等。

这就是所谓的GraphiQL游乐场工具。它是由JFrog平台提供的,端点,它不是很关键,但你可以在文档中找到所有东西,除了元数据API,查询GraphiQL,你可以构建自己的查询。它对字段名和过滤器等都有自动补全功能,它对你可以查询的所有对象都有完整的文档,包括它们的类型,它们是如何与其他实体和对象相关联的,等等。最终,当然,可以测试你的查询,看看你得到的结果。这里有一个很酷的东西,你们现在可以在演示中看到,我再显示一下屏幕。

这是我,这是我的GraphiQL连接到我使用的实例。我可以写我自己的查询,我可以得到我所描述的实体的描述。所以,在我点击的时间和你看到它的时间之间有一个延迟。所以我会尽量说慢一点。我可以看到我可以查询的对象的整个列表,我可以深入每个对象,看看它代表哪些字段。它有。我也可以查询。例如,我可以看到包和版本之间的关系,在这里。我可以看到我可以应用在一个版本上的过滤器。根据这里使用查询生成器的文档,我可以开始构建自己的查询并单击play并获得我想要的结果。

我将在这里停止演示,我不打算展示它,因为令牌是可用的,而且我不想在我正在使用的生产环境中公开真实的令牌。这让我可以不断添加字段。只要我开始输入,它就会自动补全我想查询的对象和很酷的graphhiql,我只得到基于我所查询的字段的结果。因此,如果我不查询创建日期,我就不会在结果集中获得创建的字段,等等。这是GraphiQL。我要停止分享我的屏幕了。

关于GraphiQL,我想分享的一件很酷的事情是非常非常重要的,它有很多功能,查询构建非常棒。它允许您使用自己的工具集来构建自己的查询,并在使用之前测试代码,它提供了一个非常好的接口,这是到元数据服务器的编程接口。当然,你也可以查询[通过QL 00:15:16]。您可以使用您构建的查询[在QL 00:15:19]。您可以使用基本的HTP方法来查询GraphQL元数据。

今天我要深入探讨的最后一件事是Webhooks。所以基本上Webhooks只是一个简单的方法来建立你的JFrog平台和外部应用程序之间的集成。这就是Webhooks背后的理念。例如Jira、Slack、邮件服务器,甚至CI-CD解决方案。这不是我们在外部开发的CI-CD插件。你可以在平台内部使用,但它是一种基于JFrog平台中发生的事件,通过外部应用程序中的回调URL触发事件的方法。所以任何你已经静止的事件,例如,工件部署/删除,构建推广,Docker推送。你已经可以使用几个领域的事件,我们会不断扩展它们。每当平台中发生选定的事件时,平台将向提供的URL地址发送事件详细信息。听起来很简单。

这里的例子是我要做的第一件事就是给它起个名字。我给出了一个很酷的描述,但最重要的是,我提供了URL。比如我想把触发事件发送到哪里?然后决定要打开哪个域的事件。我可以创建多个事件,但目前每个事件只能选择一个域,每个事件中的每个域中的多个操作。例如,现在我想要每个工件在上传或删除时,然后在工件域中,我将选择工件,因为工件已被删除。

然后,我需要选择希望事件侦听的存储库。所以我可以使用模式选择,任何本地的,任何远程的,就像你设置权限目标来设置我想听的存储库一样。然后我可以添加可能与集成相关的其他信息,例如,像安全令牌,我想发送的其他自定义标头等等。这就是我保存的结果。我再暂停一下,给你们看一个演示。好的。我看到我的屏幕了,对吧?是的。酷。我要做的第一件事就是在另一边创建一个监听器。 So I’m just using a Webhook website, which generates unique URL just for all my tests, where the events can be sent to that URL and then I’ll be able to see requests as they come in, pass them and take a look at what data was sent.

我要从这里复制URL。我将在管理控制台下定义一个新的Webhooks, general Webhooks。我已经有几个了,所以我们将深入研究它们的编辑,看看它们。默认情况下是启用的。名字必须是唯一的,描述也总是很好。这是为了在Webhooks网站上测试Webhooks。具体来说,我注册的事件是当属性被添加到某个东西时。我下了订单,现在我检查,我选择我想使用的域名。这是工件属性只有添加了工件属性,我才想获取事件。正如我所说,你不能在多个域之间混合,但是在一个域中,你可以选择任意多的动作作为Webhook触发器。

然后我必须选择一个存储库。它只是一个简单的存储库,一个通用的,为了演示。但就像我说的,你可以使用模式之类的东西。如果需要认证或额外的头值,它们也可以这样做。

我将跳过它,最终我会在演示中向你们展示我还可以添加额外的自定义标题,我们稍后会在网站上的演示中看到它们。这是甲板。最后要做的一件很重要的事情是你可以测试,不好意思,我要回放一下。你有一个测试按钮,你可以在这里测试,在播放按钮下面。但是您可以测试连接,并在事件飞到服务器时查看它们。看看事件是什么样子的。好的。如果我点击测试Webhooks触发器,你可以看到有效负载,它是一个示例文本和一个示例事件,它们注册到什么事件。我删除了这些事件,因为现在我要在平台中执行与实际事件相同的操作。现在我将转到我所选择的存储库,我将部署一个工件。 Because I have a deploy artifact Webhook.

我要到web服务器本身,看看事件是怎么来的,看看这里的头值。头1,V1。如果需要进行身份验证,那么四个头也可以作为解决方案。然后是实际的原始数据,因为它是事后事件。所以藏物被放置了。工件名称是什么。它被部署在哪里,甚至是校验和,这样我就可以根据我们平台上刚刚发生的事件来编程接收服务器的行为。因此,就像我说的,事件基本上是一种简单的方法,通过发送在JFrog平台中定义的特定事件的有效负载来创建与外部应用程序的集成。需要几秒钟才能停止分享。基本上就是这样。 I’m going to give presenting rights to [Ifgani 00:22:01]. [Ifgani 00:22:01] take it away.

谢谢大家。简短的评论,在演讲的最后我们会有一个简短的问答环节。所以和我们在一起吧。我已经看到在聊天中有几个问题,所以我们将在完成内容本身后回答这些问题。

好的。所以让我快速地给你们介绍一下开放指标作为我们可观察性议程的一部分。我的名字是[Ifgani Karasic 00:11:08],我是JFrog公司的产品经理。所以我们将讨论一些主题,但让我们从开放度量开始。OpenMetrics因子是云原生、高度可伸缩的度量收集协议的标准。它是一种广泛的格式,因此如果你谈论与开源或供应商提供的可观察性工具集成,它可以很容易地被采用。事实上,这一标准正在显著提高,这使我们认为我们也可以为我们的客户提供附加价值。

对于这个问题,基本上我们添加了开放指标的集合,系统的开放指标格式。所以为了从这个功能中受益,你可以通过配置文件来启用它。启用配置后,您将拥有符合OpenMetrics标准的端点,即API度量端点。度量标准以基于文本的格式公开。例如,如果您想配置您的许可证或任何其他支持OpenMetrics的工具,这是一个非常简单的任务。这里有一个代码片段,它展示了如何配置它,一旦配置完成,你就可以使用额外的可视化工具,比如Kibana,来为你的工件实例得到这些指标的很好的可视化投影。

要获得完整的度量标准,我建议查看我们的Wiki页面。他们不断添加更多参数。如果你认为有一些重要的指标,他们也希望我们以开放的形式公开,请告诉我们。这就是我们要在解决方案上保持的可扩展性。

这是关于开放指标的。现在我想切换到JFrog发行版,它是JFrog平台的一部分。我们目前在这个领域有很多令人兴奋的内容。今天我们将简要地讨论点对点、下载功能、离线分发和通过CDN分发。这是已经发布的东西,因此你可以在接触到这个功能后立即尝试一下。

我将从点对点下载开始。所以对于点对点下载,当我们观察我们的客户用于分发的用例时,我们得到的需求是围绕着分发的最后一英里的优化。假设你有一些运行时部署,需要升级到最新版本的Docker镜像,基本上我们有一些突发的并发下载,因此这是我们需要处理的挑战。所以我们在绞尽脑汁,如何帮助我们的客户应对这一挑战。最终我们采用了点对点下载的概念,并将其应用到企业级解决方案中,比如JFrog平台。

那么什么是点对点工件下载功能呢?首先,它是一种安全的对等协议,与JFrog平台完全一致。其次,我们使用artifactory作为工件的内容和发现,这意味着如果客户端正在寻找特定的内容,这些内容可以在JFrog artifactory上找到,但下载过程本身会有点不同,我会立即详细说明。

他们将引入一个新的组件,也就是peer。所以对等体是一个独立的组件,可以部署在任何环境中。它可以是虚拟化的,可以是独立的,也可以引导到集群中,等等。所有这些对等点都是作为对等点的内部方法工作的,其中与工件的通信以及对等点之间的通信由我提到的这个私有的对等协议处理。那么我们从这种方法中得到了什么呢?首先,它对下载的并发性很健壮。它将适应不断增长的客户数量。由于对等组件是一个独立的组件,基本上我们谈论的是几乎不需要管理的解决方案。您不需要维护对等体的生命周期,因为对等体的生命周期只服务于一个目的,即兑现下载的文件并与其他对等体共享该文件。

因此,让我们讨论点对点分布的典型拓扑,然后切换到演示。所以在左手边,你有自己的主数据中心,JFrog平台部署在那里,包括artifactory, XRay,分发和其他。在右边,您可以看到生产环境,在本例中,它将在Kubernetes集群中运行。在Kubernetes集群中,我们确实将跟踪组件部署为JFrog平台部署的一部分,并且发布包的标准分发流程基本上用于将内容推送到生产环境中。现在,我们要回答的问题是,如果有很多客户端,让我们以Docker客户端为例,所有这些客户端都需要更新,或者所有这些客户端都将请求相同的Docker映像,我们通过分发分发的最新Docker映像,会发生什么?

这正是点对点网络将帮助我们的地方,因为我们将引导对等组件作为集群中节点的一部分。基本上,我们将使用这些对等点,不仅用于下载内容,还用于跨不同位置共享内容。现在让我们切换到演示。

在我们的演示中,我们将看到Kubernetes集群部署了我提到的Artifactory Edge Node,我们也有Docker客户端的pod。每个客户机将被配置为针对特定的对等点工作。所以这是一种一对一的相关性,但在实际情况中,你可以使用不同的方法。您可以通过同一个对等点为多个客户提供服务,等等。因此,我们如何部署对等网络,实际上取决于你。用例中我们会请求同时下载一些Docker镜像。

好的,分享我的屏幕。好的。希望你能看到。好的。这就是我们的Kubernetes集群。我们从边缘节点已经启动并运行的现有环境开始。Docker镜像基本上是通过JFrog分发过程推送到那里的,对于JFrog分发过程,我们基本上是在使用,然后我们将使用点对点方法。首先,我们会自动部署对等点。对等点被配置为一个独立的应用程序所以它们会安装它们并使用一些引导配置来预配置它们。现在你可以看到我们有从0到5的对等点,这意味着总共有6个对等点在运行。 The step after that, we are going initiate our Docker clients. Docker clients are the clients that are actually going to request the image that was distributed and they will take care in next phase in our deployment scenario.

Docker客户端也被自动预配置为使用对等体作为请求的传递代理。因此,当你执行Docker full命令时,基本上请求被重新路由到我们预先配置的对等体。Peer将从构件请求该构件,从内容查找角度。一旦找到这个工件,基本上就会启动节点操作。我们将看到的优化基本上发生在第二个客户端请求相同文件时,因为在这种情况下,这个文件在第一次时就已经兑现了,下载了它,或者之前已经下载了这个文件的一部分。这是我们在演示中可以看到的在这里发生的任何后续下载基本上不仅会发生在工件上,也会发生在其他对等点上。

你在这里做什么,我停下来演示一下。我们正在把下载的文件分成2兆字节的小块。例如,如果我们的文件是68g,我们现在有35个片段。因此,第一次下载将从artifactory中进行,如您所见。但第二次下载请求将从artifactory获取该特定文件的18个片段。但是有70件作品来自第一个已经有这些作品的同行。然后我们将在对等层上组装该文件并将其提供给客户端。与此同时,我们将使用本地LRU现金将该文件保存为已兑现的文件,或者将该文件提供给其他对等点进行下一次下载。这和点对点网络的工作原理是一样的。但现在我们所做的是,我们基本上设法使其适应现实或客户的用例,即寻求多个客户同时下载。

这种方法的优点是,我们说的是一个高度可扩展的系统,但这种方法的优点是我们能很好地适应被称为下载的下载量因为下载是一种优势而不是劣势因为所有东西都在你的网络中本地兑换。因此,它大大减少了内部网络的传出和传入流量,因为文件是在本地兑现的。

接下来,我将切换到离线分发,这是另一种同样困扰我们客户的方法,因为他们谈论的网络是物理隔离的。这种关系可以通过连接性来实现,也可以通过我们现有的一种安全协议来实现,但需求仍然是相同的,需要在那些孤立的环境中执行软件分发,并考虑到所有这些边界。它在军事环境、石油钻井平台、金融机构或医疗保健中非常流行。世界上有很多航空网络。因此问题是,如何支持那边的分布?因此,使用JFrog发行版对发行版的支持将会非常简化,你只需要从你的主要发行位置导出发行版,下载导出的文件,然后在使用所有访问气隙环境的实践后导入,你可以把它放在一些媒体中,然后在空气环境中的各自Artifactory Node或Artifactory Edge上导入它。

这是一个简短的演示。好的。现在是分布了,对吧?所以我们要创建一个发布包,签署这个发布包,然后基本上开始分发它。你可以看到我们的包包含一些Docker应用程序。我们可以在发行版本身中看到该应用程序的材料清单,包括过去的映射,包括文件的所有属性,等等。从分布的角度来看,这里没有变化。现在我们要导出那个版本,导出操作基本上是创建一个异步的方式文件的完整导出,包括所有元数据,包括文件的材料清单,包括所有东西,所有需要的信息,以便能够导入。您可以在发布包专用存储库中看到作为导出的发布包创建的发布包。之后,我们可以运行下载操作。

同样,因为导出和处理是异步的,所以在发布包导出完成之前可能需要一些时间。您不需要等待,您将得到一个远景指示,或者使用前面介绍的Webhook,得到一个发布包导出完成的指示。然后基本上可以下载并开始导入操作。

那么对于导入操作,什么是重要的呢?现在我切换到Artifact Edge Node,让我们假设我们成功地进入了区域环境,现在我们拥有了在这里部署它的所有权限。所以导入操作和常规分布的导入操作是一样的。因此,它不仅仅是将文件放到某个特定的位置,而是完整的分发过程,其中还包括对内容的验证,对发布包的签名的验证,批准发布包的材料清单,等等。这是一个非常复杂的操作,它将确保当前导入的内容不只是一堆文件,而是与需要导出的应答者的元数据定义相匹配。这就是分布,我认为很清楚我们要处理的用例是什么。

在讨论脱机发行版时,需要记住一些要点,就像其他使用rest API或UI支持的操作一样,为了演示,只使用UI。它是由权限强制执行的,它会要求特定的权限来创建发布包的导出,以及导入发布包。我已经提到过它是异步操作。你有能力从状态中导出,你不需要等待它完成。用于导出存档的存储是人工存储,这意味着您可以对导出的内容应用任何存储实践。你可以在缩放保留策略中清理它。你可以移动一份拷贝。我已经提到分发规则流将用于导入内容。

这是线下分布。简短地谈谈CDN分发,这是我们向客户提供的另一种功能。这里我们要讲的是我们的软件服务客户。我们试图用这种能力来解决的用例或客户提出的要求与我们所说的外部分销有关。这意味着你需要将内容传递给外部受众。它可以是你想要分发的免费软件,比如隐私教育,像免费的软件包,或者它也可以是一些合作伙伴或客户特定的内容,你需要全面传播。大多数客户不愿意自己维护下载中心,他们正在寻找一个简单的基于规模的解决方案。但另一方面,它仍然需要遵循所有的企业就绪能力,如管理佣金的能力,为经过身份验证和未经身份验证的外部下载提供能力的能力,等等。

所以我们试图了解最好的方法是什么,基本上我们设法实现的是连接现有的cdn框架。例如,今天我们使用亚马逊平台为我们的软件提供服务,为运行[听不清00:41:31]的客户提供服务。这种方法的一个优点是,你可以启用CDN内容分发的功能,你可以通过存储库启用它,它将完全遵循JFrog平台的基于角色的访问。您可以从CDN端创建地理限制,我们也将支持使用[下载或签名URL 00:41:57]的认证和非认证下载。

这个不需要演示,因为它非常简单和简短,您只需使用您的构件,它应该是软件服务解决方案的预配置部分。然后启用启用CDN下载的支票簿。一旦这个CDN下载被启用,基本上所有的请求都到那个特定的存储库进行下载,你可以在右边看到它。所有这些请求都将自动重定向,并带有三到两个状态码。但实际的CDN下载将来自云端,因为这是我们目前用于CDN的基础。

但是继续前进,是的,我们将继续为其他CDN扩展服务,例如谷歌云CDN[听不清00:42:55]等等。再一次,从技术角度或者技术角度来说,我们做这件事是没有限制的,它只是使我们真正需要围绕功能来做的一个额外的开发。今天要求最高的是[听不清00:43:14],但明天他们会寻找添加更多的内容,所以请不要犹豫,进入我们的公共[听不清00:43:21],以支持更多的cdn。

那都是我的事。谢谢大家的聆听。我们将简短地回答一个问题。我看到在我们的聊天中有很多问题。最后我们会给出答案。接下来,我想把它交给Manisha,她是JFrog的产品管理总监。她将带领我们了解JFrog管道的新情况。

大家好,我是Manisha Sahasrabudhe,我是JFrog管道的产品总监。在今天的环节中,我将向大家介绍我们在过去几个月里增加的一些新产品功能。我马上就会分享我的屏幕,我有几张幻灯片,然后我们会快速演示。

好的。所以在我们开始之前,我想提醒你JFrog管道在整个平台中的位置。因此,管道是平台的一部分,它为您提供端到端CI-CD自动化,并帮助您持续交付软件更新。它可以与JFrog平台的其他部分无缝集成,因此您将在所有DevOps工作流中获得一致的体验。管道的独特优势在于,我们处理CI-CD的方法是拥有这些声明性的可重用步骤,我们将这些步骤称为本机步骤,可以使用这些步骤组装CI-CD管道。组装到底是什么意思?因此,如果你看看CI-CD自动化是如何完成的,在大多数情况下,它是高度自定义脚本的。所以你有所有这些脆弱的脚本,很容易崩溃,很难扩展等等。

因此,我们希望摆脱这种高度脚本化的方法,我们希望采用一种非常声明的方法,在这种方法中,你有一堆预先打包的构建模块,你可以将它们拼凑在一起,形成你的端到端工作流。因此,在创建管道时不需要脚本。作为一个简单的例子,说明脚本化和声明化是怎样的,如果你看左边的图片,这是脚本化的方法,你必须安装你的cli。您正在调用SVK命令CLI命令,以便执行简单的[文档00:45:50]。如果你看右边,这是声明式的方法。所有的智能,所有的代码都已经写好了,只要在Yamo中设置一些配置值就可以重用这就是定义步骤的方法。所以它是非常适合人类阅读的,它是可重用的,而且它非常非常容易理解。

因此,正如我前面所说,JFrog平台已经发布了一堆原生步骤,这些步骤是预先打包的构建模块。但显然,我们知道大多数组织都有自己的定制工作流,他们希望按照自己的意愿设置工作流的独立性。因此,我们还引入了管道扩展,它允许您定义自己的步骤和资源,然后在管道中重用它们。2022世界杯阿根廷预选赛赛程我们在UI中有一个扩展库,这样你就可以查看系统中的所有扩展,阅读它们的文档,了解如何使用它们等等。

同样,同一个扩展的多个版本可以在同一个管道中并排使用。这解决了一些工具的一个痛点,也就是所谓的插件地狱,如果你有一个基于插件的架构,同一个插件的不同版本不能在同一个实例中共存,会有各种各样的冲突,然后在这一点上,你就会陷入另一个叫做“稻草人”的问题,因为你提出了不同的实例,只是为了使用不同版本的插件。

因此,我们完全避免了这种情况,让你能够在同一个管道中使用不同版本并排运行这些扩展或这些步骤。我们接下来要介绍的是模板。这可以帮助您创建这些可重用的管道定义,以便您可以在几分钟内启动并运行管道。有了模板,你可以用helm样式的模板定义这些管道和helm类似,你可以给它们提供值来定制那个模板并创建你的管道。我们会把这两个合并然后自动创建你的管道。因此,通过扩展和模板,您可以实现完全无脚本管道的乌托邦,因为您有这些构建块,然后您甚至有这些模板,将您的构建块组合到组织中存在的一些典型场景中。

我们最近介绍的另一件很酷的事情是矩阵构建,它允许您将大型测试套件拆分到多个节点。所以如果你有一个长时间运行的测试套件,需要45分钟,你可以把它分成三个构建节点,通过除以3在15分钟内得到结果。这样就节省了很多时间。您还可以使用矩阵构建特性对多种语言版本进行测试。例如,不同版本的GS,甚至针对多个平台进行测试。所以你可以在同一时间在同一个管道中对Linux、Ubuntu和[Centroid 00:48:53]进行测试。所以这是一个非常非常强大的功能。

最后但并非最不重要的,我想谈谈管道的管道观点。因此,JFrog管道的最大趋势之一就是可以很容易地创建我们所说的管道的管道。因此,每个团队都可以拥有这些单独的管道。您知道,大多数人都有一个面向开发人员的CI管道。然后是测试管道,这是为测试团队准备的,然后是发布管道。你也可以让一个开发集运维团队为你创建一个基本映像,这就是开发集运维管道。所有这些管道实际上是相互依赖的,你可以用任何你想要的逻辑将它们串在一起,通过使用资源,资源被用来在相互依赖的管道之间传递信息。2022世界杯阿根廷预选赛赛程

所以这个工作流,用JFrog管道创建总是很容易的。但是我们最近增加的功能是可视化管道的完全依赖关系。这将为您提供软件交付工作流的真正端到端图像。你可以看到它,你可以很容易地看到失败的地方,你知道你的瓶颈在哪里,等等。

这是我们最近加入的另一个很酷的东西。在结束之前,我将向您展示一个扩展的快速演示。我这里有一个get存储库,它有两个我定义的扩展,我将添加平台,然后从它创建一个管道。你可以看到这个存储库下面的文件夹结构。在顶层,我有步骤和资源文件夹,这基本上是扩展类型。2022世界杯阿根廷预选赛赛程我有一个扩展,这是一个步骤,另一个扩展,这是一个资源。在这些顶级文件夹下,有名称空间文件夹。因此,您可以将不同的扩展步骤和资源组织到名称空间中,以便更容易找到它们,并根据它们的功能将它们分组在一起。2022世界杯阿根廷预选赛赛程

在资源中,我有一个源2022世界杯阿根廷预选赛赛程代码控制名称空间,在步骤中,我有一个ansible名称空间。然后我的扩展步名为ansible playbook因为它运行ansible playbook。在这下面你可以看到我有三个文件。我有一个unexecute。sh脚本,它将在管道中使用步骤时运行。这就是使用step时执行的内容。

我点开了。所以我得回去,好吗。所以我有一个readme。md。它会给你这个扩展的文档,它也会显示在UI中这样人们就能知道如何使用他们的扩展。然后我有一个stepModel。Yml,它实际上定义了这个扩展的输入应该是什么。如果你看GittRepo,我的另一个扩展是一个类型为GittRepo的资源,关于这个的学校实际上有一个本地资源,一个JFrog船只,叫做GittRepo。因此,只要它在不同的名称空间中,就可以重写它。如果您不喜欢从盒子里出来的东西,您可以定制它并定义自己的GittRepo。

同样,在这里,与步骤非常相似,您有三个文件,自述文件。Md是oninput.sh可选扩展名的文档。这使您能够在将这些资源用作管道中某个步骤的输入时运行某些脚本。2022世界杯阿根廷预选赛赛程然后是resourceModel。Yml,它告诉你这个资源的设置应该是什么。这就是我的扩展的样子,将它们添加到JFrog管道的方式是通过添加你的git重存储作为扩展源。因此,我添加了相同的管道扩展作为扩展源,这意味着我们传递存储库的内容,然后实际创建扩展。在我的例子中,在我的存储库中,我的实例有一些其他扩展,但因为这个存储库,这两个被创建了。你可以有版本扩展,所以这些是最新的版本。因此,每当我对存储库进行任何更改时,它们都会显示为最新的。

然后我可以从GittHub发布一个版本来创建一个实际发布的版本。所以我也发布了step ansible playbook的版本和资源GittRepo。那么,如何在管道中使用它呢?我有一个管道,它实际上使用了ansible playbook步骤的两个版本。我的第一个步骤使用了该步骤的1.0版本,管道中的第二个步骤使用了该步骤的最新版本。这两个版本之间唯一的区别是我在最新版本中添加了一个额外的回声。如果你看日志,你会看到在步骤执行日志中,它只运行ansible playbook在这个演示中,它只会说,hello world。所以它的作用不大。它只是运行剧本,然后退出,说,是的,我成功地运行了剧本。

这是该步骤的1.0版本。现在,如果我看看这个管道的第二步,这是最新的版本。现在如果我看这个步骤执行,你会发现额外的一行,这是我添加的echo语句。因此,正如您所看到的,您可以在同一管道中并排使用相同扩展的不同版本。这对于任何曾经处理过插件冲突或类似问题的人来说都是非常强大的。因此,通过扩展和模板,我们真正想做的是给你这些关键的包,构建块,帮助你组装管道。在未来的季度中,我们将继续构建越来越多的扩展,越来越多的本地步骤和丰富的残疾,以便最终您可以实现完全组装管道的乌托邦。这就是我今天的全部内容。谢谢你!

谢谢你,Manisha。所以我们有一个很短的提问时间,一个来自[Miankit 00:55:32]关于在云字体之前支持CDN分发的问题。我可以说,我们确实计划这么做,但我们现在还没有立即的计划,但这是我们正在考虑的事情。一个关于-

这个问题来自,不好意思,我再回答一下。Peter问了一个关于MFA的问题,是否可以只对特定的群体启用MFA ?目前的答案是否定的。MFA是对整个平台启用的功能,或者对所有用户都不启用。

彼得还有一个关于MFA支持的JFrog版本的问题。所以我认为是七,六可能会晚一点。你可以查一下发行说明。我认为是7个,6个,但这里需要注意的一件重要的事情是,目前只能在云上使用,只能在JFrog平台的下一个版本中使用。他还问[听不清00:56:42]基本上是[立方键00:56:43]和其他的?所以目前的答案是否定的,唯一支持的附加身份验证方法是TOTP。我们考虑电子邮件,我们也考虑硬件密钥。它可能是基于需求的。所以我建议你开一个JIRA或salesforce票,要求你需要一个特定的钥匙,我们会在我们的过程中考虑这个问题。

好的。我想今天就到这里吧。

要么快速释放,要么死亡