【问题标题】:How to use env variable on workflow level github-actions如何在工作流级别 github-actions 上使用 env 变量
【发布时间】:2021-07-12 23:09:20
【问题描述】:

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

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 没有结果。我做错了什么?

【问题讨论】:

    标签: github-actions


    【解决方案1】:

    有一个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"
    

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

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

    Reference

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

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

    【讨论】:

    • 我想在 on -> push -> 路径中使用变量。有可能吗?
    • 对于我在文档和社区中查找的内容,它不起作用(因为 在将作业发送给运行器后,运行器操作系统中的变量被替换 .ref)。一种解决方法可能是每次推送时触发工作流,使用带有 if 条件的 paths-filter action 如果它与您的路径匹配则执行特定步骤。这不是关于优化的最佳解决方案,但它会起作用。我在上面编辑过
    猜你喜欢
    • 2022-11-11
    • 2021-10-30
    • 2021-05-20
    • 2021-05-21
    • 2020-05-27
    • 2022-08-13
    • 2022-01-10
    • 2022-11-02
    • 2020-04-02
    相关资源
    最近更新 更多