Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.
GitHub AE is currently under limited release.

创建组合操作

在本指南中,您将学习如何构建组合操作。

简介

在本指南中,您将了解创建和使用打包的组合操作所需的基本组件。 本指南的重点是打包操作所需的组件,因此很少讲操作代码的功能。 该操作将依次打印 "Hello World" 和 "Goodbye",如果您提供自定义名称,则将依次打印 "Hello [who-to-greet]" 和 "Goodbye"。 该操作还会将随机数映射到 random-number 输出变量,并运行名为 goodbye.sh 的脚本。

完成此项目后,您应了解如何构建自己的组合操作和在工作流程测试该操作。

警告:创建工作流程和操作时,应始终考虑代码是否会执行来自可能的攻击者的不信任输入。 某些上下文应被视为不受信任的输入,因为攻击者可能会插入自己的恶意内容。 有关详细信息,请参阅“了解脚本注入的风险”。

先决条件

在开始之前,你将在 GitHub AE 上创建一个存储库。

  1. 在 your enterprise 上创建一个公共存储库。 可以选择任何存储库名称,或使用以下 hello-world-composite-action 示例。 您可以在项目推送到 GitHub AE 之后添加这些文件。 有关详细信息,请参阅“创建新存储库”。

  2. 将仓库克隆到计算机。 有关详细信息,请参阅“克隆存储库”。

  3. 从您的终端,将目录更改为新仓库。

    cd hello-world-composite-action
  4. hello-world-composite-action 存储库中,新建一个名为 goodbye.sh 的文件,并添加以下示例代码:

    echo "Goodbye"
    
  5. 在终端中,生成 goodbye.sh 可执行文件。

    chmod +x goodbye.sh
  6. 从终端签入 goodbye.sh 文件。

    git add goodbye.sh
    git commit -m "Add goodbye script"
    git push

创建操作元数据文件

  1. hello-world-composite-action 存储库中,新建一个名为 action.yml 的文件,并添加以下示例代码。 有关此语法的详细信息,请参阅“组合操作的 runs”。

    action.yml

    name: 'Hello World'
    description: 'Greet someone'
    inputs:
      who-to-greet:  # id of input
        description: 'Who to greet'
        required: true
        default: 'World'
    outputs:
      random-number:
        description: "Random number"
        value: ${{ steps.random-number-generator.outputs.random-number }}
    runs:
      using: "composite"
      steps:
        - run: echo Hello ${{ inputs.who-to-greet }}.
          shell: bash
        - id: random-number-generator
          run: echo "::set-output name=random-number::$(echo $RANDOM)"
          shell: bash
        - run: echo "${{ github.action_path }}" >> $GITHUB_PATH
          shell: bash
        - run: goodbye.sh
          shell: bash
    

    此文件定义 who-to-greet 输入,将随机生成的数字映射到 random-number 输出变量,将操作路径添加到运行器系统路径(以在执行期间查找 goodbye.sh 脚本),并运行 goodbye.sh 脚本。

    有关管理输出的详细信息,请参阅“组合操作的 outputs”。

    有关如何使用 github.action_path 的详细信息,请参阅“github context”。

  2. 从终端签入 action.yml 文件。

    git add action.yml
    git commit -m "Add action"
    git push
  3. 从终端添加标记。 本示例使用名为 v1 的标记。 有关详细信息,请参阅“关于操作”。

    git tag -a -m "Description of this release" v1
    git push --follow-tags

在工作流程中测试您的操作

以下工作流代码使用你在“创建操作元数据文件”中完成的 hello world 操作。

将工作流代码复制到另一个存储库中的 .github/workflows/main.yml 文件中,但将 actions/hello-world-composite-action@v1 替换为你创建的存储库和标记。 还可以将 who-to-greet 输入替换为你的名称。

.github/workflows/main.yml

on: [push]

jobs:
  hello_world_job:
    runs-on: ubuntu-latest
    name: A job to say hello
    steps:
      - uses: actions/checkout@v2
      - id: foo
        uses: actions/hello-world-composite-action@v1
        with:
          who-to-greet: 'Mona the Octocat'
      - run: echo random-number ${{ steps.foo.outputs.random-number }}
        shell: bash

从存储库中,单击“操作”选项卡,然后选择最新的工作流运行。 输出应包括:"Hello Mona the Octocat"、"Goodbye" 脚本的结果以及随机数字。