注:GitHub Enterprise Server 2.22 上的 GitHub Actions 支持是有限的公测版。 测试已结束。 GitHub Actions 现在一般可用于 GitHub Enterprise Server 3.0 或更新版本。 更多信息请参阅 GitHub Enterprise Server 3.0 发行说明。
- 有关升级到 GitHub Enterprise Server 3.0 或更新版本的更多信息,请参阅“升级 GitHub Enterprise Server”。
- 有关在升级后配置 GitHub Actions 的更多信息,请参阅 GitHub Enterprise Server 3.0 的文档。
注: GitHub 托管的运行器目前在 GitHub Enterprise Server 上不受支持。 您可以在 GitHub 公共路线图 上查看有关未来支持计划的更多信息。
简介
In this guide, you'll learn about the basic components needed to create and use a packaged composite action. 本指南的重点是打包操作所需的组件,因此很少讲操作代码的功能。 该操作将依次打印 "Hello World" 和 "Goodbye",如果您提供自定义名称,则将依次打印 "Hello [who-to-greet]" 和 "Goodbye"。 该操作还将随机数映射到 random-number
输出变量,并运行名为 goodbye.sh
的脚本。
Once you complete this project, you should understand how to build your own composite action and test it in a workflow.
警告:创建工作流程和操作时,您应始终考虑您的代码是否会执行来自可能的攻击者的不信任输入。 某些上下文应被视为不受信任的输入,因为攻击者可能会插入自己的恶意内容。 更多信息请参阅“了解脚本注入的风险”。
基本要求
在开始之前,您将要创建 GitHub Enterprise Server 仓库。
-
在 您的 GitHub Enterprise Server 实例 上创建公共仓库 You can choose any repository name, or use the following
hello-world-composite-action
example. 您可以在项目推送到 GitHub Enterprise Server 之后添加这些文件。 更多信息请参阅“创建新仓库”。 -
将仓库克隆到计算机。 更多信息请参阅“克隆仓库”。
-
从您的终端,将目录更改为新仓库。
cd hello-world-composite-action
-
In the
hello-world-composite-action
repository, create a new file calledgoodbye.sh
, and add the following example code:echo "Goodbye"
-
从您的终端创建
goodbye.sh
可执行文件。chmod +x goodbye.sh
-
从终端检入
goodbye.sh
文件。git add goodbye.sh git commit -m "Add goodbye script" git push
创建操作元数据文件
-
In the
hello-world-composite-action
repository, create a new file calledaction.yml
and add the following example code. For more information about this syntax, see "runs
for a composite actions".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-id }} runs: using: "composite" steps: - run: echo Hello ${{ inputs.who-to-greet }}. shell: bash - id: random-number-generator run: echo "::set-output name=random-id::$(echo $RANDOM)" shell: bash - run: ${{ github.action_path }}/goodbye.sh shell: bash
此文件定义
who-greet
输入,将随机生成的数字映射到random-number
输出变量,并运行goodbye.sh
脚本。 It also tells the runner how to execute the composite action.For more information about managing outputs, see "
outputs
for a composite action".有关如何使用
github.action_path
的更多信息,请参阅“github context
”。 -
从终端检入
action.yml
文件。git add action.yml git commit -m "Add action" git push
-
从终端添加标记。 此示例使用名为
v1
的标记。 更多信息请参阅“关于操作”。git tag -a -m "Description of this release" v1 git push --follow-tags
在工作流程中测试您的操作
以下工作流程代码使用您在“创建操作元数据文件”中设置的已完成 hello world 操作。
Copy the workflow code into a .github/workflows/main.yml
file in another repository, but replace actions/hello-world-composite-action@v1
with the repository and tag you created. 您还可以将 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
从您的仓库中,单击 Actions(操作)选项卡,然后选择最新的工作流程来运行。 输出应包括:"Hello Mona the Octocat"、"Goodbye" 脚本的结果以及随机数字。