提问人:Luiscri 提问时间:10/24/2022 最后编辑:Luiscri 更新时间:10/26/2022 访问量:2312
将环境变量传递到可重用的工作流,而无需使用 1 对 1 输入
Pass environment variables to reusable workflow without using 1 to 1 inputs
问:
现在,如果我想将环境变量传递给可重用的工作流,我必须执行如下操作:
name: Reusable workflow
on:
workflow_call:
inputs:
my_env_var:
required: false
type: string
env:
my_env_var: ${{ inputs.my_env_var }}
但是,为此,我首先需要将要传递的每个环境变量定义为输入。这是可行的,但必须对环境变量进行硬编码会使我的可重用工作流变得不那么通用。有没有办法传递环境而不必一一定义它们?我在想这样的事情:
name: Calling reusable workflow
on:
workflow_dispatch:
jobs:
push-image-dev:
uses: ./.github/workflows/my-reusable-workflow.yml
with:
input1: ...
input2: ...
env:
env1: ...
env2: ...
但是,我一直在阅读一些文档,我认为这不存在。有没有其他方法可以做到这一点,例如继承环境变量或创建单个输入,该输入是变量字典,稍后会解析并在可重用的工作流中设置所有环境变量?
答:
3赞
Luiscri
10/24/2022
#1
我创建了这个简单的逻辑,它允许我以 1:N 的关系传递我想要的所有环境变量,与输入有关。我创建了一个输入,该输入需要环境变量列表,格式为“env=value”,稍后在工作流中的一个步骤中将其转换为环境变量。
调用工作流:
name: Calling reusable workflow
on:
workflow_dispatch:
jobs:
my-job:
uses: ./.github/workflows/my-reusable-workflow.yml
with:
env_vars: |
env1=value1
env2=value2
env3=value3
工作流定义:
name: My reusable workflow
on:
workflow_call:
inputs:
env_vars:
description: List of environment variables to set up, given in env=value format.
required: false
type: string
jobs:
my-job:
runs-on: ubuntu-latest
steps:
- name: Set environment variables
if: ${{ inputs.env_vars }}
run: |
for i in "${{ inputs.env_vars }}"
do
printf "%s\n" $i >> $GITHUB_ENV
done
评论