76
Bo-Yi Wu 2017.04.27

用 Go 語言打造 DevOps Bot

Embed Size (px)

Citation preview

Bo-Yi Wu

2017.04.27

聯發科技後端工程師 DevOps Golang, PHP, Node.js ..

維護數個 Go開源專案 Gitea Gin Drone Plugin

appleboy @GitHub appleboy @twitter appleboy @slideshare appleboy46 @facebook

5

Develop

Git Push

Git Tag

Develop

Git Push

Git Tag

Testing

Deploy

Deploy

Deploy

Production

Staging

Production

Testing

DeployStaging

Jenkins Drone Gitlab CI

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

支援自動更新 https憑證功能 (Let’s Encrypt)

支援監控WebHook服務功能

支援多種訊息格式 (圖片,影片,表情符號 …等)

支援跨平台編譯執行檔

支援透過 Docker發送訊息

支援高並發 (處理大量發送訊息)

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

支援自動更新 https憑證功能 (Let’s Encrypt)

支援監控WebHook服務功能

支援多種訊息格式 (圖片,影片,表情符號 …等)

支援跨平台編譯執行檔

支援透過 Docker發送訊息

支援高並發 (處理大量發送訊息)

import “flag”

https://golang.org/pkg/flag/

不支援系統環境變數

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

支援自動更新 https憑證功能 (Let’s Encrypt)

支援監控WebHook服務功能

支援多種訊息格式 (圖片,影片,表情符號 …等)

支援跨平台編譯執行檔

支援透過 Docker發送訊息

支援高並發 (處理大量發送訊息)

http.NewServeMux()

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

支援自動更新 https憑證功能 (Let’s Encrypt)

支援監控WebHook服務功能

支援多種訊息格式 (圖片,影片,表情符號 …等)

支援跨平台編譯執行檔

支援透過 Docker發送訊息

支援高並發 (處理大量發送訊息)

firewall

https://ngrok.com/

drone-line –s secret –t token ––tunnel –port 2002 webhook

https://localtunnel.github.io/www/

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

支援自動更新 https憑證功能 (Let’s Encrypt)

支援監控WebHook服務功能

支援多種訊息格式 (圖片,影片,表情符號 …等)

支援跨平台編譯執行檔

支援透過 Docker發送訊息

支援高並發 (處理大量發送訊息)

不用擔心憑證過期

http.Serve(autocert.NewListener("example.com"), handler)

http://bit.ly/one-line-autotls

drone-line –s secret –t token ––autotls –host foo.bar webhook

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

支援自動更新 https憑證功能 (Let’s Encrypt)

支援監控WebHook服務功能

支援多種訊息格式 (圖片,影片,表情符號 …等)

支援跨平台編譯執行檔

支援透過 Docker發送訊息

支援高並發 (處理大量發送訊息)

Memory 使用量 …

自訂監控數據, 分析使用者訊息

https://prometheus.io/

https://grafana.com/

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

支援自動更新 https憑證功能 (Let’s Encrypt)

支援監控WebHook服務功能

支援多種訊息格式 (圖片,影片,表情符號 …等)

支援跨平台編譯執行檔

支援透過 Docker發送訊息

支援高並發 (處理大量發送訊息)

drone-line –s secret –t token –to xxxx –message “Hi”

drone-line –s secret –t token –to xxxx –image “xxxxx”

drone-line –s secret –t token –to xxxx –video “xxxxx”

drone-line –s secret –t token –to xxxx –audio “xxxxx”

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

支援自動更新 https憑證功能 (Let’s Encrypt)

支援監控WebHook服務功能

支援多種訊息格式 (圖片,影片,表情符號 …等)

支援跨平台編譯執行檔

支援透過 Docker發送訊息

支援高並發 (處理大量發送訊息)

write once run anywhere

https://github.com/mitchellh/gox

真心不騙

http://www.banana-pi.org/m64.html

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

支援自動更新 https憑證功能 (Let’s Encrypt)

支援監控WebHook服務功能

支援多種訊息格式 (圖片,影片,表情符號 …等)

支援跨平台編譯執行檔

支援透過 Docker發送訊息

支援高並發 (處理大量發送訊息)

Jenkins Drone Gitlab CI

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build

https://github.com/urfave/cli

Drone

發送給原 commit 作者

避免團隊成員收到太多無意義訊息

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

支援自動更新 https憑證功能 (Let’s Encrypt)

支援監控WebHook服務功能

支援多種訊息格式 (圖片,影片,表情符號 …等)

支援跨平台編譯執行檔

支援透過 Docker發送訊息

支援高並發 (處理大量發送訊息)

go f(“goroutine”)

專案: https://github.com/appleboy/drone-line

下載: https://github.com/appleboy/drone-line/releases

Docker: https://hub.docker.com/r/appleboy/drone-line

專案: https://github.com/appleboy/drone-facebook

下載: https://github.com/appleboy/drone-facebook/releases

Docker: https://hub.docker.com/r/appleboy/drone-facebook

結合手機 App 服務

Gorush Server

A push notification server written in Go

https://github.com/appleboy/gorush

(drone-line or drone-facebook) + Gorush

Why not Node.js, Python, PHP?

類似 C 語法

http://bit.ly/oneday-golang

http://bit.ly/oneday-devops

謝謝大家參與