GitHub Actions工作流中能否定义跨多个job生效的全局环境变量?
问题解答
你所描述的全局环境变量定义方式完全符合GitHub Actions的语法规范,是可行的。
在工作流顶层(和on、jobs字段平级)定义的env字段下的所有环境变量,会默认对当前工作流内所有job、job下的所有步骤生效,无需在每个job里重复声明。如果有单个job/步骤需要覆盖全局变量,才需要单独在对应层级再定义同名变量,优先级为「步骤级env > job级env > 全局env」。
- 额外注意:你当前配置中artifact名称的拼接写法有误,GitHub Actions的表达式语法不需要用
+做字符串拼接,直接拼接内容即可,两种正确写法可选:- 直接拼接:
name: ${{ env.GAME }}-data - 用format函数拼接:
name: ${{ format('{0}-data', env.GAME) }}
- 直接拼接:
完整可运行的配置示例
on: [push] # 全局环境变量,所有job都可直接调用 env: GAME: "FunGame" jobs: ssql: runs-on: ubuntu-latest ### bunch of steps in between ### steps: - name: Upload data as artifact uses: actions/upload-artifact@v2 with: name: ${{ env.GAME }}-data path: output_data/training-data.csv Rtrain: runs-on: ubuntu-latest name: Train model needs: ssql steps: - name: checkout current repo uses: actions/checkout@v2 - name: Retreive data from ssql job uses: actions/download-artifact@v2 with: name: ${{ env.GAME }}-data
内容的提问来源于stack exchange,提问作者Doug Fir
相关产品推荐
相关产品推荐

