新增功能
This commit is contained in:
parent
0e30fe4fa1
commit
df28bcc831
@ -5,6 +5,9 @@
|
||||
- 在仓库的webhook页面正确配置
|
||||
- 部署机器上项目文件夹名与Git项目名一致
|
||||
- 部署过程需要有相应权限(不可sudo)
|
||||
- 部署时,需要在commit message中包含`[DEPLOY]`字符标记(标记可以通过`-s`参数自定义)
|
||||
- 每个仓库需要先推送一次脚本后,下次才能部署
|
||||
- 需要手动切换到对应的git分支
|
||||
|
||||
## 运行
|
||||
```sh
|
||||
@ -17,4 +20,6 @@ Usage of gogs-webhook:
|
||||
Interpreter to use for deploy script (default "python3")
|
||||
-p string
|
||||
Path to projects (default "~/pro/")
|
||||
-s string
|
||||
Signal for deploy (default "[DEPLOY]")
|
||||
```
|
11
main.go
11
main.go
@ -20,12 +20,13 @@ func main() {
|
||||
addr := flag.String("a", ":3001", "Address to listen on")
|
||||
deployFileName := flag.String("d", "deploy.py", "Name of deploy script")
|
||||
deployInterpreter := flag.String("i", "python3", "Interpreter to use for deploy script")
|
||||
deploySignal := flag.String("s", "[DEPLOY]", "Signal for deploy")
|
||||
flag.Parse()
|
||||
|
||||
http.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
|
||||
reqBody, err := ioutil.ReadAll(r.Body)
|
||||
if err != nil {
|
||||
log.Fatalf("Error reading request body: %v\n", err)
|
||||
log.Printf("Error reading request body: %v\n", err)
|
||||
w.Write([]byte(fmt.Sprintf("Read body error: %s", err)))
|
||||
return
|
||||
}
|
||||
@ -33,7 +34,7 @@ func main() {
|
||||
var payload GogsPayload
|
||||
err = json.Unmarshal(reqBody, &payload)
|
||||
if err != nil {
|
||||
log.Fatalf("Error unmarshalling request body: %v\n", err)
|
||||
log.Printf("Error unmarshalling request body: %v\n", err)
|
||||
w.Write([]byte(fmt.Sprintf("Unmarshal body error: %s", err)))
|
||||
return
|
||||
}
|
||||
@ -41,14 +42,14 @@ func main() {
|
||||
log.Printf("Received: [Name] %s [Sender] %s", payload.Repository.FullName, payload.Sender.FullName)
|
||||
|
||||
for _, commit := range payload.Commits {
|
||||
if strings.Contains(commit.Message, "[DEPLOY]") {
|
||||
if strings.Contains(commit.Message, *deploySignal) {
|
||||
log.Printf("Commit: [SHA] %s [Message] %s\n", commit.ID, commit.Message)
|
||||
log.Println("Ready to deploy")
|
||||
|
||||
cmd := exec.Command(*deployInterpreter, fmt.Sprintf(*projectsPath + "%s/" + *deployFileName, payload.Repository.Name))
|
||||
err = cmd.Run()
|
||||
if err != nil {
|
||||
log.Fatalf("Error running deploy script: %v\n", err)
|
||||
log.Printf("Error running deploy script: %v\n", err)
|
||||
w.Write([]byte(fmt.Sprintf("Deploy script error: %s", err)))
|
||||
}
|
||||
|
||||
@ -60,7 +61,7 @@ func main() {
|
||||
w.Write([]byte("No deploy commit found. Skip."))
|
||||
})
|
||||
|
||||
log.Println("Webhook service started.")
|
||||
log.Println("Webhook service started at " + *addr)
|
||||
|
||||
http.ListenAndServe(*addr, nil)
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user