新增功能

This commit is contained in:
LollipopKit 2022-06-01 17:00:27 +08:00
parent 0e30fe4fa1
commit df28bcc831
2 changed files with 11 additions and 5 deletions

View File

@ -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
View File

@ -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)
}