是否可以在调用者工作流程中继承被调用的复合 GitHub 操作的环境上下文

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

我有以下复合动作;

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
变量。

github environment-variables github-actions workflow
1个回答
0
投票

编辑以更正答案:

不知道为什么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 }}"

根据文档,情况似乎一直如此(至少 4 年前)

原答案:(这是针对

worfklows
,对于
actions
是错误的)

请参阅重用工作流程:限制

同样,在被调用工作流中定义的

env
上下文中设置的环境变量在调用方工作流的
env
上下文中无法访问。

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