首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在工作流级github-actions上使用环境变量

如何在工作流级github-actions上使用环境变量
EN

Stack Overflow用户
提问于 2021-07-11 20:08:43
回答 1查看 46关注 0票数 0

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

代码语言:javascript
复制
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,但没有结果。我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2021-07-11 22:56:19

有一个Naming conventions for environment variables解释了这一点:

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

关于在工作流中的不同级别使用环境变量,下面是一个包含工作流、作业和步骤变量的示例:

代码语言:javascript
复制
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操作系统中替换

变量。

Reference

一种解决方法是在每次发生push事件时触发工作流,使用带有if条件的paths-filter action执行特定步骤(如果它与您的路径匹配)。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68336078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档