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