AI 徽标

使用 GitHub 实现人工智能驱动的 DevOps

通过 GitHub 产品实现人工智能驱动的 DevOps

规格

  • 产品名称:基于 GitHub 的 AI 驱动的 DevOps
  • 特点:提高效率、增强安全性、更快地交付价值

什么是 DevOps?

如果有效实施,DevOps 可以改变组织交付软件的方式——加速
发布周期、提高可靠性并推动创新。
真正的机会在于 DevOps 如何帮助您在快速发展的市场中保持敏捷。通过建立协作、持续改进和战略技术采用的文化,您可以以更快的上市时间和更强的适应变化的能力超越竞争对手。

DevOps 受到各种经验、技术技能和文化视角的影响。这种多样性带来了多种解释和不断发展的实践,使 DevOps 成为一个充满活力的跨学科领域。DevOps 团队是跨职能的,涉及软件交付生命周期 (SDLC) 中各个团队的关键参与者。
在这本电子书中,我们将探讨建立强大的 DevOps 团队和实践的价值,以及如何应用 AI 来自动化日常任务、保护代码并实现最佳的端到端生命周期管理。

通过 GitHub 实现 AI 驱动的 DevOps(1)

DevOps 定义

DevOps 社区的权威声音 Donovan Brown 分享了被 DevOps 从业者广泛认可的 DevOps 定义:

通过 GitHub 实现 AI 驱动的 DevOps(2)

DevOps 是人员、流程和产品的结合,能够持续为最终用户提供价值。”

多诺万·布朗

合作伙伴项目经理 // Microsoft1
在许多技术环境中,团队因技术技能不同而各自为政,各自专注于自己的指标、KPI 和交付成果。这种分裂通常会减慢交付速度、导致效率低下,并导致优先事项发生冲突,最终阻碍进展。
为了克服这些挑战,组织应努力促进协作、鼓励建设性反馈、自动化工作流程并不断改进。这有助于确保更快的软件交付、更高的效率、更好的决策、节省成本和更强的竞争优势。
团队如何才能有效地开始采用新的 DevOps 实践?他们可以首先解决最重要的痛点,例如手动部署流程、较长的反馈周期、低效的测试自动化以及发布管道中手动干预造成的延迟。

消除摩擦点可能让人感到不知所措,但近年来人工智能的迅速崛起为开发人员创造了提高工作速度和质量的新机会。我们的研究发现,编写和重新编写的代码的质量view尽管之前没有开发人员使用过该功能,但在启用 GitHub Copilot Chat 后,ed 的整体表现有所改善。
85% 的开发人员在使用 GitHub Copilot 和 GitHub Copilot Chat 编写代码时对其代码质量更有信心

85%

通过 GitHub 实现 AI 驱动的 DevOps(3)代码重新view与没有 GitHub Copilot Chat 相比,操作更加简便,完成速度提高 15%

15%

通过 GitHub 实现 AI 驱动的 DevOps(4)

DevOps + 生成式 AI:利用 AI 提高效率
通过倡导共同责任的文化,DevOps 鼓励协作并打破孤岛。AI 通过自动执行重复任务、简化工作流程和实现更快的反馈周期,使团队能够专注于高价值的工作,从而使这一点更进一步。
软件交付的一个关键挑战是效率低下和不准确——AI 可以通过优化资源管理并提供一致、更准确的结果来解决这些问题。AI 驱动的效率不仅可以提高应用程序性能和基础设施优化,还可以增强安全性并降低成本。
高效团队可以识别并自动化那些阻碍生产力和延长交付周期的重复性任务。最终目标是交付对客户和最终用户最重要的内容,同时推动组织发展、加快上市时间并提高开发人员的生产力和满意度。

通过 GitHub 实现 AI 驱动的 DevOps(5)

自动化日常事务
开发人员经常处理重复的日常任务。
这些通常被称为“时间窃贼”,包括手动系统检查、设置新代码环境或识别和解决错误等。这些任务占用了开发人员的核心职责:提供新功能的时间。
DevOps 等同于团队协调和自动化。
总体目标是消除 SDLC 中的负担和障碍,并帮助开发人员减少手动和单调的任务。让我们看看如何利用 AI 来解决这些问题。

