如何在GitHub Action工作流的`with`块中使用环境变量?
GitHub Action复用工作流中共享变量的解决方案
错误原因
当使用uses调用复用工作流时,with参数的表达式上下文无法直接访问工作流级别的env变量,这是GitHub Actions的上下文规则限制:复用工作流的with参数仅支持访问vars、secrets、github等特定上下文,全局env不在这个范围内,因此直接引用会触发"Unrecognized named-value"错误。
解决方案
方案一:使用工作流级vars(推荐,需GitHub Actions 3.0+)
vars是GitHub Actions专门用于定义工作流级共享静态变量的特性,完全支持在复用工作流的with参数中引用:
name: Main on: push: branches: - main - fix-main-deployment-workflow-post-database_version # 用vars替代全局env定义共享变量 vars: database_version: 3.1.0-git-c919c26 jobs: <job_name>: name: Deploy to <some zone> needs: - helm - docker uses: <another yaml> with: database_version: ${{ vars.database_version }}
方案二:降级兼容(适用于不支持vars的旧版本)
将全局env变量注入到调用job的本地env中,再通过job.env上下文引用:
name: Main on: push: branches: - main - fix-main-deployment-workflow-post-database_version env: database_version: 3.1.0-git-c919c26 jobs: <job_name>: name: Deploy to <some zone> needs: - helm - docker # 将全局env注入当前job的本地env env: database_version: ${{ env.database_version }} uses: <another yaml> with: database_version: ${{ job.env.database_version }}
内容的提问来源于stack exchange,提问作者Aviral Srivastava
相关产品推荐
相关产品推荐

