Top Banner
Bo-Yi Wu 2017.04.27
76

用 Go 語言打造 DevOps Bot

Jan 22, 2018

Download

Software

Bo-Yi Wu
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 用 Go 語言打造 DevOps Bot

Bo-Yi Wu

2017.04.27

Page 2: 用 Go 語言打造 DevOps Bot

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

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

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

Page 3: 用 Go 語言打造 DevOps Bot
Page 4: 用 Go 語言打造 DevOps Bot
Page 5: 用 Go 語言打造 DevOps Bot

5

Develop

Git Push

Git Tag

Develop

Git Push

Git Tag

Testing

Deploy

Deploy

Deploy

Production

Staging

Production

Testing

DeployStaging

Page 6: 用 Go 語言打造 DevOps Bot
Page 7: 用 Go 語言打造 DevOps Bot
Page 8: 用 Go 語言打造 DevOps Bot
Page 9: 用 Go 語言打造 DevOps Bot
Page 10: 用 Go 語言打造 DevOps Bot
Page 11: 用 Go 語言打造 DevOps Bot
Page 12: 用 Go 語言打造 DevOps Bot
Page 13: 用 Go 語言打造 DevOps Bot

Jenkins Drone Gitlab CI

Page 14: 用 Go 語言打造 DevOps Bot
Page 15: 用 Go 語言打造 DevOps Bot
Page 16: 用 Go 語言打造 DevOps Bot
Page 17: 用 Go 語言打造 DevOps Bot

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

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

支援監控WebHook服務功能

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

支援跨平台編譯執行檔

支援透過 Docker發送訊息

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

Page 18: 用 Go 語言打造 DevOps Bot

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

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

支援監控WebHook服務功能

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

支援跨平台編譯執行檔

支援透過 Docker發送訊息

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

Page 19: 用 Go 語言打造 DevOps Bot

import “flag”

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

Page 20: 用 Go 語言打造 DevOps Bot

不支援系統環境變數

Page 21: 用 Go 語言打造 DevOps Bot

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

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

支援監控WebHook服務功能

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

支援跨平台編譯執行檔

支援透過 Docker發送訊息

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

Page 22: 用 Go 語言打造 DevOps Bot

http.NewServeMux()

Page 23: 用 Go 語言打造 DevOps Bot

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

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

支援監控WebHook服務功能

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

支援跨平台編譯執行檔

支援透過 Docker發送訊息

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

Page 24: 用 Go 語言打造 DevOps Bot

firewall

Page 25: 用 Go 語言打造 DevOps Bot

https://ngrok.com/

Page 26: 用 Go 語言打造 DevOps Bot

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

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

Page 27: 用 Go 語言打造 DevOps Bot

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

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

支援監控WebHook服務功能

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

支援跨平台編譯執行檔

支援透過 Docker發送訊息

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

Page 28: 用 Go 語言打造 DevOps Bot

不用擔心憑證過期

Page 29: 用 Go 語言打造 DevOps Bot
Page 30: 用 Go 語言打造 DevOps Bot

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

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

Page 31: 用 Go 語言打造 DevOps Bot

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

Page 32: 用 Go 語言打造 DevOps Bot

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

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

支援監控WebHook服務功能

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

支援跨平台編譯執行檔

支援透過 Docker發送訊息

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

Page 33: 用 Go 語言打造 DevOps Bot

Memory 使用量 …

Page 34: 用 Go 語言打造 DevOps Bot

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

Page 35: 用 Go 語言打造 DevOps Bot

https://prometheus.io/

Page 36: 用 Go 語言打造 DevOps Bot

https://grafana.com/

Page 37: 用 Go 語言打造 DevOps Bot
Page 38: 用 Go 語言打造 DevOps Bot
Page 39: 用 Go 語言打造 DevOps Bot
Page 40: 用 Go 語言打造 DevOps Bot

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

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

支援監控WebHook服務功能

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

支援跨平台編譯執行檔

支援透過 Docker發送訊息

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

Page 41: 用 Go 語言打造 DevOps Bot

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

Page 42: 用 Go 語言打造 DevOps Bot

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”

Page 43: 用 Go 語言打造 DevOps Bot

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

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

支援監控WebHook服務功能

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

支援跨平台編譯執行檔

支援透過 Docker發送訊息

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

Page 44: 用 Go 語言打造 DevOps Bot

write once run anywhere

Page 45: 用 Go 語言打造 DevOps Bot

https://github.com/mitchellh/gox

Page 46: 用 Go 語言打造 DevOps Bot
Page 47: 用 Go 語言打造 DevOps Bot

真心不騙

Page 48: 用 Go 語言打造 DevOps Bot
Page 49: 用 Go 語言打造 DevOps Bot

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

Page 50: 用 Go 語言打造 DevOps Bot

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

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

支援監控WebHook服務功能

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

支援跨平台編譯執行檔

支援透過 Docker發送訊息

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

Page 51: 用 Go 語言打造 DevOps Bot

Jenkins Drone Gitlab CI

Page 52: 用 Go 語言打造 DevOps Bot

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build

Page 53: 用 Go 語言打造 DevOps Bot
Page 54: 用 Go 語言打造 DevOps Bot

https://github.com/urfave/cli

Page 56: 用 Go 語言打造 DevOps Bot

Drone

Page 57: 用 Go 語言打造 DevOps Bot
Page 58: 用 Go 語言打造 DevOps Bot

發送給原 commit 作者

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

Page 59: 用 Go 語言打造 DevOps Bot
Page 60: 用 Go 語言打造 DevOps Bot

支援 Command Line Flag參數功能

支援 Bot API WebHook功能

支援 Https for WebHook Tunnel

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

支援監控WebHook服務功能

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

支援跨平台編譯執行檔

支援透過 Docker發送訊息

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

Page 61: 用 Go 語言打造 DevOps Bot

go f(“goroutine”)

Page 62: 用 Go 語言打造 DevOps Bot

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

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

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

Page 63: 用 Go 語言打造 DevOps Bot

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

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

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

Page 64: 用 Go 語言打造 DevOps Bot

結合手機 App 服務

Page 65: 用 Go 語言打造 DevOps Bot
Page 66: 用 Go 語言打造 DevOps Bot
Page 67: 用 Go 語言打造 DevOps Bot

Gorush Server

Page 68: 用 Go 語言打造 DevOps Bot

A push notification server written in Go

https://github.com/appleboy/gorush

Page 69: 用 Go 語言打造 DevOps Bot

(drone-line or drone-facebook) + Gorush

Page 70: 用 Go 語言打造 DevOps Bot

Why not Node.js, Python, PHP?

Page 71: 用 Go 語言打造 DevOps Bot
Page 72: 用 Go 語言打造 DevOps Bot
Page 73: 用 Go 語言打造 DevOps Bot

類似 C 語法

Page 74: 用 Go 語言打造 DevOps Bot

http://bit.ly/oneday-golang

Page 75: 用 Go 語言打造 DevOps Bot

http://bit.ly/oneday-devops

Page 76: 用 Go 語言打造 DevOps Bot

謝謝大家參與