使用 GitHub 简化开发生命周期
让我们结合 DevOps、AI 和 GitHub 的强大功能,看看您的团队如何提供端到端的价值。GitHub
被广泛认为是开源软件的发源地,但它也通过其 GitHub Enterprise 解决方案提供企业级功能。
GitHub Enterprise 通过提供统一的版本控制、问题跟踪、代码重用平台,简化了 DevOps 生命周期view等等。通过减少团队工作面的数量,可以减少工具链蔓延、最大限度地降低效率低下并降低安全风险。

通过使用领先的 AI 开发工具 GitHub Copilot,可以减少重复任务所花费的时间并减少错误,从而加快开发周期。这可以加快交付速度并缩短上市时间。
GitHub 上的内置自动化和 CI/CD 工作流程也有助于简化代码重新views、测试和部署。这减少了手动任务的数量,同时缩短了审批时间并加快了开发速度。这些工具可实现无缝协作,打破孤岛,并允许团队高效地管理项目的各个方面——从规划到交付。

更聪明地工作,而不是更努力地工作
自动化是 DevOps 的核心,它可以消除时间窃贼并专注于更快地交付价值。自动化是一个非常广泛的术语,包括 SDLC 中的各种项目。自动化可以包括配置 CI/CD 等内容,以便将代码更改无缝集成到您的生产环境中。这还可以包括自动化您的基础设施即代码 (IaC)、测试、监控和警报以及安全性。
虽然大多数 DevOps 工具都提供 CI/CD 功能,但 GitHub 更进一步推出了 GitHub Actions,这是一种将企业级软件交付给
您的环境——无论是在云端、本地还是其他地方。使用 GitHub Actions,您不仅可以托管 CI/
CD 管道,还可以自动化工作流程中的几乎所有内容。
与 GitHub 平台的无缝集成消除了对额外工具的需求,简化了工作流程并提高了生产力。以下是 GitHub Actions 如何改变您的工作流程:

  • 更快的 CI/CD:自动化构建、测试和部署管道,以实现更快的发布。
  • 提高代码质量:强制执行代码格式标准并尽早发现安全问题。
  • 增强协作:围绕开发流程实现自动通知和沟通。
  • 简化合规性:帮助使存储库与组织标准保持一致。
  • 提高效率:自动执行重复任务以释放开发人员的时间。

GitHub Copilot 可用于提供代码建议,并建议使用哪些操作来创建更好的工作流程。它还可以为您的组织提供量身定制的编码最佳实践,您的团队可以快速实施这些最佳实践,以帮助实施治理和惯例。GitHub Copilot 还适用于各种编程语言,可用于构建操作和工作流程以轻松自动执行任务。

要了解有关 GitHub Copilot 的更多信息,请参阅:

  • 使用 GitHub Copilot 在 IDE 中获取代码建议
  • 在 IDE 中使用 GitHub Copilot:技巧、窍门和最佳实践
  • 使用 GitHub Copilot 的 10 种意想不到的方法

减少重复任务
专注于自动化日常流程并使用 GitHub Copilot 等工具来简化您的工作流程。例如ample,Copilot 可以帮助生成单元测试——这是软件开发中耗时但必不可少的部分。通过制定精确的提示,开发人员可以指导 Copilot 创建全面的测试套件,涵盖基本场景和更复杂的边缘情况。这减少了手动工作量,同时保持了较高的代码质量。

信任 Copilot 提供的结果并加以验证至关重要 — 就像任何生成式 AI 工具一样。您的团队可以依靠 Copilot 完成简单和复杂的任务,但在部署任何代码之前,务必通过全面测试验证其输出。这不仅有助于确保可靠性,还可以防止可能减慢您的工作流程的错误。
随着您继续使用 Copilot,优化您的提示将帮助您充分利用其功能,实现更智能的自动化,同时进一步减少重复任务。
有关使用 GitHub Copilot 创建单元测试的详细信息,请参阅:

  • 使用 GitHub Copilot 工具开发单元测试
  • 使用 GitHub Copilot 编写测试

