使用 GitHub Actions 释放开发人员的创造力

使用 GitHub Actions 释放开发人员的创造力

自 2019 年 11 月发布以来,GitHub Actions 持续受欢迎。整整 72% 的AppMap用户告诉我们,他们的团队正在使用 GitHub Actions!我个人已经密集使用 GitHub Actions 大约六个月了,在我看来,这就像自动化技术的一次重大飞跃。为什么?随着 CI/CD 变得越来越重要,它越来越脱离开发人员的生产力需求,这主要是出于安全考虑。我发现 GitHub Actions 允许我以创新方式自动化代码,这在传统 CI/CD 管道的范围内是不可能的。

GitHub Actions 的工作原理

如果您是 GitHub Actions 的新手,请参阅以下快速概述:

  • GitHub Action 是在GitHub 托管的基础设施上运行的代码片段(或者您可以提供自己的计算)。
  • GitHub Actions 可以组合在一起形成称为Workflows 的序列。
  • GitHub 操作可以在 GitHub 存储库中定义,并由其他项目导入。因此它们具有高度的可共享性和可重用性。
  • 工作流是一个YAML文件,位于.github代码本身的文件夹中。
  • 因为工作流程是 git 管理的文件,所以每个版本的代码都可以有自己的工作流程。这使得在分支上尝试新的工作流程变得很容易,然后main在调试时将它们合并到一起。
  • 有许多不同的方法可以触发工作流程。常见的触发器包括“按拉取请求运行”、“按推送运行”和“按计划运行”。

通过这些功能的组合,GitHub Actions 使开发人员能够轻松创建几乎任何类型的代码自动化。

我们是如何到达这里的

我已经,嗯,足够大了,当我开始我的职业生涯时,手动构建是常态。像 Jenkins 这样的构建自动化工具很快就出现了,并为构建 + 测试 + 打包周期带来了可重复性。

使用 GitHub Actions 释放开发人员的创造力

部署几乎仍然是手动步骤。下一个重大步骤是 CI/CD,它将构建自动化转移到云托管基础设施,并自动化部署步骤 – 当然,这是通过云计算基础设施实现的:Amazon EC2 以及从中派生的所有服务。

天堂里的麻烦

CI/CD 成为 DevOps 的核心,将自动化扩展到许多新领域。大多数增长和扩展都是非常积极的,但自动化的严格性实际上给开发人员带来了一些缺点。为什么?由于 CI/CD 具有如此强大的打包和部署代码的能力,因此它也成为了一个高安全风险的领域。

使用 GitHub Actions 释放开发人员的创造力

黑客很快识别并利用了多种攻击途径:

  • 在构建目标软件时将恶意代码直接注入到目标软件中。
  • 使用受损的 CI 作业是访问生产系统的垫脚石。
  • 使用代码的内部知识来构建完美的漏洞或后门。
  • 直接攻击 CI/CD 供应商以批量获取凭证。(CI/CD 领域的四家知名供应商在过去十年中都遭到了攻击)。

安全性是 CI/CD 系统真正关心的问题。因此,它们现在受到高度保护。这是必要的 – 但这也意味着 CI/CD 不再是一个对开发人员友好的环境。CI/CD 的控制过于严格,不适合开发人员尝试代码自动化的新实验。

GitHub Actions 来救援

这就是 GitHub Actions 的用武之地。GitHub Action 不需要 成为“有福的”CI/CD 流程的一部分。它可以执行开发人员可能想要的任何类型的临时工作。例如,有 GitHub Actions 可以报告测试状态、向提交和 PR 中注入注释、与其他系统同步、生成代码、发送通知、查找错误等。它可以“旁观”地完成这些事情,官方管道作业的方式。不再需要修改主构建文件(认为:、、travis.yml)来尝试一些新的代码自动化。Jenkinsfile.circleci

由于 Actions 由任何开发人员都可以创建和修改的 YAML 文件控制 – 并且它们在云中运行,可以直接轻松地访问项目源代码 – GitHub Actions 以本地开发人员环境或其他环境中找不到的方式将功能与安全性结合在一起。传统的 CI/CD 工具。

