Skip to main content

此版本的 GitHub Enterprise 已停止服务 2022-10-12. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

关于自定义操作

操作是可以组合来创建作业和自定义工作流程的单个任务。 您可以创建自己的操作,或者使用和自定义 GitHub 社区分享的操作。

注意:GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。 可以在 GitHub public roadmap 上查看有关未来支持计划的更多信息。

关于自定义操作

您可以编写自定义代� �来创建操作,以您喜欢的方式与仓库交互,包括使用 GitHub 的 API 以及任何公开的第三方 API 进行交互。 例如,操作可以发布 npm 模块、在创建紧急问题时发送短信提醒,或者部署可用于生产的代� �。

操作可以直接在计算机或 Docker 容器中运行。 您可以定义操作的输入、输出和环境变量。

操作的类型

您可以创建 Docker 容器和 JavaScript 操作。 操作需要元数据文件来定义操作的输入、输出和主要进入点。 元数据文件名必须为 action.ymlaction.yaml。 有关详细信息,请参阅“GitHub Actions 的元数据语法”。

类型操作系统
Docker 容器Linux
JavaScriptLinux、macOS、Windows
复合操作Linux、macOS、Windows

Docker 容器操作

Docker 容器使用 GitHub Actions 代� �封装环境。 这会创建更� 一致、可� 的工作单位,� 为操作的使用者不需要担心工具或依赖项。

Docker 容器允许使用特定版本的操作系统、依赖项、工具和代� �。 对于必须在特定环境配置中运行的操作,Docker 是一个理想的选择,� 为您可以自定义操作系统和工具。 由于创建和检索容器的延时,Docker 容器操作慢于 JavaScript 操作。

Docker 容器操作只能在使用 Linux 操作系统的运行器上执行。 自托管运行器必须使用 Linux 操作系统并安装 Docker 才能运行 Docker 容器操作。 有关自承载运行器要求的详细信息,请参阅“关于自承载运行器”。

JavaScript 操作

JavaScript 操作可以直接在运行器计算机上运行,并将操作代� �与用于运行代� �的环境分开。 使用 JavaScript 操作可简化操作代� �,执行速度快于 Docker 容器操作。

要确保您的 JavaScript 操作与所有 GitHub 托管的运行器(Ubuntu、Windows 和 macOS)兼容,您编写的封装 JavaScript 代� �应该是纯粹的 JavaScript,不能依赖于其他二进制文件。 JavaScript 操作直接在运行器上运行,并使用运行器� 像中已存在的二进制文件。

如果您正在开发 Node.js 项目,GitHub Actions 工具包提供可用于项目中� 速开发的软件包。 有关详细信息,请参阅 actions/toolkit 存储库。

复合操作

复合操作允许� 在一个操作中组合多个工作流步骤。 例如,您可以使用此功能将多个运行命令捆绑到一个操作中,然后获得使用该操作在单一步骤中执行捆绑命令的工作流程。 若要查看示例,请查看“创建复合操作”。

选择操作的位置

如果是开发供其他人使用的操作,我们建议将该操作保持在其自己的仓库中,而不是与其他应用程序代� �一起捆绑。 这可让您管理操作版本以及跟踪和发行操作,就像任何其他软件一� �。

您可以将操作的文件存储在您的仓库中的任何位置。 如果计划将操作、工作流和应用程序代� �合并到一个存储库中,建议将操作存储在 .github 目录中。 例如,.github/actions/action-a.github/actions/action-b

与 GitHub Enterprise Server 的兼容性

为了确保操作与 GitHub Enterprise Server 兼容,应确保不使用任何硬编� �引用来引用 GitHub Enterprise Server API URL。 您应该改用环境变量来引用 GitHub Enterprise Server API:

  • 对于 REST API,请使用 GITHUB_API_URL 环境变量。
  • 对于 GraphQL,请使用 GITHUB_GRAPHQL_URL 环境变量。

有关详细信息,请参阅“默认环境变量”。

针对操作使用发布管理

本节介绍如何使用发行版管理以可预测的方式将更新分发给操作。

