macos ${{ env.TMPDIR }} 在 github 操作中不起作用

标签 macos github-actions

我有一个 github 操作尝试使用 ${{ env.TMPDIR }} 并且它似乎没有扩展到 TMPDIR 环境变量。

 - name: DEBUG Workaround GitHub-Actions-MacOS Issue with env.TMPDIR
    run: |
      echo "TMPDIR=$TMPDIR"
      echo "TMPDIR using ENV.TMPDIR=${{ env.TMPDIR }}"

这会产生:

TMPDIR=/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/
TMPDIR using ENV.TMPDIR=

例子: DEBUG Workaround GitHub-Actions-MacOS Issue with env.TMPDIR

最佳答案

TMPDIR 是 bash 提供的 shell 环境变量。您使用 $TMPDIR 正确引用它,这就是您在 bash 中引用环境变量的方式。它可能会解析为类似 /tmp 的内容。

但是,您不能在 GitHub Actions 工作流程的一个步骤中设置 shell 环境变量,然后在另一个步骤中使用它。那是因为您将获得一个新的 shell 实例,并且它将拥有一个新的环境。这是行不通的:

- run: FOO="hello"
- run: echo $FOO

但是,您可以使用 GitHub Actions environment variable将信息保存在 GitHub Actions 环境中,而不是在 shell 环境中。这是两个不同的东西,没有隐含的混合。也就是说 $TMPDIR 不是 ${{env.TMPDIR}}。这是两种不同的环境。

如果你想在步骤之间保留一个环境变量,你需要显式地设置它,然后你才能使用它。 (您的工作流程未在任何地方设置 TMPDIR。)

(我还鼓励您使用不同的名称,以避免与您的 shell 设置的 TMPDIR 环境变量混淆。)

您可以 set a GitHub Actions environment variable通过 echoname=value 对在 shell 环境变量中提供给您的特定文件。

换句话说:

- run: echo "FOO=hello" >> $GITHUB_ENV
- run: echo ${{ env.FOO }}

将使用值 hello 保留 GitHub Actions 环境变量 FOO。第二个运行步骤将打印它。

如果您想创建、保留和使用临时目录,您应该使用mktemp 命令。例如,一步创建临时目录并将其路径设置为TEMP_DIR环境变量,下一步将文件写入临时目录,第三步打印临时目录名称,并在最后一步显示内容:

- run: echo "TEMP_DIR=$(mktemp -d)" >> $GITHUB_ENV
- run: echo "hi" >> ${{ env.TEMP_DIR}}/temp_file
- run: echo ${{env.TEMP_DIR}}
- run: ls -Flas ${{ env.TEMP_DIR }}

如果您真的想使用 TMPDIR(再说一次,我认为您不应该这样做),那么您需要将设置为 GitHub Actions 环境变量。

- run: echo $TMPDIR # works
- run: echo ${{ env.TMPDIR }} # does not work
- run: echo "TMPDIR=${TMPDIR}" >> $GITHUB_ENV # sets it into the GitHub Actions environment
- run: echo ${{ env.TMPDIR }} # works

关于macos ${{ env.TMPDIR }} 在 github 操作中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65289690/

相关文章:

ubuntu - 在 GitHub Actions Ubuntu runners 上安装 libzmq3-dev 时遇到问题

github-pages - 使用 github actions 和 github-pages-deploy-action 时,github 页面出现问题?

github - 错误: unable to prepare context: path "" not found while building and tagging docker image

continuous-integration - Github 操作 CI : making PyCall aware of Julia ENV variables

c# - 每次在我的 Windows PC 上关闭 Visual Studio 时,有没有办法阻止 Docker 删除容器?

macos - 如何将 Brew 添加到路径、Ventura 上的 Fish

java - 增加 R 中的 Java 堆大小没有效果

java - 如何强制 Java 应用程序登录网络代理?

java(1150,0x10df2d000) malloc : *** error for object 0x10df9b020: pointer being freed was not allocated

continuous-integration - 如何在 Github Actions 上使用 Yarn 3.5 版? ("Error: cannot find module .../yarn-3.5.0.cjs")