无法使用 Devops 管道将 Rscripts 的输出保存在系统目录中

Unable to save output from Rscripts in system directory using Devops Pipeline

我在自托管 Devops 代理上 运行ning Rscripts。我的 Windows 代理能够访问其托管的系统目录。下面是我的代码的目录结构

代理位置。 :F:/代理

源代码:F:/agent/deployment/projects/project1/sourcecode

DWH _dump : F:/agent/deployment/DWH_dump/2021/

输出位置。 : F:/agent/deployment/projects/project1/output_data/2021

代理正在 devops 管道中使用 CMD 从系统触发 R 并使用系统目录中的库。

问题陈述: 我无法将 Rscript 的输出保存到 Output Loca. 目录中。它给出一个错误作为可能的原因:permission denied error 通过指向该目录。

输出文件格式: file_name.rds 但即使是 csv 文件也会出现同样的问题。

导致失败的命令: saverds(paste0(Output loca.,"/",file_name.rds))

解决方法: 但是我找到了解决方法,尝试将脚本保存在 Source Code 目录中,然后将相同的文件保存在Output Loca. 目录。这工作得很好,但花费了我 2 小时的额外 运行 时间,因为我必须保存所有中间文件并在最后删除它们。将中间文件保存在内存中会占用我的 RAM。

我没有在机器的任何地方打开那个目录。我的资源管理器中唯一打开的应用程序是我的浏览器,其中管道是 运行ning。我花了几个小时找出原因但没有成功。我什至检查了系统路径,看看我是否提到了那个目录,但它不存在。

当我在使用 Rstudio 的机器上直接 运行 相同的脚本时,将文件保存在任何目录都没有任何问题。

已经度过了整整 2 天。任何找出根本原因的指示都可以为我节省几个小时的 运行 时间。

解决方案 是使用管理员凭据将 Windows 中的 Azure Pipeline 代理服务设置为 运行。该代理在创建期间未配置为管理员,因此在使用我在 VM 上具有管理员访问权限的用户 ID 启用它后,管道能够毫无问题地保存文件。

感觉很棒,节省了几个小时的 运行 时间!

我通过关注 this post.

实现了这一目标