提示工程和背景
将 GitHub Copilot 集成到您的 DevOps 实践中可以彻底改变您的团队的工作方式。为 Copilot 制作精确、上下文丰富的提示可以帮助您的团队实现新的效率水平并简化流程。
这些好处可以转化为您组织可衡量的成果,例如:

  • 提高效率:自动执行重复任务,最大限度地减少人工干预,并通过可操作的见解实现更快、更明智的决策。
  • 节省成本:通过将 AI 集成到重复且容易出错的流程中,简化工作流程、减少错误并降低开发成本。
  • 推动成果:利用 Copilot 支持战略目标、改善客户体验并保持市场竞争优势。

通过学习如何编写精确而详细的提示,团队可以显著提高 Copilot 建议的相关性和准确性。与任何新工具一样,适当的入职和培训对于帮助您的团队最大限度地发挥 Copilot 的优势至关重要。

您可以在团队中培育有效及时的工程文化,方法如下:

  • 建立内部社区:建立聊天渠道以分享见解、参加或举办活动并创造学习机会,为您的团队创造学习空间。
  • 分享惊喜时刻:使用 Copilot 等工具创建文档,为其他人的旅程提供指导。
  • 分享您学到的技巧和窍门:举办知识共享会议并使用您的内部通信(时事通讯、团队、Slack 等)分享见解。

有效的提示有助于使 AI 与您团队的目标保持一致,从而带来更好的决策、更可靠的输出和更高的性能。通过实施这些及时的工程方法,您不仅可以节省成本,还可以实现更快的交付、更好的产品供应和卓越的客户体验。

DevOps + 安全性:从内到外保护代码

当统一的 SDLC 管理策略得到精简工具集的支持时,它会更加有效。虽然工具泛滥是许多 DevOps 学科面临的共同挑战,但应用程序安全往往受到的影响最大。团队经常添加新工具来弥补差距,但这种方法往往忽略了与人员和流程相关的核心问题。因此,安全环境可能会变得杂乱无章,充斥着从单一应用程序扫描器到复杂的企业风险平台等各种东西。
通过简化工具集,您可以帮助开发人员集中精力,减少上下文切换,并保持编码流程。一个在每一步都集成安全性的平台(从依赖项管理和漏洞警报到保护敏感信息的预防措施)可以为您组织的软件安全态势带来稳定性。此外,可扩展性至关重要,使您能够利用现有工具以及平台的内置功能。

保护每一行代码
当您想到软件开发时,您可能会想到 Python、C#、Java 和 Rust 等语言。然而,代码有多种形式,各个领域的专业人士(数据科学家、安全分析师和商业智能分析师)也以自己的方式参与编码。因此,您的安全漏洞风险会增加 - 有时是在不知不觉中。为所有开发人员(无论其角色或头衔如何)提供一套全面的标准和方法,使他们能够将安全性集成到周期的每一步。

静态分析和秘密扫描
在构建时集成方面,使用应用程序安全测试 (AST) 工具变得越来越普遍。一种侵入性最小的技术是按原样扫描源代码,寻找复杂点、潜在漏洞和对标准的遵守情况。在每次提交和推送时使用软件组合分析 (SCA) 可以帮助开发人员专注于手头的任务,同时提供拉取请求和代码重新提交的机制view变得更加富有成效和更有意义。
秘密扫描是一种秘密武器,可以防止将可能泄露的秘密或密钥提交给源代码控制。配置后,秘密扫描会从 120 多个不同的软件和平台供应商列表中提取信息,包括 AWS、Azure 和 GCP。这可以识别与这些软件应用程序或平台匹配的特定秘密。您还可以直接从 GitHub UI 测试秘密或密钥是否有效,从而使补救变得简单。

