理解GitHub Actions的工作目录
GitHub Actions 提供了一个强大的平台,可以直接在您的 GitHub 仓库内自动化工作流程。了解文件存储的位置有助于理解工作流程的运行。在这篇文章中,我们将探讨默认工作目录、流程文件下载位置以及如何有效管理路径。
……
(注:此处的“……”表示原文中的停顿或省略。)
默认工作文件夹路
运行文件的路径: /home/runner/work/<repository-name>/<repository-name>
全屏模式 退出全屏
例子结构
/home/runner/work/
├── my-project
│ └── 此文件夹存放项目文件
切换到全屏模式。点击退出全屏模式。
……
设置工作目录(Working Directory)您可以在工作流文件的不同层级设置 working-directory
。这里是如何操作:
工作流程级别
在defaults
部分中定义整个工作流程的default-working-directory
。
默认设置:
执行:
工作目录: ./global-scripts
全屏 退出全屏
效果: 除非另有设定,工作流中所有的run
命令都将从./global-scripts
目录执行命令。
岗位级别
为特定任务中的所有步骤设置“工作目录”:
jobs:
example-job:
runs-on: 运行于 ubuntu-latest
defaults:
run:
working-directory: 工作目录 ./job-scripts
steps:
- name: 运行作业脚本
run: ./script.sh
点击进入全屏模式 点击退出全屏模式
效果: 在 example-job
中所有 run
命令都将会从 ./job-scripts
脚本目录执行。
步骤
为某个单独步骤的 working-directory
指定:
步骤一:
- 名字: 运行名为步骤级脚本
运行: ./script.sh
工作目录: ./step-scripts
全屏切换。
效果: 只有这一步骤会从 ./step-scripts
目录执行。
此处省略内容
与路径有关的环境变量GitHub Actions 运行器提供了一些环境变量,您可以在工作流中使用这些变量来动态引用路径,例如:
变量 | 描述 |
---|---|
GITHUB_WORKSPACE |
仓库的默认工作区目录。相当于 /home/runner/work/<repo>/<repo> 。 |
RUNNER_TEMP |
临时文件的存储目录。相当于 /home/runner/work/_temp 。 |
RUNNER_TOOL_CACHE |
存储缓存工具和依赖项的目录。相当于 /opt/hostedtoolcache 。 |
GITHUB_ACTION_PATH |
使用自定义或第三方操作时的文件路径。 |
GITHUB_ENV |
用于后续步骤的环境变量文件路径。 |
GITHUB_PATH |
追加到系统 PATH 的文件路径。 |
GITHUB_REF |
触发工作流的完整引用(如分支或标签)。 |
示例用法
动态访问标签内容
如果您的工作流由标签触发,您可以从 GITHUB_REF
中提取标签名:
步骤:
- 步骤名称: 提取标签
执行: echo "标签: ${GITHUB_REF#refs/tags/}"
全屏,退出全屏
你可以使用这个可变值来创建路径,例如。
步骤:
- 步骤名称: 动态路径运行
执行: echo "使用路径 /home/runner/work/_actions/my-actions/my-actions/v1/"
全屏模式。退出全屏。
引用仓库工作区的内容
步骤:
- 名字: 使用工作区
- 执行命令: ls $GITHUB_WORKSPACE
全屏 退出
暂存临时文件
步骤:
- 名称: 创建一个临时文件,
run: echo "Temporary data" > $RUNNER_TEMP/temp.txt
全屏 退出全屏
使用缓存中的工具
步骤:
- 步骤名称: 检查工具缓存
执行: ls $RUNNER_TOOL_CACHE
进入全屏 退出全屏
行动文件最后会去哪里?
路
/home/runner/work/_actions
切换到全屏 退出全屏
例子的结构
对于 actions/checkout@v4,
这个操作:
/home/runner/work/_actions/
├── actions
│ └── checkout
│ └── v4 (文件)
注:v4
代表版本 4。
点击全屏 点击退出全屏
自定义文件访问
如果你有一个自定义文件 hello-world.py
,并且它存在于自定义操作 my-actions/my-actions@v1
:
/home/runner/work/_actions/
├── my-actions
│ └── my-actions
│ └── v1
│ └── hello-world.py
# 文件路径示例:这是我的一个简单的Python脚本文件路径示例。
进入全屏,退出全屏
示例工作步骤:
步骤:
- 步骤名称: 运行自定义 Python 脚本
执行: python /home/runner/work/_actions/my-actions/my-actions/v1/hello-world.py
进入全屏模式,退出全屏模式
临时和缓存文件夹
临时文件夹
/home/runner/work/_temp
全屏 退出全屏
示例 1 结构示例
/home/runner/work/
├── _temp
└── `(一些临时文件)`
进入全屏 退出全屏
工具缓存文件夹
该目录位于 /opt/hostedtoolcache/
。
进入全屏 退出全屏
示例 2 的结构
/opt/hostedtoolcache/
├──缓存的工具和依赖项.
点击全屏进入,点击再次退出
整理目录文件夹
所有在工作流运行过程中创建的文件和目录都是临时的,并且在 GitHub 主机上运行的运行器上会自动清除。对于在本地服务器上运行的运行器,可能需要自己手动清理,以免存储空间不足。
关键路径总结
路径 | 目的 |
---|---|
/home/runner/work/<repo>/<repo> |
工作流任务的默认工作目录。 |
/home/runner/work/_actions |
下载的动作文件目录。 |
/home/runner/work/_temp |
工作流任务的临时文件存储。 |
/opt/hostedtoolcache |
可重用依赖项的工具缓存目录。 |
仅供参考,保留了原始 Markdown 表格格式。
最佳做法- 使用
working-directory
选项: 明确设置working-directory
以适应自定义工作流程。 - 避免硬编码路径: 使用环境变量如
GITHUB_WORKSPACE
和RUNNER_TEMP
以确保兼容性。 - 动态提取标签: 使用
GITHUB_REF
来动态提取标签并构建路径。 - 为自托管运行器清理: 实施清理脚本来有效管理存储空间。
了解 GitHub Actions 运行器的目录结构后,你可以设计更高效、更灵活、更易调试的工作流程。自动化愉快!
共同学习,写下你的评论
评论加载中...
作者其他优质文章