gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 02:03:21 28 4
gpt4 key购买 nike

我有一个 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com