跳到主要内容

关于自定义 action

关于自定义 action

您可以通过编写与您的代码仓库交互的自定义代码来创建操作,包括与 GitHub 的 API 以及任何公开可用的第三方 API 集成。例如,一个操作可以发布 npm 模块,在创建紧急问题时发送 SMS 警报,或部署生产就绪的代码。

您可以编写自己的操作以在工作流中使用,或与 GitHub 社区分享您构建的操作。要与所有人分享您构建的操作,您的代码仓库必须是公开的。

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

操作类型

注意

您可以构建 Docker 容器、JavaScript 和复合操作。操作需要一个元数据文件来定义操作的输入、输出和运行配置。操作元数据文件使用 YAML 语法,元数据文件名必须是 action.ymlaction.yaml 。首选格式是 action.yml

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 代码仓库。

复合操作

一个 复合 动作允许您将多个工作流步骤组合在一个动作中。例如,您可以使用此功能将多个运行命令打包成一个动作,然后有一个工作流使用该动作将打包的命令作为一个步骤执行。要查看示例,请查看 创建复合动作

下一步

要了解如何管理您的自定义动作,请参阅 管理自定义动作