Github操作:为使用PowerShell构建Windows设置环境变量

qv7cva1a  于 2022-12-13  发布在  Shell
关注(0)|答案(2)|浏览(161)

我将GENERATOR_PLATFORM定义为一个空的环境变量,然后我想将其设置为适合我的Windows版本的值。但是,该变量从未被设置:

env:
  GENERATOR_PLATFORM:

 steps:
    - name: windows-dependencies
      if: startsWith(matrix.os, 'windows')
      run: |
         $generator= "-DCMAKE_GENERATOR_PLATFORM=x64"
        echo "Generator: ${generator}"
        echo "GENERATOR_PLATFORM=$generator" >> $GITHUB_ENV

   - name: Configure CMake
      shell: bash
      working-directory: ${{github.workspace}}/build
      run: cmake $GITHUB_WORKSPACE $GENERATOR_PLATFORM
nle07wnf

nle07wnf1#

如果您使用的是Windows/PowerShell环境,则必须使用$env:GITHUB_ENV而不是$GITHUB_ENV

echo "GENERATOR_PLATFORM=$generator" >> $env:GITHUB_ENV

这样,您就可以通过$env:GENERATOR_PLATFORM访问您的env var,例如:

run: echo $env:GENERATOR_PLATFORM
oxiaedzo

oxiaedzo2#

跟进@soltex回答:建议的解决方案仅在编码设置为utf-8时有效。如果您的运行程序使用的是Windows PowerShell(即,不是PowerShell v7+,默认情况下使用utf-8),utf 16-le将写入环境文件,这将导致不设置变量。
正确的解决方案是:

echo "GENERATOR_PLATFORM=$generator" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append

来自:https://github.com/actions/runner-images/issues/5251#issuecomment-1071030822
进一步阅读:Changing PowerShell's default output encoding to UTF-8

相关问题