继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

GitHub Actions工作目录详解

慕码人8056858
关注TA
已关注
手记 1282
粉丝 350
获赞 1323

理解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 表格格式。

最佳做法
  1. 使用working-directory选项: 明确设置working-directory以适应自定义工作流程。
  2. 避免硬编码路径: 使用环境变量如GITHUB_WORKSPACERUNNER_TEMP以确保兼容性。
  3. 动态提取标签: 使用GITHUB_REF来动态提取标签并构建路径。
  4. 为自托管运行器清理: 实施清理脚本来有效管理存储空间。

了解 GitHub Actions 运行器的目录结构后,你可以设计更高效、更灵活、更易调试的工作流程。自动化愉快!

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP