Más contenido relacionado
La actualidad más candente (20)
Similar a 用 Go 語言打造 DevOps Bot (20)
用 Go 語言打造 DevOps Bot
- 2. 聯發科技後端工程師
DevOps
Golang, PHP, Node.js ..
維護數個 Go 開源專案
Gitea
Gin
Drone Plugin
appleboy @GitHub
appleboy @twitter
appleboy @slideshare
appleboy46 @facebook
- 17. 支援 Command Line Flag 參數功能
支援 Bot API WebHook 功能
支援 Https for WebHook Tunnel
支援自動更新 https 憑證功能 (Let’s Encrypt)
支援監控 WebHook 服務功能
支援多種訊息格式 (圖片, 影片, 表情符號 … 等)
支援跨平台編譯執行檔
支援透過 Docker 發送訊息
支援高並發 (處理大量發送訊息)
- 18. 支援 Command Line Flag 參數功能
支援 Bot API WebHook 功能
支援 Https for WebHook Tunnel
支援自動更新 https 憑證功能 (Let’s Encrypt)
支援監控 WebHook 服務功能
支援多種訊息格式 (圖片, 影片, 表情符號 … 等)
支援跨平台編譯執行檔
支援透過 Docker 發送訊息
支援高並發 (處理大量發送訊息)
- 21. 支援 Command Line Flag 參數功能
支援 Bot API WebHook 功能
支援 Https for WebHook Tunnel
支援自動更新 https 憑證功能 (Let’s Encrypt)
支援監控 WebHook 服務功能
支援多種訊息格式 (圖片, 影片, 表情符號 … 等)
支援跨平台編譯執行檔
支援透過 Docker 發送訊息
支援高並發 (處理大量發送訊息)
- 23. 支援 Command Line Flag 參數功能
支援 Bot API WebHook 功能
支援 Https for WebHook Tunnel
支援自動更新 https 憑證功能 (Let’s Encrypt)
支援監控 WebHook 服務功能
支援多種訊息格式 (圖片, 影片, 表情符號 … 等)
支援跨平台編譯執行檔
支援透過 Docker 發送訊息
支援高並發 (處理大量發送訊息)
- 27. 支援 Command Line Flag 參數功能
支援 Bot API WebHook 功能
支援 Https for WebHook Tunnel
支援自動更新 https 憑證功能 (Let’s Encrypt)
支援監控 WebHook 服務功能
支援多種訊息格式 (圖片, 影片, 表情符號 … 等)
支援跨平台編譯執行檔
支援透過 Docker 發送訊息
支援高並發 (處理大量發送訊息)
- 32. 支援 Command Line Flag 參數功能
支援 Bot API WebHook 功能
支援 Https for WebHook Tunnel
支援自動更新 https 憑證功能 (Let’s Encrypt)
支援監控 WebHook 服務功能
支援多種訊息格式 (圖片, 影片, 表情符號 … 等)
支援跨平台編譯執行檔
支援透過 Docker 發送訊息
支援高並發 (處理大量發送訊息)
- 40. 支援 Command Line Flag 參數功能
支援 Bot API WebHook 功能
支援 Https for WebHook Tunnel
支援自動更新 https 憑證功能 (Let’s Encrypt)
支援監控 WebHook 服務功能
支援多種訊息格式 (圖片, 影片, 表情符號 … 等)
支援跨平台編譯執行檔
支援透過 Docker 發送訊息
支援高並發 (處理大量發送訊息)
- 42. 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”
- 43. 支援 Command Line Flag 參數功能
支援 Bot API WebHook 功能
支援 Https for WebHook Tunnel
支援自動更新 https 憑證功能 (Let’s Encrypt)
支援監控 WebHook 服務功能
支援多種訊息格式 (圖片, 影片, 表情符號 … 等)
支援跨平台編譯執行檔
支援透過 Docker 發送訊息
支援高並發 (處理大量發送訊息)
- 50. 支援 Command Line Flag 參數功能
支援 Bot API WebHook 功能
支援 Https for WebHook Tunnel
支援自動更新 https 憑證功能 (Let’s Encrypt)
支援監控 WebHook 服務功能
支援多種訊息格式 (圖片, 影片, 表情符號 … 等)
支援跨平台編譯執行檔
支援透過 Docker 發送訊息
支援高並發 (處理大量發送訊息)
- 60. 支援 Command Line Flag 參數功能
支援 Bot API WebHook 功能
支援 Https for WebHook Tunnel
支援自動更新 https 憑證功能 (Let’s Encrypt)
支援監控 WebHook 服務功能
支援多種訊息格式 (圖片, 影片, 表情符號 … 等)
支援跨平台編譯執行檔
支援透過 Docker 發送訊息
支援高並發 (處理大量發送訊息)
Notas del editor
- 什麼時候該發通知訊息? 傳統都是透過 slack 或 email 發送訊息通知
- 每天收到幾百封 build success 或 fail 的 email 都懶得看了
- 每天收到幾百封 devops build success 或 fail 的 email 都懶得看了
大家應該都有經驗 被放到 maill loop 內 如果不甘自己的事情 根本就不會想花任何時間去看
何況是這種 CI/CD devops 的通知信
- 圖片來源: https://getez.info/hold/1162
當大家都不注重 deploy 成功或失敗的訊息時,devops 工程師就會很不高興
- 好險去年 fb 或 line 相繼公佈 API
- 大家不會裝 slack 也不會裝 email app 但是 fb 或 line 總會裝吧?
- 當消息丟來時,同事或主管會以為是朋友或家人丟過來,當然也可以 off 掉 notification
所以這也不是最終解,後面會講到該如何正確發送通知訊息給相關人員
PM
Sales
RD
主管
- 可以透過 jenkins 執行 command line
透過 Drone 執行 Docker image
簡單介紹 Drone 的由來
- 所以 chatbot 必須支援 docker 及 command line.
給不同單位需求使用
這也是目前開源專案的 best practice.
- 公司有 95% 是使用 Windows 電腦 + Linux 環境
5% 使用 Mac 環境上班
所以希望開發一次 各平台都可以支援使用
各部門也可以透過這軟體 在各 OS 中使用及開發
- 今天要教大家如何用 Go 語言打造 Bot,
如果不會寫程式 也想要主動丟訊息給其他人 也可以直接用 Go 的好處 包成 binary 的方式 測試及實驗
- https://commons.wikimedia.org/wiki/File:Emoji_u1f62d.svg
- 在 Go 裡面不需要任何 Framework
內建的 http library 就已經很夠用了
市面上 go framework 只幫忙處理了 routing 及 request 重寫
- 支援本地端開發
- 付費軟體,免費只能有一個 free host
- Ngrok 跟 localtunnel 是用來開發用的
- Nginx
Caddy
traefik
- Memory gc cpu 使用量等等 …
- 分析使用者訊息來分類 …. 今天發布多少 bug fix 上了多少次版本 失敗多少次 等
- 用 prometheus 做到上述功能 但是 prometheus 的報表顯示 不是很好看
- 前面會有多台 fb 或 line chat bot service 同接一台 grafana 監控系統 只要一有變化 就會通知
- 任何語言都可以執行此指令
- 圖片 影片 表情符號
- 要服務各式各樣的作業系統 所以選一種語言 寫一次 可以執行在任何地方。
- 除了 jenkins 之外 drone 或 gitlab ci 都可以透過 docker 來進行部署測試
- https://docs.docker.com/engine/userguide/eng-image/baseimages/
Creating a simple base image using scratch
- 為了避免不相關成員收到無意義的 notification
測試人員會收到 staging 上版通知
上面主管會收到 production 上版通知
開發者會收到自己測試失敗的通知
所有開發者會收到上版失敗通知
- 公司 90% 寫
- 公司 90% 寫 C 要轉來寫 go 輕而易舉
Go 效能 及 deploy 都大於其他語言
Php livereload node.js livereload 都吃不少開發機記憶體