首页 > 解决方案 > 如何在具有文件系统权限的 travis 上运行 golang 测试(如果可能,在 sudo 旁边?)

问题描述

我正在尝试使用 TravisCI 构建我的 golang cli 项目。发现的问题之一是在运行创建文件的测试时,出现权限错误。

在此处输入图像描述

但是当尝试使用 sudo 运行测试时,它变为sudo: go: command not found

这是来自 travis 的错误片段:

在此处输入图像描述

任何人都可以提供解决方案吗?

笔记:

  1. 我不想更改我的测试以在代码中使用 sudo,因为以后使用它时,用户应自行决定是否使用 sudo

标签: permissionstravis-cisudo

解决方案


回答我自己的问题

从评论中编译,我尝试了2个选项

第一个是更新当前的工作目录权限,使用chmod 777 .(是的,我设置了所有,不想真正打扰 travis 特定的行为),但事实证明它不起作用。这次不知道是什么原因,可能动态生成的二进制文件也有权限问题

对我有用的解决方案是读取go二进制路径,然后以 sudo 重新运行它,如下所示

script: 
  - GO_EXECUTABLE_PATH=$(which go)
  - echo $GO_EXECUTABLE_PATH
  - sudo $GO_EXECUTABLE_PATH test ./...

推荐阅读