[英]Passing vars using reusable workflow with no success
我們嘗試使用變通方法將一些 env 變量傳遞給可重用工作流,如下所示,但沒有傳遞任何變量。
工作流程 YAML 是:
name: "call my_reusable_workflow"
on:
workflow_dispatch:
env:
env_branch: ${{ github.head_ref }}
env_workspace: ${{ github.workspace }}
jobs:
call_reusable_workflow_job:
uses: my_github/my-reusable-workflow-repo/.github/workflows/used_wf_test.yml@master
with:
env_vars: |
hello-to=Meir
branch_name=${{ env.env_branch }}
secrets:
my_token: ${{secrets.ENVPAT}}
可重復使用的工作流程 YAML 是:
name: my_reusable_workflow
on:
workflow_call:
inputs:
env_vars:
required: true
type: string
description: list of vars and values
secrets:
giraffe_token:
required: true
jobs:
reusable_workflow_job:
runs-on: ubuntu-latest
steps:
- name: set environment variables
if: ${{ inputs.env_vars }}
run: |
for env in "${{ inputs.env_vars }}"
do
printf "%s\n" $env >> $GITHUB_ENV
done
當操作運行時,它會獲取hello-to=Meir
的值,但不會獲取branch_name=${{ env.env_branch }}
的值。
我也嘗試將值傳遞為branch_name=${{ github.head_ref }}
但沒有成功。
在調用方工作流的工作流級別定義的
env
上下文中設置的任何環境變量都不會傳播到被調用的工作流。 有關詳細信息,請參閱“ 變量”和“ 上下文”。
因此,目前可重用工作流調用者不支持env
上下文。
但是,您可以將默認環境變量傳遞給可重用的工作流調用者。
例如,在您的特定場景中,您想要使用這些上下文:
github.head_ref
github.workspace
等效的默認環境變量是:
GITHUB_HEAD_REF
GITHUB_WORKSPACE
並且,您的可重用工作流程(例如reusable_workflow_set_env_vars.yml
)將由其調用者(例如reusable_workflow_set_env_vars_caller.yml
)調用,如下所示:
name: reusable_workflow_set_env_vars_caller
on:
workflow_dispatch:
jobs:
set-env-vars:
uses: ./.github/workflows/reusable_workflow_set_env_vars.yml
with:
env_vars: |
TEST_VAR='test var'
GITHUB_HEAD_REF=$GITHUB_HEAD_REF
GITHUB_WORKSPACE=$GITHUB_WORKSPACE
GITHUB_REF=$GITHUB_REF
除此之外,關於可重用工作流的實現(例如reusable_workflow_set_env_vars.yml
):
env_vars
是string
類型,您需要以某種方式將其針對 YAML 多行空白變體進行鞏固,例如>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.