用go設計開發一個自己的輕量級登入庫/框架吧(專案維護篇)
本篇將開始講講開發庫/框架的最開始階段,也就是搭建一個專案
原始碼:weloe/token-go: a light login library (github.com)
專案結構
專案結構,不是上一篇所說的程式碼架構,而是分包,明確的分包更有助於我們的開發。本框架分包如下
├─.github
│ └─workflows GitHub工作流
├─auth 許可權管理
├─config 配置
├─constant 常量
├─ctx web上下文
│ └─go-http-context
├─error
├─examples 使用示例
├─log 日誌
├─model 模型
├─persist 持久層
└─util 工具包
程式碼託管以及自動化測試
我們選擇使用GitHub進行程式碼託管,同時也使用GitHub Actions進行程式碼自動化測試。執行測試程式碼以及使用lint檢查程式碼規範。
token-go/go.yml at master · weloe/token-go · GitHub
name: Go-Build-Test
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
go: [ '1.18', '1.19', '1.20' ]
steps:
- uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.go }}
- name: Run go test
run: go test -v ./...
benchmark:
runs-on: ubuntu-latest
strategy:
matrix:
go: [ '1.18' ]
steps:
- uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.go }}
- name: Run go test bench
run: go test -bench=.
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: '1.20'
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: v1.51
測試
在進行程式碼開發的同時,我們也應該進行程式碼測試用例的編寫,提高程式碼測試覆蓋率,確保我們的程式碼的健壯性。
文件
文件可以說是一個開源庫/框架必不可少的東西,我們開始學習一個開源庫/框架也往往是從文件開始。我們可以使用Docsify,Vuepress等來快速搭建一個文件網站。關於如何搭建文件可以看看這篇隨筆