将 renv 用于私有 GitLab 包

Pet*_*900 4 r devtools gitlab install.packages renv

我有一个本地 GitLab 帐户,其中包含一个 R 包,可以通过以下方式安装:

devtools::install_git( 
  url = "http://my-gitlab/my-projects/package",
  credentials = git2r::cred_user_pass("user", "pass")
)
Run Code Online (Sandbox Code Playgroud)

当我运行renv::init()包源时未知。入门文章确实详细介绍了如何设置函数来处理私有存储库,但在使用devtools和时我无法弄清楚 GitLab 的情况git2r::cred_user_pass。我可以将GIT_USER和存储GIT_PASSWORD.Renviron文件中,但我不确定如何强制init使用这些凭据的用户devtools::install_git使用该功能。我确实尝试过,但后来出现错误:

fatal: could not read Username for 'http://my-gitlab': No such device or address
Run Code Online (Sandbox Code Playgroud)

他们提供的所有示例选项都使用 GitLab 令牌进行身份验证:

# use a named list directly
options(renv.auth = list(
  MyPackage = list(GITHUB_PAT = "<pat>")
))
Run Code Online (Sandbox Code Playgroud)

也许有更好的方法从本地 GitLab 存储库安装,可以更好地配合使用renv

Pet*_*900 7

对于遇到同样问题的其他人来说,这对我有用(请参阅此处):

  • 在 GITLAB 中创建 PAT,确保将 SCOPE 设置为api. 注意:我不确定这是否必须是“api”,我没有检查所有选项,但它对我有用
  • 使用以下命令将 PAT 设置为环境变量Sys.setenv(GITLAB_PAT = <...>)
  • 使用 来将 gitlab 主机服务器设置为一个选项options(renv.config.gitlab.host = "http://my-gitlab-server")。注意:我必须包含“http://”才能使其正常工作。
  • 跑步renv::install("gitlab::project/package")
  • 这对我不起作用:renv::install("gitlab@my-gitlab-server::project/package")