使用 CodeQL 进行高级代码分析
CodeQL 是 GitHub 中一个功能强大的实用程序,可以分析代码以识别漏洞、错误和其他质量问题。它通过编译或解释从代码库构建数据库,然后使用查询语言搜索易受攻击的模式。CodeQL 还允许您创建针对特定案例或与您的业务相关的专有用例的自定义变体数据库。这种灵活性支持开发可重复使用的漏洞数据库,这些数据库可在扫描企业内的其他应用程序时使用。
除了强大的功能外,CodeQL 还能快速提供所支持语言的扫描和漏洞结果,让开发人员能够高效解决问题,同时又不影响质量。这种强大功能和速度的结合让 CodeQL 成为维护各种项目代码完整性和安全性的宝贵资产。它还为领导者提供了一种可扩展的方法来提高组织弹性并实施安全的软件开发实践。

通过 GitHub 实现 AI 驱动的 DevOps(6)分钟
从漏洞检测到成功修复3

通过 GitHub 实现 AI 驱动的 DevOps(7)更精确
发现泄露的机密,误报率更低4

通过 GitHub 实现 AI 驱动的 DevOps(8)覆盖范围
Copilot Autofix 为所有受支持语言中近 90% 的警报类型提供代码建议5

  1. 总体而言,开发人员使用 Copilot Autofix 自动提交 PR 时间警报修复的平均时间为 28 分钟,而手动解决相同警报则需要 1.5 小时(快 3 倍)。对于 SQL 注入漏洞:18 分钟,而手动解决则需要 3.7 小时(快 12 倍)。基于 CodeQL 在启用 GitHub Advanced Security 的存储库的拉取请求 (PR) 中发现的新代码扫描警报。这些是示例amples;您的结果将会有所不同。
  2. 秘密检测工具对软件秘密报告的比较研究,
    Setu Kumar Basak 等人,北卡罗来纳州立大学,2023
  3. https://github.com/enterprise/advanced-security

揭开依赖图的神秘面纱

现代应用程序可以有几十个直接引用的包,而这些包又可以有几十个依赖包。这一挑战是 amp企业面临着管理数百个具有不同依赖关系级别的存储库的挑战。这使得安全性成为一项艰巨的任务,因为了解整个组织正在使用哪些依赖关系变得困难。采用跟踪存储库依赖关系、漏洞和 OSS 许可证类型的依赖关系管理策略可以降低风险并有助于在问题进入生产之前检测到它们。
GitHub Enterprise 让用户和管理员能够立即了解依赖关系图,并使用 Dependabot 的警报标记可能带来安全风险的过时库。

存储库依赖关系图包括

  • 依赖项:存储库中标识的依赖项的完整列表
  • 依赖项:任何依赖于存储库的项目或存储库
  • Dependabot:Dependabot 发现有关您的依赖项的更新版本的任何信息

通过 GitHub 实现 AI 驱动的 DevOps(9)

对于存储库级漏洞,导航栏中的“安全”选项卡显示已识别漏洞的结果,这些漏洞可能与代码库相关的依赖项有关。Dependabot view 列出与已识别漏洞相关的警报,并允许您 view 任何可能有助于自动对公共存储库的某些警报进行分类的规则集。

通过 GitHub 实现 AI 驱动的 DevOps(10)

GitHub 企业版和组织​​版 views
使用 GitHub Enterprise,您可以 view 并管理组织和企业中所有存储库的依赖项、漏洞和 OSS 许可证。依赖关系图可让您全面了解 view 所有注册存储库的依赖关系。

通过 GitHub 实现 AI 驱动的 DevOps(11)

这个一目了然的仪表板不仅提供了已识别的安全警告的出色快照,而且还提供了与依赖项相关的许可证分布情况
在整个企业中使用。OSS 许可证的使用可能特别危险,特别是如果您管理专有代码。一些更严格的开源许可证,如 GPL 和 LGPL,可能会使您的源代码容易被强制发布。开源组件需要找到一种统一的方法来确定您可能不合规的地方,并且可能希望为使用这些许可证引入的软件包找到其他替代方案。

维护您的安全态势

许多企业级源代码控制管理系统为您提供了使用策略、预提交挂钩和特定于平台的功能来保护代码的选项。可以使用以下措施来规划全面的安全措施:

  • 预防措施:
    GitHub 允许配置和使用不同类型的规则集来强制执行行为并防止特定分支中发生不必要的更改。例如amp乐:
    • 合并更改之前需要拉取请求的规则
    • 保护特定分支不直接推送更改的规则

