Ich habe eine glänzende App auf einem Ubuntu 16.04 EC2-Instanz und ich möchte in der Lage sein, es über einen Webhook zu aktualisieren, wenn es ein Push zum Repo ist. Also habe ich eine weitere glänzende App eingerichtet, um das Webook zu erhalten. Ich weiß, dass dies durch eine glänzende App zu tun ist sehr viel weniger als optimal, aber ich möchte nur etwas in Gang bringen, und dann komme ich später mit einer besseren Lösung zurück.Running Git ziehen in Shiny App
Also habe ich den Webhook gesetzt, um eine bestimmte URL anzufordern, aber momentan ist das egal. Das Problem, das ich beim Laden der Seite habe, ist, dass die App git pull
über system2
(oder system
für diese Angelegenheit) nicht ausführen kann. Der Benutzer glänzend kann git pull
erfolgreich ausführen, und es kann auch git pull
über einen system2
oder system
Befehl im R-Interpreter erfolgreich ausgeführt werden.
Hier ist, was die App wie folgt aussieht:
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)
Wenn ich die Seite laden
Permission denied (publickey).
fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
Gibt es etwas, das ich nicht für Buchhaltung mit, wie Shiny-Server läuft? Mein SSH-Schlüssel ist in keychain
mit einem ssh-agent
gespeichert, so dass kein Problem sein sollte. Die Berechtigungen sind korrekt, glaube ich, in der App.R-Datei und dem Repo (glänzend ist der Besitzer und die Gruppe auf beiden, und wiederum kann die git pull
auf dem Repo von der Shell und vom R-Interpreter durchführen).
Ich vermute, es ist etwas mit Shiny Server und seine Fähigkeit, den /home/shiny/.ssh Ordner zugreifen zu tun?
Zunächst einmal, danke für Ihre Krawatte für eine detaillierte Antwort. Ich habe überprüft, dass der Benutzer glänzend ist. Der glänzende Benutzer hat den Schlüssel im Ordner .ssh/und er ist der richtige Schlüssel, da er in der Lage ist, zu drücken, wenn ich als dieser Benutzer auf dem Server angemeldet bin. Ich kann sogar R ausführen und von R entweder über system2 oder das git2r-Paket als ** shiny ** -Benutzer pushen. Es ändert sich also etwas, sobald der Server glänzend ausgeführt wird. – hendiatris
Was passiert, wenn Sie ein 'git init' im Verzeichnis ausführen, in dem die App läuft, und' git remote den Ursprungs-Master 'anstelle des Befehls' -C' setzen? Wenn Sie gerade dabei sind, können Sie Ihre Frage mit Ihrem Betriebssystem aktualisieren? – mlegge
Zum Beispiel: '> system2 (" git "," -C/home/glänzend/myrepo pull Ursprung Master ", stdout = T, stderr = T) [1]" Von bitbucket.org: me/myrepo " [2]" * Zweig-Master -> FETCH_HEAD " [3]" Bereits aktuell. "' Aber läuft im Wesentlichen die gleiche Sache auf dem Server gibt mir: '[1 ] "Berechtigung verweigert (publickey). \ R" [2] "fatal: Konnte nicht aus dem Remote-Repository lesen." ' – hendiatris