webhook 용 코드를 작성하려고합니다. 설치를 요청합니다. 난 데 문제는 내가 어떤 exec.Commandgolang으로 go 실행 exec.Command
은 webhook 엔드 포인트가 명중func exec_cmd(w http.ResponseWriter, cmd string, args ...string) {
command := exec.Command(cmd, args...)
var out bytes.Buffer
var stderr bytes.Buffer
command.Stdout = &out
command.Stderr = &stderr
err := command.Run()
if err != nil {
errstring := fmt.Sprintf(fmt.Sprint(err) + ": " + stderr.String())
io.WriteString(w, errstring)
}
io.WriteString(w, out.String())
fmt.Println(out.String())
}
func webhook(w http.ResponseWriter, r *http.Request) {
exec_cmd(w, "go", "install", "github.com/me/myrepo/mything")
}
func test(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "test")
}
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/webhook", webhook)
mux.HandleFunc("/", test)
http.ListenAndServe(":8000", mux)
}
와 명령을 갈 호출 할 때 GOPATH이 설정되어 있지 않은지, 그것은 제공 :
exit status 1: can't load package: package github.com/me/myrepo/mything: cannot find package "github.com/me/myrepo/mything" in any of:
/usr/lib/go-1.6/src/github.com/me/myrepo/mything (from $GOROOT)
($GOPATH not set)
어떻게 것 이 상황에서 GOPATH가 설정되었는지 확인하겠습니다.
"go install github.com/me/myrepo/mything"명령 줄에서 실행하면 정상적으로 작동합니다.
https://golang.org/pkg/os/exec/#Cmd에서'Env '를 채 웁니다. – Volker
go1.8이 기본 GOPATH를 도입했기 때문에 Go 버전도 업데이트해야합니다. – JimB