发行版管理的良好做法

如果您正在开发供其他人使用的操作,建议使用发行版管理来控制分发更新的方式。 用户期望操作的补丁版本包括必要的关键修补程序和安全补丁,同时仍与其现有工作流程保持兼容。 每当更改影响兼容性时,应考虑发布新的主要版本。

在此发行版管理方法下,用户不应引用操作的默认分支,� 为它可能包含最新的代� �,� 此可能不稳定。 相反地,您可以建议用户在使用您的操作时指定主要版本,并且仅在遇到问题时将其定向到更具体的版本。

要使用特定的操作版本,用户可以配置其 GitHub Actions 工作流程定向� �记、 提交的 SHA 或为发行版指定的分支。

使用� �记进行发行版管理

建议使用� �记进行操作发行版管理。 使用这种方法,您的用户可以轻松地区分主要和次要版本:

  • 创建发布� �记(例如 v1.0.2)之前,创建并验证发布分支上的发布(例如 release/v1)。
  • 使用语义版本管理创建发行版。 有关详细信息,请参阅“创建版本”。
  • 移动主要版本� �记(例如 v1v2),以指向当前发布的 Git 引用。 有关详细信息,请参阅“Git 基础知识 - � �记“。
  • 针对� �坏现有工作流的更改引入新的主要版本� �记 (v2)。 例如,更改操作的输入就是� �坏性的更改。
  • 主要版本最初发布时可以使用 beta � �记来指示其状态,例如 v2-beta。 准备就绪后,可以� 除 -beta � �记。

此示例演示用户如何引用主要发行版� �记:

steps:
    - uses: actions/javascript-action@v1

此示例演示用户如何引用特定补丁发行版� �记:

steps:
    - uses: actions/javascript-action@v1.0.1

使用分支进行发行版管理

如果希望使用分支名称进行发行版管理,此示例演示如何引用指定的分支:

steps:
    - uses: actions/javascript-action@v1-beta

使用提交的 SHA 进行发行版管理

每个 Git 提交都会收到一个计算出来的 SHA 值,该值是唯一且不可更改的。 您操作的用户可能更喜欢依赖提交的 SHA 值,� 为此方法会比指定可� 除或移动的� �记更可� 。 但是,这意味着用户将不会收到对该操作所做的进一步更新。 必须使用提交的完整 SHA 值,而不是缩写值。

steps:
    - uses: actions/javascript-action@172239021f7ba04fe7327647b213799853a9eb89

为操作创建自述文件

如果计划公开分享您的操作,建议创建自述文件以帮助人们了解如何使用您的操作。 可以将此信息包含在 README.md 中:

  • 操作的详细描述
  • 必要的输入和输出变量
  • 可选的输入和输出变量
  • 操作使用的密� �
  • 操作使用的环境变量
  • 如何在工作流程中使用操作的示例

比较 GitHub Actions与 GitHub Apps

GitHub Marketplace 提供用于改进工作流程的工具。 了解每种工具的差异和优势将使您能够选择最适合自己作业的工具。 有关构建应用的详细信息,请参阅“关于应用”。

GitHub Actions 和 GitHub 应用程序的设置

尽管 GitHub Actions 和 GitHub Apps 都提供了构建自动化和工作流程工具的方法,但它们各有优点,使其以不同的方式发挥作用。

GitHub Apps:

  • 持续运行并且能够对事件迅速做出反应。
  • 需要持续性数据时效果非常好。
  • 适合处理不费时的 API 请求。
  • 在您提供的服务器或计算基础架构上运行

GitHub Actions:

  • 提供可执行持续集成和持续部署的自动化。
  • 可以直接在运行器计算机或 Docker 容器中运行。
  • 可以包括访问仓库克隆的权限,使部署和发布工具、代� �� �式化程序和命令行工具能够访问您的代� �。
  • 不需要您部署代� �或提供应用程序。
  • 具有创建和使用密� �的简单界面,该界面使操作能够与第三方服务进行交互,而� 需存储使用该操作人员的凭据。

延伸阅读