可以使用预提交钩子执行额外的客户端检查。Git 作为源代码控制管理系统,支持预提交钩子来执行各种任务,例如格式化提交消息或在提交更改之前运行格式化和验证例程。这些钩子可以利用高级实用程序来帮助确保本地级别的代码一致性和质量。

  • 保护措施:GitHub 还允许配置保护措施,包括使用在拉取请求或 CI 构建期间可以建立的检查。这些包括:
    • 依赖性检查
    • 测试检查
    • 代码质量检查
    • 质量门
    • 人工干预/人工审批

GitHub Enterprise 使软件开发团队能够快速识别漏洞并采取措施,从过时的依赖项和签入的机密到已知的语言漏洞。借助 view通过依赖关系图,团队领导和管理员将拥有所需的工具,以便在安全建议方面保持领先地位。了解正在使用的许可证类型,您将获得一个全面的安全第一风险管理平台。

使用 GitHub Enterprise 为 DevOps 流程提供支持
到目前为止,可以说 DevOps 的概念已为技术行业人士所广泛熟悉。然而,随着用于部署应用程序的新工具和方法不断涌现,这可能会给不断发展的组织带来压力,使其难以有效地管理和衡量其结果。
满足市场对弹性、可扩展且经济高效的应用程序的需求可能具有挑战性。利用基于云的资源可以帮助缩短上市时间,加快开发人员的内部循环,并允许在注重成本的控制下进行大规模测试和部署。

启用云原生应用程序
就像左移范式将安全性、测试和反馈带入开发内循环一样,开发云应用程序也是如此。采用以云为中心的开发实践有助于开发人员弥合传统方法与现代云解决方案之间的差距。这种转变使团队能够超越简单地创建云优先应用程序,构建真正的云原生应用程序。

在云中开发,部署到云
现在,人们普遍期望 IDE 能够促进无缝开发。然而,这种环境中的可移植性概念相对较新,尤其是考虑到基于云的 IDE 的最新进展。随着 GitHub Codespaces 和底层 DevContainers 技术的推出,开发人员现在可以在可移植的在线环境中开发代码。这种设置允许他们利用配置 file使他们的开发环境能够进行定制以满足特定团队的要求。

通过 GitHub 实现 AI 驱动的 DevOps(12)

可重用性和可移植性的结合为组织提供了显著的优势tag团队可以
现在集中他们的配置和环境规范,使每个开发人员(无论是新手还是经验丰富的开发人员)都可以在相同的设置中工作。有了这些集中的配置,团队成员就可以为这些配置做出贡献。随着需求的发展,环境可以更新并为所有开发人员保持稳定状态。

大规模管理工作流程
开发人员的工作流程和上市时间才是真正影响生产力指标的因素。然而,大规模管理这些因素可能是一项挑战,尤其是当许多不同的开发人员团队使用工作流程并部署到各种云、云服务甚至本地安装时。以下是 GitHub Enterprise 承担大规模管理工作流程负担的几种方法:

  • 通过可重复使用的操作和工作流程进行简化
  • 使用以下方式进行治理
    行动政策
  • 使用由 发布的操作
    经过验证的出版商
  • 使用分支策略和规则集来帮助确保一致性并保护主线代码
  • 配置在企业和组织层面有意义的内容

端到端软件生命周期管理
管理计划内和进行中的工作是敏捷软件开发的重要基石。GitHub Enterprise 提供了一个轻量级的项目管理结构,允许用户创建项目、将一个或多个团队和存储库与该项目关联,然后使用在链接存储库上打开的问题来跟踪项目内的工作项。标签可用于区分不同类型的问题。

例如ample,一些默认的
问题可以使用的标签包括增强、错误和功能。对于任何具有与问题相关的任务列表的项目,可以使用 Markdown 将该任务列表定义为清单,并将其包含在问题正文中。这允许根据该清单跟踪完成情况,并有助于将其与项目里程碑(如果已定义)保持一致。

