自己的產出自己負責!每次交付專案之前我都會想到這句話, 是不是該再檢查一下
程式碼已經成功的build完之後, 為了確保程式碼有經過基本的檢查, 可以導入golangci-lint
, 它會針對程式碼做基本的品質把關, 像是參數沒有接、function或參數未被使用...等都可以幫忙檢查出來!詳細檢查項目可以參考golangci-lint
我們團隊有自建的drone可以使用, 每次commit都會透過drone自動跑golangci-lint, 本機要跑的話只要在專案底下執行指令就可以透過docker run image 檢查:
docker run --rm -v $(pwd):/app -w /app golangci/golangci-lint:v1.30.0-alpine \
sh -c "golangci-lint run" -v
-> % docker run --rm -v $(pwd):/app -w /app golangci/golangci-lint:v1.30.0-alpine \
sh -c "golangci-lint run" -v
helper.go:33:6: `HandlerPanicRecover` is unused (deadcode)
func HandlerPanicRecover(err *error) {
^
model/limit.go:11:32: S1019: should use make(map[string]int) instead (gosimple)
result = make(map[string]int, 0)
^
不過我沒有自己架設過drone, 就來練習一下架設drone的過程吧
要使用到的工具有github帳號
, ngrok
, drone
install ngrok
-> % brew install ngrok
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> New Formulae
(... 省略)
######################################################################## 100.0%
Warning: No checksum defined for cask 'ngrok', skipping verification.
==> Installing Cask ngrok
==> Linking Binary 'ngrok' to '/usr/local/bin/ngrok'
? ngrok was successfully installed!
使用 ngrok 啟動一個外部可以使用的網址
ngrok http 80
啟動後的Forwarding就是之後設定的drone網址
可以直接執行 pull image
docker pull drone/drone:2
github 到 Developer Settings
綁定Oauth App
(使用ngrok產生的網址)
透過 docker-compose 啟動 drone server, 參數要帶入對應的github資料
version: '2'
services:
drone:
image: drone/drone:2
container_name: drone
ports:
- 80:80
volumes:
- /var/lib/drone:/var/lib/drone/
restart: always
environment:
- DRONE_SERVER_HOST={{DRONE_SERVER_HOST}}
- DRONE_SERVER_PROTO=http
- DRONE_RPC_SECRET={{DRONE_RPC_SECRET}}
- DRONE_GITHUB_CLIENT_ID={{DRONE_GITHUB_CLIENT_ID}}
- DRONE_GITHUB_CLIENT_SECRET={{DRONE_GITHUB_CLIENT_SECRET}}
drone-runner:
image: drone/drone-runner-docker:1
container_name: drone-runner
restart: always
depends_on:
- drone
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_RPC_HOST=drone
- DRONE_RPC_PROTO=http
- DRONE_RPC_SECRET={{DRONE_RPC_SECRET}}
- DRONE_RUNNER_CAPACITY=2
連到ngrok網址, 確認綁定狀況:
github repo 綁定 Webhooks(使用ngrok產生的網址)
都設定好之後, 推一個commit上去測試drone build
drone上面會顯示執行結果
lint 也會提示要調整的部分
綁定在drone上面做檢查可以確保每個commit都有經過基本的品質驗證,
很方便又能避免忘記跑golangci-lint~
參考資料