我试图理解我的错误在哪里: 我想在复合文件中设置输出变量,但我一直得到空结果:
'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
我相信会有更多的人遇到和我一样的问题。
这是我的最终代码:
主工作流程.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
在提供的代码中,似乎有几个问题导致了空结果。我将在下面解决这些问题并提供复合操作文件的更正版本。
输出值分配不正确: 复合操作文件中的输出值“随机数”未正确分配。值字段应该是对名为“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 }} 访问输出时,您应该在主工作流程中看到预期结果。