如何在工作流级别使用 env 变量 github-actions

时间:2021-07-11 12:08:42

标签: github-actions

我有一个简单的工作流程:

name: Test CI

env:
  path_to_watch_for_commits: 'testdir/testfile'

on:
  push:
    branches:
      - master
    paths:
      - ${{ env.path_to_watch_for_commits }}

  workflow_dispatch:

jobs:
  build:
    runs-on:  ubuntu

    steps:
      - uses: actions/checkout@v2

我想在路径中使用变量 path_to_watch_for_commits。但是这种语法是错误的。我也尝试 ${{ path_to_watch_for_commits }}$path_to_watch_for_commits 没有结果。我做错了什么?

1 个答案:

答案 0 :(得分:0)

有一个 Naming conventions for environment variables 解释:

<块引用>

您设置的指向文件系统上某个位置的任何新环境变量都应具有 _PATH 后缀。 HOMEGITHUB_WORKSPACE 默认变量是这个约定的例外,因为“家”和“工作区”这两个词已经暗示了一个位置。

关于在工作流内部不同级别的环境变量的使用,这里是一个带有WORKFLOW、JOB和STEP变量的例子:

name: Example

on: [push, workflow_dispatch]

env:
  WORKFLOW_VARIABLE: WORKFLOW

jobs:
  test:
    runs-on: ubuntu-latest
    env:
      JOB_VARIABLE: JOB
    steps:
      - name: Run Commands with various variables
        if: ${{ env.WORKFLOW_VARIABLE == 'WORKFLOW' }}
        env:
          STEP_VARIABLE: STEP
        run: |
          echo "Hello World"
          echo "This is the $WORKFLOW_VARIABLE environment variable"
          echo "This is the $JOB_VARIABLE environment variable"
          echo "This is the $STEP_VARIABLE environment variable"

关于您希望在工作流中实现的行为的可能性,您不能在工作流中设置变量并将它们用作同一级别的路径,因为:

<块引用>

变量在运行后在运行器操作系统中被替换 发送给跑步者。

Reference

一种解决方法可能是每次在 push 事件上触发工作流,使用带有 if 条件的 paths-filter action 以在匹配您的路径时执行特定步骤。

这不是优化的最佳解决方案,但它会起作用。

相关问题