我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

GitHub 操作的工作流程命令

您可以在工作流程或操作代码中运行 shell 命令时使用工作流程命令。

GitHub 操作 可用于 GitHub Free、GitHub Pro、组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud 和 GitHub One。 GitHub 操作 不适用于使用旧版按仓库计划的帐户所拥有的私有仓库。 更多信息请参阅“GitHub 的产品”。

本文内容

关于工作流程命令

操作可以与运行器机器进行通信,以设置环境变量,其他操作使用的输出值,将调试消息添加到输出日志和其他任务。

工作流程命令使用特定格式的 echo 命令。

echo "::workflow-command parameter1={data},parameter2={data}::{command value}"

注意:工作流程命令和参数名称不区分大小写。

警告:如果您使用命令提示符,则使用工作流程命令时忽略双引号字符 (")。

使用工作流程命令访问工具包函数

actions/toolkit 包括一些可以作为工作流程命令执行的功能。 使用 :: 语法来运行您的 YAML 文件中的工作流程命令;然后,通过 stdout 将这些命令发送给运行器。 例如,不使用如下所示的代码来设置环境变量:

core.exportVariable('SELECTED_COLOR', 'green');

您可以在工作流程中使用 set-env 命令来设置相同的值:

      - name: Set selected color
        run: echo '::set-env name=SELECTED_COLOR::green'
      - name: Get color
        run: echo 'The selected color is' $SELECTED_COLOR

下表显示了在工作流程中可用的工具包功能:

工具包函数等效工作流程命令
core.addPathadd-path
core.debugdebug
core.errorerror
core.endGroupendgroup
core.exportVariableset-env
core.getInput可使用环境变量 INPUT_{NAME} 访问
core.getState可使用环境变量 STATE_{NAME} 访问
core.isDebug可使用环境变量 RUNNER_DEBUG 访问
core.saveStatesave-state
core.setFailed用作 ::errorexit 1 的快捷方式
core.setOutputset-output
core.setSecretadd-mask
core.startGroup
core.warning警告文件

设置环境变量

::set-env name={name}::{value}

为作业中接下来运行的任何操作创建或更新环境变量。 创建或更新环境变量的操作无法访问新值。 但在作业中的所有后续操作均可访问。 环境变量区分大小写,并且可以包含标点符号。

示例

echo "::set-env name=action_state::yellow"

设置输出参数

::set-output name={name}::{value}

设置操作的输出参数。

(可选)您也可以在操作的元数据文件中声明输出参数。 更多信息请参阅“GitHub 操作 的元数据语法”。

示例

echo "::set-output name=action_fruit::strawberry"

添加系统路径

::add-path::{path}

为当前作业中的所有后续操作将目录添加到系统 PATH 变量之前。 当前运行的操作无法访问新路径变量。

示例

echo "::add-path::/path/to/dir"

设置调试消息

::debug::{message}

将调试消息打印到日志。 您可以创建名为 ACTIONS_STEP_DEBUG、值为 true 的密码,才能在日志中查看通过此命令设置的调试消息。 更多信息请参阅“管理工作流程运行”。

示例

echo "::debug::Set the Octocat variable"

设置警告消息

::warning file={name},line={line},col={col}::{message}

创建警告消息并将该消息打印到日志。 您可以选择提供警告出现位置的文件名 (file)、行号 (line) 和列号 (col)。

示例

echo "::warning file=app.js,line=1,col=5::Missing semicolon"

设置错误消息

::error file={name},line={line},col={col}::{message}

创建错误消息并将该消息打印到日志。 您可以选择提供警告出现位置的文件名 (file)、行号 (line) 和列号 (col)。

示例

echo "::error file=app.js,line=10,col=15::Something went wrong"

在日志中屏蔽值

::add-mask::{value}

屏蔽值可阻止在日志中打印字符串或变量。 用空格分隔的每个屏蔽的词均替换为 * 字符。 您可以使用环境变量或字符串作为屏蔽的 value

屏蔽字符串的示例

当您在日志中打印 "Mona The Octocat" 时,您将看到 "***"

echo "::add-mask::Mona The Octocat"

屏蔽环境变量的示例

当您在日志中打印变量 MY_NAME 或值 "Mona The Octocat" 时,您将看到 "***" 而不是 "Mona The Octocat"

MY_NAME="Mona The Octocat"
echo "::add-mask::$MY_NAME"

停止和启动工作流程命令

::stop-commands::{endtoken}

停止处理任何工作流程命令。 此特殊命令可让您记录任何内容而不会意外运行工作流程命令。 例如,您可以停止记录以输出带有注释的整个脚本。

停止工作流程命令的示例

echo "::stop-commands::pause-logging"

要启动工作流程命令,请传递用于停止工作流程命令的令牌。

::{endtoken}::

启动工作流程命令的示例

echo "::pause-logging::"

Sending values to the pre and post actions

You can use the save-state command to create environment variables for sharing with your workflow's pre: or post: actions. For example, you can create a file with the pre: action, pass the file location to the main: action, and then use the post: action to delete the file. Alternatively, you could create a file with the main: action, pass the file location to the post: action, and also use the post: action to delete the file.

If you have multiple pre: or post: actions, you can only access the saved value in the action where save-state was used. For more information on the post: action, see "Metadata syntax for GitHub 操作."

The save-state command can only be run within an action, and is not available to YAML files. The saved value is stored as an environment value with the STATE_ prefix.

This example uses JavaScript to run the save-state command. The resulting environment variable is named STATE_processID with the value of 12345:

console.log('::save-state name=processID::12345')

The STATE_processID variable is then exclusively available to the cleanup script running under the main action. This example runs in main and uses JavaScript to display the value assigned to the STATE_processID environment variable:

console.log("The running PID from the main action is: " +  process.env.STATE_processID);

问问别人

找不到要找的内容?

联系我们