管理反馈回路 
众所周知,开发人员越早收到有关特定功能的反馈,与验证更改相比,修复潜在问题和发布更新就越容易。每个组织都有自己喜欢的沟通方式,无论是通过即时消息、电子邮件、对票证或问题的评论,还是电话。GitHub Enterprise 的另一个功能是讨论,它使开发人员和用户能够在基于论坛的环境中进行交互,交流更改、与功能相关的任何类型的问题或新功能的建议,然后可以将其转化为工作项目。

围绕讨论的功能集在开源项目中已经流行了一段时间。当企业级通信工具已经到位时,一些组织可能很难看到使用讨论的好处。随着组织的成熟,能够隔离与特定软件特性和功能相关的通信,然后通过与特定存储库相关联的讨论来中继这些通信,可能会让开发人员、产品所有者和最终用户能够在特定于他们希望实现的功能的环境中紧密交互。

工件生命周期
工件管理是所有软件开发生命周期的核心。无论是可执行文件、二进制文件、动态链接库还是静态 web 代码,甚至通过 Docker 容器镜像或 Helm 图表,拥有一个可以对所有工件进行分类和检索以进行部署的中心位置至关重要。GitHub Packages 允许开发人员存储标准化的包格式,以便在组织或企业内分发。
GitHub Packages 支持以下内容:

  • Maven
  • Gradle
  • npm
  • 红宝石
  • Docker 镜像

如果您有不属于这些类别的工件,您仍然可以使用存储库中的发布功能存储它们。这允许您附加所需的二进制文件或其他 files 根据需要。

管理质量
测试是软件开发不可或缺的一部分,无论是在持续集成构建期间执行单元测试或功能测试,还是让质量保证分析师运行测试场景来验证 web 应用程序。GitHub Actions 允许您将各种不同的测试类型集成到您的管道中,以帮助确保评估质量。
此外,GitHub Copilot 还可以就如何最好地编写单元测试提供建议,减轻开发人员创建单元或其他类型测试的负担,让他们能够更加专注于手头的业务问题。

能够轻松集成各种测试实用程序有助于确保在整个开发生命周期中评估质量。如前所述,您可以使用 GitHub Actions 工作流中的检查来验证某些场景。这包括能够在允许合并请求之前成功运行一整套测试。根据 stag在部署过程中,您还可以指定包括集成测试、负载和压力测试甚至混沌测试在内的检查,以帮助确保在投入生产之前对通过部署管道的应用程序进行适当的测试和验证。

结论
在规划旅程的下一步时,重要的是要考虑继续将 AI 和安全的优势引入您的 DevOps 流程,以便从一开始就提供安全的高质量代码。通过解决生产力瓶颈并消除时间窃贼,您可以让工程师更高效地工作。无论您正在构建什么解决方案或处于哪个探索阶段,GitHub 都随时准备帮助您入门。无论是使用 GitHub Copilot 增强开发人员体验、保护您的安全态势,还是通过云原生开发进行扩展,GitHub 都随时准备为您提供帮助。

后续步骤Next steps
要了解有关 GitHub Enterprise 的更多信息或开始免费试用,请访问 https://github.com/enterprise

常问问题

问:AI 如何应用于 DevOps?
答:DevOps 中的 AI 可以自动执行日常任务,通过保护代码来增强安全性,并优化端到端软件生命周期管理。

问:在 DevOps 中使用 AI 有哪些好处?
答:在 DevOps 中使用 AI 可以提高效率、改善代码质量、加快反馈周期并改善团队成员之间的协作。

问:DevOps 如何帮助组织保持竞争力?
答:DevOps 使组织能够加快发布周期、提高可靠性并推动创新,从而使他们能够快速适应市场变化并超越竞争对手。

文件/资源

GitHub 通过 GitHub 实现人工智能驱动的 DevOps [pdf] 用户指南
使用 GitHub 实现人工智能驱动的 DevOps,人工智能驱动,使用 GitHub 实现 DevOps,使用 GitHub,GitHub

参考

发表评论

您的电子邮件地址不会被公开。 必填字段已标记 *