跳至主要内容

GitHub Actions 的工作流命令

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

工具导航

关于工作流命令

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

大多数工作流命令使用特定格式的echo命令,而其他命令则通过写入文件来调用。更多信息,请参阅“环境文件”。

工作流命令示例

Bash
echo "::workflow-command parameter1={data},parameter2={data}::{command value}"
PowerShell
Write-Output "::workflow-command parameter1={data},parameter2={data}::{command value}"

注意

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

警告

如果您使用的是命令提示符,请在使用工作流命令时省略双引号字符 (")。

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

actions/toolkit 包含许多可以作为工作流命令执行的函数。使用::语法在 YAML 文件中运行工作流命令;这些命令然后通过stdout发送到运行器。

例如,无需使用代码创建错误注释,如下所示

JavaScript
core.error('Missing semicolon', {file: 'app.js', startLine: 1})

示例:创建错误注释

您可以在工作流中使用error命令创建相同的错误注释

YAML
      - name: Create annotation for build error
        run: echo "::error file=app.js,line=1::Missing semicolon"
YAML
      - name: Create annotation for build error
        run: Write-Output "::error file=app.js,line=1::Missing semicolon"

下表显示了工作流中可用的工具包函数

工具包函数等效工作流命令
core.addPath可通过环境文件GITHUB_PATH访问
core.debugdebug
core.noticenotice
core.errorerror
core.endGroupendgroup
core.exportVariable可通过环境文件GITHUB_ENV访问
core.getInput可通过环境变量INPUT_{NAME}访问
core.getState可通过环境变量STATE_{NAME}访问
core.isDebug可通过环境变量RUNNER_DEBUG访问
core.summary可通过环境文件GITHUB_STEP_SUMMARY访问
core.saveState可通过环境文件GITHUB_STATE访问
core.setCommandEchoecho
core.setFailed用作::errorexit 1的快捷方式
core.setOutput可通过环境文件GITHUB_OUTPUT访问
core.setSecretadd-mask
core.startGroupgroup
core.warningwarning

设置调试消息

将调试消息打印到日志。您必须创建一个名为ACTIONS_STEP_DEBUG值为true的密钥才能在日志中看到此命令设置的调试消息。更多信息,请参阅“启用调试日志记录”。

文本
::debug::{message}

示例:设置调试消息

Bash
echo "::debug::Set the Octocat variable"
PowerShell
Write-Output "::debug::Set the Octocat variable"

设置通知消息

创建通知消息并将消息打印到日志。此消息将创建一个注释,该注释可以将消息与存储库中的特定文件关联起来。可选地,您的消息可以指定文件中的位置。

文本
::notice file={name},line={line},endLine={endLine},title={title}::{message}
参数必需默认值
title自定义标题
file文件名.github
col列号,从 1 开始
endColumn结束列号
line行号,从 1 开始1
endLine结束行号1

示例:设置通知消息

Bash
echo "::notice file=app.js,line=1,col=5,endColumn=7::Missing semicolon"
PowerShell
Write-Output "::notice file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"

设置警告消息

创建警告消息并将消息打印到日志。此消息将创建一个注释,该注释可以将消息与存储库中的特定文件关联起来。可选地,您的消息可以指定文件中的位置。

文本
::warning file={name},line={line},endLine={endLine},title={title}::{message}
参数必需默认值
title自定义标题
file文件名.github
col列号,从 1 开始
endColumn结束列号
line行号,从 1 开始1
endLine结束行号1

示例:设置警告消息

Bash
echo "::warning file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"
PowerShell
Write-Output "::warning file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"

设置错误消息

创建错误消息并将消息打印到日志。此消息将创建一个注释,该注释可以将消息与存储库中的特定文件关联起来。可选地,您的消息可以指定文件中的位置。

文本
::error file={name},line={line},endLine={endLine},title={title}::{message}
参数必需默认值
title自定义标题
file文件名.github
col列号,从 1 开始
endColumn结束列号
line行号,从 1 开始1
endLine结束行号1

示例:设置错误消息

Bash
echo "::error file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"
PowerShell
Write-Output "::error file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"

分组日志行

在日志中创建一个可展开的组。要创建组,请使用group命令并指定title。在groupendgroup命令之间打印到日志的任何内容都嵌套在日志中的可展开条目内。

文本
::group::{title}
::endgroup::

示例:分组日志行

YAML
jobs:
  bash-example:
    runs-on: ubuntu-latest
    steps:
      - name: Group of log lines
        run: |
            echo "::group::My title"
            echo "Inside group"
            echo "::endgroup::"
YAML
jobs:
  powershell-example:
    runs-on: windows-latest
    steps:
      - name: Group of log lines
        run: |
            Write-Output "::group::My title"
            Write-Output "Inside group"
            Write-Output "::endgroup::"

Screenshot of the log for the workflow step. The second line, "My title", is prefaced by a downward arrow, indicating an expanded group. The next line, "Inside group", is indented below.

屏蔽日志中的值

文本
::add-mask::{value}

屏蔽值可防止在日志中打印字符串或变量。每个用空格分隔的屏蔽字都将替换为*字符。您可以使用环境变量或字符串作为掩码的value。当您屏蔽值时,它将被视为密钥,并在运行器上被删除。例如,屏蔽值后,您将无法将其设置为输出。

示例:屏蔽字符串

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

Bash
echo "::add-mask::Mona The Octocat"
PowerShell
Write-Output "::add-mask::Mona The Octocat"

警告

请确保在构建日志中输出密钥或在任何其他工作流命令中使用密钥之前,使用“add-mask”注册密钥。

示例:屏蔽环境变量

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

YAML
jobs:
  bash-example:
    runs-on: ubuntu-latest
    env:
      MY_NAME: "Mona The Octocat"
    steps:
      - name: bash-version
        run: echo "::add-mask::$MY_NAME"
YAML
jobs:
  powershell-example:
    runs-on: windows-latest
    env:
      MY_NAME: "Mona The Octocat"
    steps:
      - name: powershell-version
        run: Write-Output "::add-mask::$env:MY_NAME"

示例:屏蔽单个作业中的生成的输出

如果您不需要将密钥从一个作业传递到另一个作业,您可以

  1. 生成密钥(无需输出)。
  2. 使用add-mask屏蔽它。
  3. 使用GITHUB_OUTPUT使密钥可用于作业中的其他步骤。
YAML
on: push
jobs:
  generate-a-secret-output:
    runs-on: ubuntu-latest
    steps:
      - id: sets-a-secret
        name: Generate, mask, and output a secret
        run: |
          the_secret=$((RANDOM))
          echo "::add-mask::$the_secret"
          echo "secret-number=$the_secret" >> "$GITHUB_OUTPUT"
      - name: Use that secret output (protected by a mask)
        run: |
          echo "the secret number is ${{ steps.sets-a-secret.outputs.secret-number }}"
YAML
on: push
jobs:
  generate-a-secret-output:
    runs-on: ubuntu-latest
    steps:
      - id: sets-a-secret
        name: Generate, mask, and output a secret
        shell: pwsh
        run: |
          Set-Variable -Name TheSecret -Value (Get-Random)
          Write-Output "::add-mask::$TheSecret"
          "secret-number=$TheSecret" >> $env:GITHUB_OUTPUT
      - name: Use that secret output (protected by a mask)
        shell: pwsh
        run: |
          Write-Output "the secret number is ${{ steps.sets-a-secret.outputs.secret-number }}"

示例:在作业或工作流之间屏蔽和传递密钥

如果您想在作业或工作流之间传递屏蔽的密钥,则应将密钥存储在存储区中,然后在后续作业或工作流中检索它。

设置

  1. 设置密钥存储区以存储您将在工作流期间生成的密钥。例如,Vault。
  2. 生成用于读写该密钥存储区的密钥。将密钥存储为存储库密钥。在以下示例工作流中,密钥名称为SECRET_STORE_CREDENTIALS。更多信息,请参阅“在 GitHub Actions 中使用密钥”。

工作流

注意

此工作流使用虚构的密钥存储区secret-store,该存储区具有虚构的命令store-secretretrieve-secretsome/secret-store@ 27b31702a0e7fc50959f5ad993c78deac1bdfc29是一个虚构的操作,它安装secret-store应用程序并将其配置为连接到具有credentialsinstance

YAML
on: push

jobs:
  secret-generator:
    runs-on: ubuntu-latest
    outputs:
      handle: ${{ steps.generate-secret.outputs.handle }}
    steps:
    - uses: some/secret-store@27b31702a0e7fc50959f5ad993c78deac1bdfc29
      with:
        credentials: ${{ secrets.SECRET_STORE_CREDENTIALS }}
        instance: ${{ secrets.SECRET_STORE_INSTANCE }}
    - name: generate secret
      id: generate-secret
      shell: bash
      run: |
        GENERATED_SECRET=$((RANDOM))
        echo "::add-mask::$GENERATED_SECRET"
        SECRET_HANDLE=$(secret-store store-secret "$GENERATED_SECRET")
        echo "handle=$SECRET_HANDLE" >> "$GITHUB_OUTPUT"
  secret-consumer:
    runs-on: macos-latest
    needs: secret-generator
    steps:
    - uses: some/secret-store@27b31702a0e7fc50959f5ad993c78deac1bdfc29
      with:
        credentials: ${{ secrets.SECRET_STORE_CREDENTIALS }}
        instance: ${{ secrets.SECRET_STORE_INSTANCE }}
    - name: use secret
      shell: bash
      run: |
        SECRET_HANDLE="${{ needs.secret-generator.outputs.handle }}"
        RETRIEVED_SECRET=$(secret-store retrieve-secret "$SECRET_HANDLE")
        echo "::add-mask::$RETRIEVED_SECRET"
        echo "We retrieved our masked secret: $RETRIEVED_SECRET"
YAML
on: push

jobs:
  secret-generator:
    runs-on: ubuntu-latest
    steps:
    - uses: some/secret-store@27b31702a0e7fc50959f5ad993c78deac1bdfc29
      with:
        credentials: ${{ secrets.SECRET_STORE_CREDENTIALS }}
        instance: ${{ secrets.SECRET_STORE_INSTANCE }}
    - name: generate secret
      shell: pwsh
      run: |
        Set-Variable -Name Generated_Secret -Value (Get-Random)
        Write-Output "::add-mask::$Generated_Secret"
        Set-Variable -Name Secret_Handle -Value (Store-Secret "$Generated_Secret")
        "handle=$Secret_Handle" >> $env:GITHUB_OUTPUT
  secret-consumer:
    runs-on: macos-latest
    needs: secret-generator
    steps:
    - uses: some/secret-store@27b31702a0e7fc50959f5ad993c78deac1bdfc29
      with:
        credentials: ${{ secrets.SECRET_STORE_CREDENTIALS }}
        instance: ${{ secrets.SECRET_STORE_INSTANCE }}
    - name: use secret
      shell: pwsh
      run: |
        Set-Variable -Name Secret_Handle -Value "${{ needs.secret-generator.outputs.handle }}"
        Set-Variable -Name Retrieved_Secret -Value (Retrieve-Secret "$Secret_Handle")
        echo "::add-mask::$Retrieved_Secret"
        echo "We retrieved our masked secret: $Retrieved_Secret"

停止和启动工作流命令

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

文本
::stop-commands::{endtoken}

要停止处理工作流命令,请将唯一令牌传递给stop-commands。要恢复处理工作流命令,请传递与停止工作流命令时使用的相同令牌。

警告

确保您使用的令牌是随机生成的,并且每次运行都是唯一的。

文本
::{endtoken}::

示例:停止和启动工作流命令

YAML
jobs:
  workflow-command-job:
    runs-on: ubuntu-latest
    steps:
      - name: Disable workflow commands
        run: |
          echo '::warning:: This is a warning message, to demonstrate that commands are being processed.'
          stopMarker=$(uuidgen)
          echo "::stop-commands::$stopMarker"
          echo '::warning:: This will NOT be rendered as a warning, because stop-commands has been invoked.'
          echo "::$stopMarker::"
          echo '::warning:: This is a warning again, because stop-commands has been turned off.'
YAML
jobs:
  workflow-command-job:
    runs-on: windows-latest
    steps:
      - name: Disable workflow commands
        run: |
          Write-Output '::warning:: This is a warning message, to demonstrate that commands are being processed.'
          $stopMarker = New-Guid
          Write-Output "::stop-commands::$stopMarker"
          Write-Output '::warning:: This will NOT be rendered as a warning, because stop-commands has been invoked.'
          Write-Output "::$stopMarker::"
          Write-Output '::warning:: This is a warning again, because stop-commands has been turned off.'

向预操作和后操作发送值

您可以通过写入位于GITHUB_STATE的文件来创建环境变量,以便与工作流的pre:post:操作共享。例如,您可以使用pre:操作创建一个文件,将文件位置传递给main:操作,然后使用post:操作删除该文件。或者,您可以使用main:操作创建一个文件,将文件位置传递给post:操作,并使用post:操作删除该文件。

如果您有多个pre:post:操作,则只能在将保存的值写入GITHUB_STATE的操作中访问它。有关post:操作的更多信息,请参阅“GitHub Actions 的元数据语法”。

GITHUB_STATE文件仅在操作中可用。保存的值将作为具有STATE_前缀的环境值存储。

此示例使用 JavaScript 写入GITHUB_STATE文件。生成的環境變數的名稱為STATE_processID,其值为12345

JavaScript
import * as fs from 'fs'
import * as os from 'os'

fs.appendFileSync(process.env.GITHUB_STATE, `processID=12345${os.EOL}`, {
  encoding: 'utf8'
})

然后,STATE_processID变量专门可用于在main操作下运行的清理脚本。此示例在main中运行,并使用 JavaScript 显示分配给STATE_processID环境变量的值

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

环境文件

在工作流执行期间,运行器会生成可用于执行某些操作的临时文件。可以使用 GitHub 的默认环境变量访问和编辑这些文件的路径。请参阅“将信息存储在变量中”。写入这些文件时,您需要使用 UTF-8 编码才能确保正确处理命令。多个命令可以写入同一文件,并用换行符分隔。要在 GitHub Action 中使用环境变量,您可以使用特定的 GitHub Actions 命令创建或修改.env文件。

方法如下

YAML
name: Example Workflow for Environment Files

on: push

jobs:
  set_and_use_env_vars:
    runs-on: ubuntu-latest
    steps:
      - name: Set environment variable
        run: echo "MY_ENV_VAR=myValue" >> $GITHUB_ENV

      - name: Use environment variable
        run: |
          echo "The value of MY_ENV_VAR is $MY_ENV_VAR"

另一个示例是使用它来存储元数据,例如构建时间戳、提交 SHA 或工件名称

YAML
steps:
  - name: Store build timestamp
    run: echo "BUILD_TIME=$(date +'%T')" >> $GITHUB_ENV

  - name: Deploy using stored timestamp
    run: echo "Deploying at $BUILD_TIME"

注意

PowerShell 5.1 及更低版本 (shell: powershell) 默认情况下不使用 UTF-8,因此您必须指定 UTF-8 编码。例如

YAML
jobs:
  legacy-powershell-example:
    runs-on: windows-latest
    steps:
      - shell: powershell
        run: |
          "mypath" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append

PowerShell Core 6 及更高版本 (shell: pwsh) 默认情况下使用 UTF-8。例如

YAML
jobs:
  powershell-core-example:
    runs-on: windows-latest
    steps:
      - shell: pwsh
        run: |
          "mypath" >> $env:GITHUB_PATH

设置环境变量

注意

为避免出现问题,最佳实践是将环境变量视为区分大小写,而不管您使用的操作系统和 shell 的行为如何。

Bash
echo "{environment_variable_name}={value}" >> "$GITHUB_ENV"
  • 使用 PowerShell 6 及更高版本

    PowerShell
    "{environment_variable_name}={value}" >> $env:GITHUB_ENV
    
  • 使用 PowerShell 5.1 及更低版本

    PowerShell
    "{environment_variable_name}={value}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
    

通过定义或更新环境变量并将其写入GITHUB_ENV环境文件,您可以使环境变量对工作流作业中的后续步骤可用。创建或更新环境变量的步骤无法访问新值,但作业中的所有后续步骤都可以访问。

您不能覆盖名为GITHUB_*RUNNER_*的默认环境变量的值。目前您可以覆盖CI变量的值。但是,这并非总是可行的。有关默认环境变量的更多信息,请参阅“在变量中存储信息”。

注意

由于安全限制,GITHUB_ENV不能用于设置NODE_OPTIONS环境变量。

将环境变量写入GITHUB_ENV的示例

YAML
steps:
  - name: Set the value
    id: step_one
    run: |
      echo "action_state=yellow" >> "$GITHUB_ENV"
  - name: Use the value
    id: step_two
    run: |
      printf '%s\n' "$action_state" # This will output 'yellow'
YAML
steps:
  - name: Set the value
    id: step_one
    run: |
      "action_state=yellow" >> $env:GITHUB_ENV
  - name: Use the value
    id: step_two
    run: |
      Write-Output "$env:action_state" # This will output 'yellow'

多行字符串

对于多行字符串,您可以使用以下语法分隔符。

文本
{name}<<{delimiter}
{value}
{delimiter}

警告

确保您使用的分隔符不会单独出现在值中的某一行。如果值完全是任意的,则不应使用此格式。而是将值写入文件。

多行字符串示例

此示例使用EOF作为分隔符,并将JSON_RESPONSE环境变量设置为curl响应的值。

YAML
steps:
  - name: Set the value in bash
    id: step_one
    run: |
      {
        echo 'JSON_RESPONSE<<EOF'
        curl https://example.com
        echo EOF
      } >> "$GITHUB_ENV"
YAML
steps:
  - name: Set the value in pwsh
    id: step_one
    run: |
      $EOF = (New-Guid).Guid
      "JSON_RESPONSE<<$EOF" >> $env:GITHUB_ENV
      (Invoke-WebRequest -Uri "https://example.com").Content >> $env:GITHUB_ENV
      "$EOF" >> $env:GITHUB_ENV
    shell: pwsh

设置输出参数

设置步骤的输出参数。请注意,步骤需要定义一个id才能稍后检索输出值。您可以使用"多行字符串"部分中定义多行环境变量的相同技术来设置多行输出值。

Bash
echo "{name}={value}" >> "$GITHUB_OUTPUT"
PowerShell
"{name}=value" >> $env:GITHUB_OUTPUT

设置输出参数的示例

此示例演示如何设置SELECTED_COLOR输出参数并稍后检索它。

YAML
      - name: Set color
        id: color-selector
        run: echo "SELECTED_COLOR=green" >> "$GITHUB_OUTPUT"
      - name: Get color
        env:
          SELECTED_COLOR: ${{ steps.color-selector.outputs.SELECTED_COLOR }}
        run: echo "The selected color is $SELECTED_COLOR"

此示例演示如何设置SELECTED_COLOR输出参数并稍后检索它。

YAML
      - name: Set color
        id: color-selector
        run: |
            "SELECTED_COLOR=green" >> $env:GITHUB_OUTPUT
      - name: Get color
        env:
          SELECTED_COLOR: ${{ steps.color-selector.outputs.SELECTED_COLOR }}
        run: Write-Output "The selected color is $env:SELECTED_COLOR"

添加作业摘要

Bash
echo "{markdown content}" >> $GITHUB_STEP_SUMMARY
PowerShell
"{markdown content}" >> $env:GITHUB_STEP_SUMMARY

您可以为每个作业设置一些自定义Markdown,以便将其显示在工作流运行的摘要页面上。您可以使用作业摘要来显示和分组唯一内容,例如测试结果摘要,以便查看工作流运行结果的人员无需进入日志即可查看与运行相关的重要的信息,例如失败。

作业摘要支持GitHub风格的Markdown,您可以将步骤的Markdown内容添加到GITHUB_STEP_SUMMARY环境文件中。GITHUB_STEP_SUMMARY对于作业中的每个步骤都是唯一的。有关GITHUB_STEP_SUMMARY引用的每个步骤文件,请参阅“环境文件”。

作业完成后,作业中所有步骤的摘要将组合成单个作业摘要,并显示在工作流运行摘要页面上。如果多个作业生成摘要,则作业摘要按作业完成时间排序。

添加作业摘要的示例

Bash
echo "### Hello world! :rocket:" >> $GITHUB_STEP_SUMMARY
PowerShell
"### Hello world! :rocket:" >> $env:GITHUB_STEP_SUMMARY

Screenshot of the summary page of a workflow run. Under "example summary" is "Hello world!" and a rocket emoji.

多行Markdown内容

对于多行Markdown内容,您可以使用>>连续追加当前步骤的内容。每次追加操作都会自动添加换行符。

多行Markdown内容示例

- name: Generate list using Markdown
  run: |
    echo "This is the lead in sentence for the list" >> $GITHUB_STEP_SUMMARY
    echo "" >> $GITHUB_STEP_SUMMARY # this is a blank line
    echo "- Lets add a bullet point" >> $GITHUB_STEP_SUMMARY
    echo "- Lets add a second bullet point" >> $GITHUB_STEP_SUMMARY
    echo "- How about a third one?" >> $GITHUB_STEP_SUMMARY
- name: Generate list using Markdown
  run: |
    "This is the lead in sentence for the list" >> $env:GITHUB_STEP_SUMMARY
    "" >> $env:GITHUB_STEP_SUMMARY # this is a blank line
    "- Lets add a bullet point" >> $env:GITHUB_STEP_SUMMARY
    "- Lets add a second bullet point" >> $env:GITHUB_STEP_SUMMARY
    "- How about a third one?" >> $env:GITHUB_STEP_SUMMARY

覆盖作业摘要

要清除当前步骤的所有内容,可以使用>覆盖Bash中先前添加的任何内容,或删除PowerShell中的-Append

覆盖作业摘要的示例

- name: Overwrite Markdown
  run: |
    echo "Adding some Markdown content" >> $GITHUB_STEP_SUMMARY
    echo "There was an error, we need to clear the previous Markdown with some new content." > $GITHUB_STEP_SUMMARY
- name: Overwrite Markdown
  run: |
    "Adding some Markdown content" >> $env:GITHUB_STEP_SUMMARY
    "There was an error, we need to clear the previous Markdown with some new content." >> $env:GITHUB_STEP_SUMMARY

删除作业摘要

要完全删除当前步骤的摘要,可以删除GITHUB_STEP_SUMMARY引用的文件。

删除作业摘要的示例

- name: Delete all summary content
  run: |
    echo "Adding Markdown content that we want to remove before the step ends" >> $GITHUB_STEP_SUMMARY
    rm $GITHUB_STEP_SUMMARY
- name: Delete all summary content
  run: |
    "Adding Markdown content that we want to remove before the step ends" >> $env:GITHUB_STEP_SUMMARY
    Remove-Item $env:GITHUB_STEP_SUMMARY

步骤完成后,将上传作业摘要,后续步骤无法修改先前上传的Markdown内容。摘要会自动屏蔽可能意外添加的任何密钥。如果作业摘要包含必须删除的敏感信息,您可以删除整个工作流运行以删除其所有作业摘要。有关更多信息,请参阅“删除工作流运行”。

步骤隔离和限制

作业摘要在步骤之间是隔离的,每个步骤的大小限制为1MiB。步骤之间强制执行隔离,以便单个步骤的潜在格式错误的Markdown不会破坏后续步骤的Markdown渲染。如果为步骤添加的内容超过1MiB,则步骤的上传将失败,并将创建错误注释。作业摘要的上传失败不会影响步骤或作业的整体状态。每个作业最多显示来自步骤的20个作业摘要。

添加系统路径

将目录添加到系统PATH变量的前面,并自动使其对当前作业中的所有后续操作可用;当前正在运行的操作无法访问更新的路径变量。要查看当前作业的已定义路径,您可以在步骤或操作中使用echo "$PATH"

添加系统路径的示例

此示例演示如何将用户$HOME/.local/bin目录添加到PATH

Bash
echo "$HOME/.local/bin" >> "$GITHUB_PATH"

此示例演示如何将用户$env:HOMEPATH/.local/bin目录添加到PATH

PowerShell
"$env:HOMEPATH/.local/bin" | Out-File -FilePath "$env:GITHUB_PATH" -Append