【问题标题】:Github Actions path does not updateGithub Actions 路径未更新
【发布时间】:2021-04-04 20:00:01
【问题描述】:

现在,我正在尝试从源代码构建一个工具并使用它来构建一个 C++ 项目。我能够提取 tar 文件 (gcc-arm-none-eabi)。但是,当我尝试将其添加到路径(使用$GITHUB_PATH,而不是add-path)时,该路径不适用于我的下一个操作,并且我无法构建文件。该错误表明它找不到 gcc-arm-none-eabi 工具集,这意味着它没有进入路径。

这是第一个函数的入口点的脚本(在下一个操作中运行 make 以允许应用路径)

echo "Downloading ARM Toolchain"
# The one from apt isn't updated so I have to build from source
curl -L https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 -o gcc-arm-none-eabi.tar.bz2
tar -xjf gcc-arm-none-eabi.tar.bz2

echo "/github/workspace/gcc-arm-none-eabi-10-2020-q4-major/bin" >> $GITHUB_PATH

我什至无法通过查看路径中的内容进行调试,因为运行 echo $(PATH) 只是说找不到 PATH。我该怎么办?

【问题讨论】:

  • echo $(PATH) -> echo "$PATH"。没有命令PATH,有变量PATH
  • 很可能cat $GITHUB_PATH看到当前路径。
  • @BenjaminW。我试过这样做,但它只打印/github/file_commands/add_path_8085e9a6-120d-46e6-ba89-aeaa06ec4f1a。我也尝试使用ls,但它也会打印/github/file_commands/add_path_8085e9a6-120d-46e6-ba89-aeaa06ec4f1a

标签: c++ gcc dockerfile github-actions


【解决方案1】:

我什至无法通过查看路径中的内容进行调试,因为运行 echo $(PATH) 只是说找不到 PATH。我该怎么办?

首先,PATH 不是命令,所以如果你想打印它的值,它会像 echo "${PATH}"echo "$PATH" 之类的东西

那么,如果你想给一个已经存在的环境变量添加一个值,那就是

export PATH="${PATH}:/github/workspace/gcc-arm-none-eabi-10-2020-q4-major/bin"

编辑:似乎不是使用 Github Actions 向路径添加内容的有效方法,同时在问题中似乎是正确的。欲了解更多详情:https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#adding-a-system-path。感谢 Benjamin W. 在 cmets 中指出这一点。

最后,我认为如果您使用已经包含此类依赖项的 docker 映像会更合适(如果此映像不存在,您可以轻松编写自己的 Dockerfile)。 Github 操作旨在使用包含执行构建操作所需的依赖项的 docker(或 OCI 容器)映像。你应该看看这里:https://docs.github.com/en/free-pro-team@latest/actions/creating-actions/dockerfile-support-for-github-actions

【讨论】:

  • 我尝试了echo "$PATH" 并且能够看到路径变量,谢谢!我尝试了export 行,但遗憾的是它仍然没有更新路径。下一个动作中的路径返回:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • 我认为 GITHUB_PATH 实际上是可执行文件的路径,因为运行 echo $GITHUB_PATH 会返回:/github/file_commands/add_path_4d4c37d6-5051-40a5-9f91-34dba3008918。它也可能是一个我应该检查的目录。
  • export 不是您在 GitHub 操作中向PATH 添加内容的方式;见Adding a system path。题中显示的方式是正确的。
  • @Benjamin W. 感谢您指出这一点。我已经编辑了我的答案
  • 谢谢,这最终成功了!我在实际构建周期方面面临更多问题,但是将命令添加到我的入口点文件确实会将其添加到路径
猜你喜欢
  • 2021-02-22
  • 2021-06-19
  • 2022-01-02
  • 2020-08-21
  • 2020-11-18
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
  • 2015-08-24
相关资源
最近更新 更多