【问题标题】:Need to convert back slashes to forward slashes in github action work flow需要在 github 动作工作流程中将反斜杠转换为正斜杠
【发布时间】:2021-06-01 15:26:23
【问题描述】:

在我的操作 yml 文件中,我为我的 ctest 输入图像文件设置了一个指向根目录的环境变量(我运行 ctest 来测试图像编解码器解压缩器,这些是输入图像)。

env:
  DATA_ROOT: ${{github.workspace}}/data

在 Windows 上,这给了我类似 c:\Foo\Bar/data 的信息,我想将其转换为 c:/Foo/Bar/data

我可以在 PowerShell 中进行转换:

$temp = ${DATA_ROOT}
$pattern = '[\\]'
$temp = $temp -replace $pattern, '/'

但是我如何将${DATA_ROOT} 重置为等于$temp

我希望后续步骤使用新的 ${DATA_ROOT} 。

【问题讨论】:

    标签: windows powershell cmake path github-actions


    【解决方案1】:

    我不确定为什么将其标记为 CMake,但您可以在 GitHub Actions 中通过将包含 NAME=VALUE 的行写入 $GITHUB_ENV 来设置环境变量。

    来自 GitHub Actions documentation

    echo "{name}={value}" >> $GITHUB_ENV
    

    为作业中接下来运行的任何操作创建或更新环境变量。创建或更新环境变量的操作无权访问新值,但作业中的所有后续操作都可以访问。环境变量区分大小写,您可以包含标点符号。

    示例

    steps:
      - name: Set the value
        id: step_one
        run: |
            echo "action_state=yellow" >> $GITHUB_ENV
      - name: Use the value
        id: step_two
        run: |
            echo "${{ env.action_state }}" # This will output 'yellow'
    

    多行字符串

    对于多行字符串,您可以使用具有以下语法的分隔符。

    {name}<<{delimiter}
    {value}
    {delimiter}
    

    对于 CMake 解决方案,如果您的路径可能包含混合斜线,您可以使用 file(TO_CMAKE_PATH)

    file(TO_CMAKE_PATH "c:\\Foo\\Bar/data" path)
    message(STATUS "path = ${path}")  # prints: path = c:/Foo/Bar/data
    

    请注意,此函数假定传入路径是运行 CMake 的平台的 本机 路径。因此在 Linux 上,带有驱动器号的输入将是无效的(: 将被解释为 PATH 分隔符并转换为 ;

    【讨论】:

      【解决方案2】:

      请注意,${{github.workspace}} 在 Windows 上使用 \ 路径分隔符现在伤害了我,使用 bash shell 破坏了任何“运行”操作。所以这是行不通的;

      defaults:
        run:
          shell: bash
      
      jobs:
        build:
          steps:
          - name: Configure CMake
            run: cmake -B ${{github.workspace}}/build 
      

      一种解决方法是在 '${{github.workspace}}' 周围加上单引号,以防止 bash 将 \ 路径分隔符视为转义。

      【讨论】:

        猜你喜欢
        • 2014-09-28
        • 2011-05-16
        • 2011-09-19
        • 2019-11-19
        • 2020-11-10
        • 2016-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多