我有以下复合动作;
name: Send Email
description: Use this composite action
# outputs:
# key_value_x:
# value: ${{ env.testvarenv }}
runs:
using: "composite"
steps:
- name: set environment variable
run: |
echo "testvarenv='wow'" >> $env:GITHUB_ENV
shell: powershell
- name: Inside composite action
run: |
echo "testvarenv is ${{ env.testvarenv }}"
shell: powershell
testvarenv
在复合动作中打印良好。
但是,当我尝试在调用者工作流程(复合工作流程之外)中打印相同内容时,它不会打印
${{ env.testvarenv }}
的值
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Use the composite action in the root dir
uses: ./
- name: Outside composite action
run: |
echo "testvarenv is ${{ env.testvarenv }}"
我知道如何使用
outputs:
获取外部(即调用者工作流程中)任何复合变量的值;但想知道是否可以使用 environment
变量。
编辑以更正答案:
不知道为什么OP说他们的例子不起作用。你可以复制它并且它会起作用。
runs.steps[*].env
字段的文档指出;
如果要修改工作流程中存储的环境变量,请在复合步骤中使用 echo
。"{name}={value}" >> $GITHUB_ENV
您可以使用 action
SO/76522542/action.yml
进行重现
name: Set Env Value
description: Use this composite action
runs:
using: "composite"
steps:
- name: set environment variable
run: echo "ENVWORD=abcxyz" >> $GITHUB_ENV
shell: bash
- name: Inside composite action
run: echo "ENVWORD is ${{ env.ENVWORD }}"
shell: bash
和工作流程
.github/workflows/76522542.yml
name: SO 76522542 - Env example
on:
push:
jobs:
action-env-example:
runs-on: ubuntu-latest
defaults:
run:
shell: bash
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Use the composite action
uses: ./SO/76522542
- name: Outside composite action
run: echo "ENVWORD is ${{ env.ENVWORD }}"
原答案:(这是针对
worfklows
,对于actions
是错误的)
请参阅重用工作流程:限制;
同样,在被调用工作流中定义的
上下文中设置的环境变量在调用方工作流的env
上下文中无法访问。env