Github 操作的输出:如何在复合文件中设置输出变量

问题描述 投票:0回答:2

我试图理解我的错误在哪里: 我想在复合文件中设置输出变量,但我一直得到空结果:

'Output - ${{ steps.hello-world.outputs.random-number }}'
返回
'Output - '
就像
'${{ steps.hello-world.outputs.random-number }}'
从未设置过一样。

主工作流程.yml:

name: My action 

on:
  workflow_dispatch:
    
jobs:
  test-job:
    runs-on: ubuntu-22.04
    steps:
      - name: Call Hello World 
        id: hello-world
        uses: actions/hello-world-action@v1
      - name: Comment
        run: echo 'Output - ${{ steps.hello-world.outputs.random-number }}'

我要在其中设置变量的文件:

name: 'Hello World'
description: 'Greet someone'
inputs:
  who-to-greet:  # id of input
    description: 'Who to greet'
    required: false
    default: 'World'
outputs:
  random-number:
    description: "Random number"
    value: ${{ steps.random-number-generator.outputs.random-number }}
runs:
  using: "composite"
  steps:
    - name: Random number generator
      id: random-number-generator
      run: "random-number=$(echo 123)" >> $GITHUB_OUTPUT
      shell: bash
bash environment-variables output github-actions
2个回答
0
投票

我相信会有更多的人遇到和我一样的问题。

这是我的最终代码:

主工作流程.yml:

name: My action 

on:
  workflow_dispatch:
    
jobs:
  test-job:
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout
        uses: actions/checkout@v1
      - name: Call Hello World 
        id: hello-world
        uses: ./.github/workflows/hello-world-action
      - name: Comment
        run: echo 'Output - ${{ steps.hello-world.outputs.random-number }}'
      - name: Composite Check
        uses: ./.github/workflows/read-output
        with: 
          rand: ${{ steps.hello-world.outputs.random-number }}

hello-world-action.yml:

让我们以 Github 文档中找到的复合操作为例:

name: 'Hello World'
description: 'Greet someone'
inputs:
  who-to-greet:  # id of input
    description: 'Who to greet'
    required: false
    default: 'World'
outputs:
  random-number:
    description: "Random number"
    value: ${{ steps.random-number-generator.outputs.random-number }}
runs:
  using: "composite"
  steps:
    - name: Random number generator
      id: random-number-generator
      run: |
        test=1234
        echo "random-number=$test" >> $GITHUB_OUTPUT
      shell: bash

-5
投票

在提供的代码中,似乎有几个问题导致了空结果。我将在下面解决这些问题并提供复合操作文件的更正版本。

输出值分配不正确: 复合操作文件中的输出值“随机数”未正确分配。值字段应该是对名为“random-number-generator”的步骤的输出的引用。相反,它引用自身,这导致输出为空。要解决此问题,您需要使用正确的步骤参考进行值分配。

不正确的 Shell 命令格式: 复合操作文件中的 shell 命令似乎格式不正确。运行字段应包含生成随机数的实际命令。提供的命令“random-number=$(echo 123)”格式不正确。

这是复合操作文件的更正版本:

yaml 复制代码 名称:“你好世界” 描述:“向某人打招呼” 输入: 向谁打招呼: 描述:“向谁打招呼” 必填:假 默认值:“世界” 输出: 随机数: 描述:“随机数” 值:${{steps.random-number-generator.outputs.random-number}} 运行: 使用:“复合” 脚步: - 名称:随机数生成器 id:随机数生成器 运行: | echo "::set-output name=random-number::123" 说明:

在随机数生成器步骤中,我们使用 echo 命令生成随机数“123”。 我们使用 ::set-output 语法将输出变量“random-number”设置为值“123”。这使得随机数可用作复合操作的输出。 使用此更正后的复合操作文件,应正确设置输出变量,并且当您使用 ${{ steps.hello-world.outputs.random-number }} 访问输出时,您应该在主工作流程中看到预期结果。

© www.soinside.com 2019 - 2024. All rights reserved.