强大、可调节的性能

作为开发人员,您对 CPU 功能、内存使用和并行化等性能考虑因素有很好的了解。因此,您会很高兴知道 GitHub Actions 足够强大,可以让您准确控制和优化工作流程使用和消耗计算和存储的方式。

  • 每个工作流都在预定义的运行器实例上运行,该实例基本上是一个使用预定义的 CPU 核心分配和内存量运行的容器。因此,您可以以很少的成本运行小型、轻量级的作业。
  • 您的工作流程是否缓慢且迟缓?你有选择;事实上有几种选择。首先,您可以将工作流程提升到更大的运行器实例。64 核和 256GB RAM 听起来如何?你可以得到那个。如果您正在运行的代码不能很好地随内核扩展怎么办?那么,您也可以应用矩阵构建策略。
  • 您可以在工作流程内和跨工作流程存储和检索数据。缓存存储和工件存储都可用。缓存非常快,并且只能从工作流程内访问。工件速度较慢,但​​可以使用 GitHub REST API 从任何地方访问它们。缓存过期时间和工件保留时间都是可自定义的,因此您可以调整在这些存储资源上花费的资金量。

继续!(慎用)

虽然它与官方 CI/CD 管道是分开的,但 GitHub Actions 的特权操作仍然会带来安全风险。GitHub Actions 可以访问代码;可以提交和推送代码;可以被授予访问可能被错误处理的秘密的权限。认识到这一点,GitHub 提供了存储库和组织设置,可用于控制允许运行哪些 GitHub 操作,甚至是否启用该功能。

此外,每个 GitHub Action Workflow 都以自己的显式权限运行。因此,每个工作流的安全功能都得到了明确的说明,与更受信任的操作相比,不太受信任的操作可以使用较低的权限设置来运行。这种类型的“最小权限”访问管理是一种非常有效的安全策略,在整体和/或遗留 CI/CD 作业中是不可能的。

一如既往,自由伴随着责任,我们听说至少有一个组织在发生粗心、不安全的编码事件后将其开发人员锁定在 GitHub Actions 之外。因此,请注意并注意可用的安全控制,并使用它们!

我们如何结合使用 GitHub Actions 和 AppMap 来提高代码质量

AppMap 是一个将代码痕迹记录到 JSON 数据文件中的工具,可以对其进行可视化和分析,以提高代码理解和质量。GitHub Actions 提供了一种为每个拉取请求创建全面的 AppMap 数据集的方法,提供应用程序的运行时架构、性能和安全特征的完整配置文件。它还提供了一种比较两个不同代码版本的AppMap数据集的方法。

比较两个代码版本(基线和建议的更改集)的 AppMap 是一种非常强大的技术,可用于分析代码的架构更改、安全缺陷和性能问题。通过AppMap for GitHub Actions,我们正是提供了这种功能。我们的抢先体验计划现已结束,我们正在过渡到全面发售。快来看看吧!

使用 GitHub Actions 释放开发人员的创造力

由于 AppMap 在您的GitHub 帐户中运行,因此数据在您的帐户内进行处理,并且保留在帐户的边界内。您不必与任何第三方共享源代码或敏感数据。这就是 GitHub Actions 提供的双赢功能类型。高水平的开发人员控制、良好的性能和良好的安全特性。

您如何使用 GitHub Actions?

您的组织是否采用了 GitHub Actions?开发人员如何添加和更改 GitHub Actions?您在此过程中是否遇到过任何可以让其他人受益的问题或不幸?我们很乐意在下面的评论中听到它。

链接

🤖 抢先体验 GitHub Actions 的 AppMap:https://getappmap.com
⬇️ 下载 VSCode 和 JetBrains 的 AppMap:https://appmap.io/download
⭐ GitHub 上的 Star AppMap:https://github.com/getappmap
📹继续关注:https://youtube.com/@appmap
💬 加入 AppMap Slack:https://appmap.io/slack
ℹ️ 阅读 AppMap 文档:https://appmap.io/docs

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索