使用API密钥程序化配置账号后rsconnect无法发布至服务器
问题:使用rsconnect的connectApiUser连接后deployApp报404错误
我搭建了RStudio Workbench与Connect服务器环境,希望自动将内容发布至Connect。手动连接服务器(点击蓝色分享按钮、完成认证并发布内容)后,可通过以下代码程序化重新发布/更新应用:
deployApp( appDir = app_dir, # app/ appName = app_name, # test-app appId = app_id, # 123 手动发布时记录的ID,应用已存在 account = RSCONNECT_USER, # myuser launch.browser = FALSE, forceUpdate = TRUE, server = RSCONNECT_SERVER # Connect服务器地址 ) #> Preparing to deploy application...DONE #> Uploading bundle for application: 123...DONE #> Deploying bundle: xyz for application: 123 ... #> ... #> Application successfully deployed to https://myconnect-server.com/content/...
但最终需要在CI/CD任务中运行该流程,无法手动创建账号/连接服务器,因此尝试使用connectApiUser函数通过API密钥进行连接。然而执行以下代码时,deployApp调用出现错误:
# 非真实信息 RSCONNECT_USER <- "myuser" RSCONNECT_SERVER <- "myconnect-server.com" APIKEY <- "mysecret (可用的) API密钥" app_id <- "123" app_name <- "test-app" app_folder <- "app" library(rsconnect) packageVersion("rsconnect") # 2023-06-28最新版本 #> [1] ‘0.8.29’ ## 1 连接服务器并添加用户 ==== removeServer(RSCONNECT_SERVER) #> Warning... The server 'myconnect-server.com' is not currently registered addServer(paste0("https://", RSCONNECT_SERVER), RSCONNECT_SERVER) #> Server 'myconnect-server.com' added successfully: https://myconnect-server.com # 预期会报错,因为用户尚未注册 removeAccount(RSCONNECT_USER) #> Error... account named 'myuser' does not exist connectApiUser( account = RSCONNECT_USER, server = RSCONNECT_SERVER, apiKey = APIKEY ) #> Account registered successfully: myuser ## 2 检查连接 ==== servers()[, c("name", "url")] #> name url #> 1 myconnect-server.com https://myconnect-server.com #> 2 shinyapps.io https://api.shinyapps.io/v1 #> 3 posit.cloud https://api.shinyapps.io/v1 accounts() #> name server #> 1 myuser myconnect-server.com ## 3 发布到服务器 ==== deployApp( appDir = app_folder, appName = app_name, appId = app_id, account = RSCONNECT_USER, launch.browser = FALSE, forceUpdate = TRUE, server = RSCONNECT_SERVER ) #> Preparing to deploy application...Error: HTTP 404 #> GET https://myconnect-server.com/applications/123 #> 404 page not found
我是否错误理解了rsconnect中connectApiUser的使用方式?为何此方法无法生效?
注:官方bash脚本无法满足灵活性需求,因此希望按上述方式使用rsconnect包。
更新:我已在rsconnect的GitHub仓库提交了Issue。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

