我有一个 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通过 echo
name=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/