无法使用 Devops Pipeline 将 Rscripts 的输出保存到系统目录中

问题描述 投票:0回答:1

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

云代理:D:/文件夹

源代码:D:/文件夹/项目

数据_转储:D:/文件夹/转储/

输出:D:/文件夹/项目/output_data/

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

问题陈述:我无法将 Rscript 的输出保存到 Output Loca. 目录中。它通过指向该目录给出错误作为可能的原因:权限被拒绝错误

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

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

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

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

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

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

cmd environment-variables azure-pipelines rscript azure-devops-self-hosted-agent
1个回答
0
投票

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

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

我能够通过关注this帖子来实现这一目标。

© www.soinside.com 2019 - 2024. All rights reserved.