我有一个简单的工作流程:
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
没有结果。我做错了什么?
答案 0 :(得分:0)
有一个 Naming conventions for environment variables 解释:
<块引用>您设置的指向文件系统上某个位置的任何新环境变量都应具有 _PATH
后缀。 HOME
和 GITHUB_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"
关于您希望在工作流中实现的行为的可能性,您不能在工作流中设置变量并将它们用作同一级别的路径,因为:
<块引用>变量在运行后在运行器操作系统中被替换 发送给跑步者。
一种解决方法可能是每次在 push
事件上触发工作流,使用带有 if 条件的 paths-filter action 以在匹配您的路径时执行特定步骤。
这不是优化的最佳解决方案,但它会起作用。