此版本的 GitHub Enterprise 将停止服务 2022-02-16. 即使针对重大安全问题,也不会发布补丁。 要获得更好的性能、改进的安全性和新功能,请升级到 GitHub Enterprise 的最新版本。 如需升级方面的帮助,请联系 GitHub Enterprise 支持

查找和自定义操作

操作是支持工作流程的构建块。 工作流程可以包含社区创建的操作,您也可以直接在应用程序的仓库中创建您自己的操作。 本指南说明如何发现、使用和自定义操作。

注: GitHub 托管的运行器目前在 GitHub Enterprise Server 上不受支持。 您可以在 GitHub 公共路线图 上查看有关未来支持计划的更多信息。

概览

在工作流程中使用的操作可以定义于:

  • 公共仓库
  • 工作流程文件引用操作的同一仓库
  • Docker Hub 上发布的 Docker 容器图像

GitHub Marketplace 是您查找 GitHub 社区创建的操作的中心位置。

注:您的 GitHub Enterprise Server 实例 上的 GitHub Actions 对 GitHub.com 或 GitHub Marketplace 上的操作具有有限的访问权限。 更多信息请参阅“自托管运行器与 GitHub 之间的通信”。

对自定义操作使用发行版管理

社区操作的创建者可以选择使用标记、分支或 SHA 值来管理操作的版本。 与任何依赖项类似,您应该根据自动接受操作更新的舒适程度来指示要使用的操作版本。

您将在工作流程文件中指定操作的版本。 检查操作的文档,了解其发行版管理方法的信息,并查看要使用的标记、分支或 SHA 值。

注意: 我们建议您在使用第三方操作时使用 SHA 值。 更多信息请参阅“GitHub Actions 的安全性增强”。

使用标记

标记可用于让您决定何时在主要版本和次要版本之间切换,但这只是临时的,可能被维护员移动或删除。 此示例演示如何定位已标记为 v1.0.1 的操作:

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

使用 SHA

如果需要更可靠的版本控制,应使用与操作版本关联的 SHA 值。 SHA 是不可变的,因此比标记或分支更可靠。 但是,此方法意味着您不会自动接收操作的更新,包括重要的 Bug 修复和安全更新。 此示例针对操作的 SHA:

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

使用分支

为操作指定目标分支意味着它将始终在该分支上运行当前的版本。 如果对分支的更新包含重大更改,此方法可能会造成问题。 此示例针对名为 @main的分支:

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

更多信息请参阅“对操作使用发行版管理”。

对操作使用输入和输出

操作通常接受或需要输入并生成可以使用的输出。 例如,操作可能要求您指定文件的路径、标签的名称或它将用作操作处理一部分的其他数据。

要查看操作的输入和输出,请检查仓库根目录中的 action.ymlaction.yaml

在此示例 .yml 中, inputs 关键字定义名为 file-path 的必需输入,并且包括在未指定任何输入时使用的默认值。 outputs 关键字定义名为 results-file 的输出,告诉您到何处查找结果。

name: "Example"
description: "Receives file and generates output"
inputs:
  file-path: # id of input
    description: "Path to test script"
    required: true
    default: "test-file.js"
outputs:
  results-file: # id of output
    description: "Path to results file"

在工作流程文件使用操作的同一仓库中引用操作

如果操作在工作流程文件使用该操作的同一仓库中定义,您可以在工作流程文件中通过 ‌{owner}/{repo}@{ref}./path/to/dir 语法引用操作。

示例仓库文件结构:

|-- hello-world (repository)
|   |__ .github
|       └── workflows
|           └── my-first-workflow.yml
|       └── actions
|           |__ hello-world-action
|               └── action.yml

示例工作流程文件:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # This step checks out a copy of your repository.
      - uses: actions/checkout@v2
      # This step references the directory that contains the action.
      - uses: ./.github/actions/hello-world-action

action.yml 文件用于提供操作的元数据。 要了解此文件的内容,请参阅“GitHub Actions 的元数据语法

引用 Docker Hub 上的容器

如果操作在 Docker Hub 上发布的 Docker 容器图像中定义,您必须在工作流程文件中通过 docker://{image}:{tag} 语法引用操作。 为保护代码和数据,强烈建议先验证 Docker Hub 中 Docker 容器图像的完整性后再将其用于工作流程。

jobs:
  my_first_job:
    steps:
      - name: My first step
        uses: docker://alpine:3.8

有关 Docker 操作的部分示例,请参阅 Docker-image.yml 工作流程和“创建 Docker 容器操作”。

后续步骤

要继续了解 GitHub Actions,请参阅“GitHub Actions 的基本功能”。

此文档对您有帮助吗?

隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。