R 运行git pull-in闪亮应用程序

R 运行git pull-in闪亮应用程序,r,git,shiny,bitbucket,R,Git,Shiny,Bitbucket,我在Ubuntu16.04EC2实例上有一个闪亮的应用程序,我希望在推送回购时能够通过webhook进行更新。所以我设置了另一个闪亮的应用程序来接收webook。我知道,通过一个闪亮的应用程序来实现这一点远不是最优的,但我只是想现在就开始做一些事情,然后我会稍后回来提供一个更好的解决方案 所以我将webhook设置为请求某个url,但目前这并不重要。我加载页面时遇到的问题是,应用程序无法通过system2运行git-pull(或system)。用户可以通过R解释器中的system2或system

我在Ubuntu16.04EC2实例上有一个闪亮的应用程序,我希望在推送回购时能够通过webhook进行更新。所以我设置了另一个闪亮的应用程序来接收webook。我知道,通过一个闪亮的应用程序来实现这一点远不是最优的,但我只是想现在就开始做一些事情,然后我会稍后回来提供一个更好的解决方案

所以我将webhook设置为请求某个url,但目前这并不重要。我加载页面时遇到的问题是,应用程序无法通过
system2
运行
git-pull
(或
system
)。用户可以通过R解释器中的
system2
system
命令成功运行
git pull

以下是该应用程序的外观:

library(shiny)

setwd("/home/shiny/myrepo")
result <- system2("git", "pull", stdout = TRUE, stderr = TRUE)

ui <- bootstrapPage(
        textOutput("result")
)


# Define the server code
server <- function(input, output) {
        output$result <- renderText(result)
}

# Return a Shiny app object
shinyApp(ui = ui, server = server)
是否有什么事情我没有考虑到闪亮服务器的运行方式?我的ssh密钥存储在带有
ssh代理的
keychain
中,所以这应该不是问题。我相信app.R文件和repo上的权限是正确的(shiny是这两个文件的所有者和组,并且可以从shell和R解释器对repo执行
git pull


我猜这与Shiny server及其访问/home/shinny/.ssh文件夹的能力有关。

您可以通过在窗口中打印信息来明确检查用户

如果您运行的是Shining Server,则您将提供目录
/srv/Shining Server
下的所有应用程序

尝试将其放入
/srv/shinny server/test repo pull/app.R
,然后从
:3838/test repo pull
访问:

library("shiny")

ui <- bootstrapPage(
  actionButton("pull", "Pull Master Branch"),
  verbatimTextOutput("result"),
  tableOutput("user")
)

server <- function(input, output) {

  result <- eventReactive(input$pull, {
    system2("git", "pull origin master", stdout = TRUE, stderr = TRUE)
  })

  output$user <- renderTable({
    info <- Sys.info()
    data.frame(variable = names(info), values = unname(info))
  })

  output$result <- renderPrint({
    result()
  })

}

shinyApp(ui, server)
库(“闪亮”)

ui首先,感谢您拿着领带给出详细的回复。我已验证用户是否有光泽。闪亮的用户在.ssh/文件夹中有密钥,这是正确的密钥,因为当我以该用户的身份登录服务器时,它能够推送。作为闪亮的用户,我甚至可以通过system2或git2r包运行R并从R推送。因此,当服务器运行时会发生一些变化。如果在应用程序运行的目录中执行
git init
,并设置
git remote add origin master
,而不是尝试使用
-C
标志运行,会发生什么?当你在这里的时候,你能用你的操作系统更新你的问题吗?例如:
>system2(“git”),“-C/home/shinny/myrepo-pull-origin-master”,stdout=T,stderr=T)[1]”来自bitbucket.org:me/myrepo“[2]”,*分支主控->取头“[3]”已经是最新的
但在服务器上运行基本相同的东西会给我:
[1]“权限被拒绝(公钥)。\r”[2]“致命:无法从远程存储库读取。”
有趣的是,
git-C/home/shinny/myrepo status
确实有效。(我已经设置了闪亮的服务器配置来指出这一点,很抱歉我之前没有澄清。)
library("shiny")

ui <- bootstrapPage(
  actionButton("pull", "Pull Master Branch"),
  verbatimTextOutput("result"),
  tableOutput("user")
)

server <- function(input, output) {

  result <- eventReactive(input$pull, {
    system2("git", "pull origin master", stdout = TRUE, stderr = TRUE)
  })

  output$user <- renderTable({
    info <- Sys.info()
    data.frame(variable = names(info), values = unname(info))
  })

  output$result <- renderPrint({
    result()
  })

}

shinyApp(ui, server)