如何在Composite GitHub Action中添加二进制文件至系统路径?
解决方案
要让后续工作流步骤能直接调用下载的get-version二进制文件,你有两种可靠的方式,无需依赖第三方Action:
方法1:将二进制移动到已在PATH中的目录
GitHub Runner默认把$HOME/.local/bin包含在系统PATH里,你可以把下载的二进制移到这个目录:
修改你的Composite Action代码:
name: get-version description: Get version from Cargo.toml runs: using: composite steps: - shell: bash run: | curl -SLO https://github.com/o0th/get-version/releases/download/0.2.0/get-version chmod +x get-version # 创建目录(如果不存在)并移动二进制 mkdir -p "$HOME/.local/bin" mv get-version "$HOME/.local/bin/"
方法2:将二进制所在目录添加到GITHUB_PATH(推荐)
GitHub Actions提供了GITHUB_PATH环境变量,向这个文件写入路径后,后续所有步骤的系统PATH都会自动包含该路径。这种方式更干净,适合存放临时工具:
修改你的Composite Action代码:
name: get-version description: Get version from Cargo.toml runs: using: composite steps: - shell: bash run: | curl -SLO https://github.com/o0th/get-version/releases/download/0.2.0/get-version chmod +x get-version # 创建临时目录存放二进制 mkdir -p "$RUNNER_TEMP/get-version-bin" mv get-version "$RUNNER_TEMP/get-version-bin/" # 将临时目录路径添加到GITHUB_PATH echo "$RUNNER_TEMP/get-version-bin" >> "$GITHUB_PATH"
为什么这样可行?
- 方法1利用了Runner默认配置的PATH目录,移动后二进制会被系统自动识别;
- 方法2通过官方提供的
GITHUB_PATH机制,确保后续步骤的环境能找到工具,且临时目录会在工作流结束后自动清理,不会留下冗余文件。
你的测试工作流无需修改,两种方法都能让get-version命令在后续步骤中直接执行。
内容的提问来源于stack exchange,提问作者o0th
相关产品推荐
相关产品推荐

