我有一个简单的工作流程:
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,但没有结果。我做错了什么?
发布于 2021-07-11 22:56:19
有一个Naming conventions for environment variables解释了这一点:
您设置的任何指向文件系统上某个位置的新环境变量都应该有一个
_PATH后缀。HOME和GITHUB_WORKSPACE默认变量是这个约定的例外,因为单词"home“和"workspace”已经暗示了一个位置。
关于在工作流中的不同级别使用环境变量,下面是一个包含工作流、作业和步骤变量的示例:
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"考虑到您希望在工作流中实现的行为的可能性,您不能在工作流中设置变量并将其用作同一级别上的路径,因为:
在将作业发送到runner之后,将在runner操作系统中替换
变量。
一种解决方法是在每次发生push事件时触发工作流,使用带有if条件的paths-filter action执行特定步骤(如果它与您的路径匹配)。
关于优化,这不是最好的解决方案,但它会起作用的。
https://stackoverflow.com/questions/68336078
复制相似问题