很高興看到 Gitea 正式支援 OAuth Provider 了,此功能經歷了四個月終於正式合併進 master 分支,預計會在 1.8 版本釋出,由於此功能已經進 master,這樣我們就可以把原本 Drone 透過帳號密碼登入,改成使用 OAtuh 方式了,增加安全性。但是在使用之前,Drone 需要合併 drone/go-login@3 及 drone/drone@2622。如果您會使用 Go 語言,不妨現在就可以來試試看了,透過 go build 來編譯原始碼。
影片教學
有興趣可以參考線上教學
- Go 語言實戰課程: http://bit.ly/golang-2019
- Drone CI/CD 自動化課程: http://bit.ly/drone-2019
安裝 Gitea
由於 Gitea 還沒轉到 Go module (已經有另外一個 PR 再處理 Vendor),所以請 clone 專案原始碼到 GOPATH
底下
$ git clone https://github.com/go-gitea/gitea.git \
/go/src/code.gitea.io/gitea
接著切換到專案目錄,編譯出 SQLite 的 Binary
$ TAGS="sqlite sqlite_unlock_notify" make
編譯完成後,直接執行
$ ./gitea web
2019/03/09 12:26:03 [T] AppPath: /Users/appleboy/git/go/src/code.gitea.io/gitea/gitea
2019/03/09 12:26:03 [T] AppWorkPath: /Users/appleboy/git/go/src/code.gitea.io/gitea
2019/03/09 12:26:03 [T] Custom path: /Users/appleboy/git/go/src/code.gitea.io/gitea/custom
2019/03/09 12:26:03 [T] Log path: /Users/appleboy/git/go/src/code.gitea.io/gitea/log
2019/03/09 12:26:03 Serving [::]:3000 with pid 18284
打開瀏覽器登入後,進入右上角使用者設定,就可以建立新的 Application。
其中 Redirect URL
請填上 drone 的 URL http://localhost:8080/login
安裝 Drone
在上面有提到需要合併兩個 PR (drone@go-login#3 及 drone@drone#2622) 才能使用此功能,等不及的朋友們就自己先 Fork 來使用吧。先假設已經合併完成。
$ cd $GOPAHT/drone
$ go build ./cmd/drone-server
然後建立 server.sh
將環境變數寫入
#!/bin/sh
export DRONE_GITEA_SERVER=http://localhost:3000
export DRONE_GITEA_CLIENT_ID=49de7c23-3bed-45a1-a78e-89c8ba4db07b
export DRONE_GITEA_CLIENT_SECRET=8GhG9XvPJEpaOroVocmJPAQArO5Zz7KMLQ5df0eG91c=
./drone-server
啟動 drone 服務,會看到一些 Info 訊息:
$ ./server.sh
{"level":"info","msg":"main: internal scheduler enabled","time":"2019-03-09T12:39:21+08:00"}
{"level":"info","msg":"main: starting the local build runner","threads":2,"time":"2019-03-09T12:39:21+08:00"}
{"acme":false,"host":"localhost:8080","level":"info","msg":"starting the http server","port":":8080","proto":"http","time":"2019-03-09T12:39:21+08:00","url":"http://localhost:8080"}
{"interval":"30m0s","level":"info","msg":"starting the cron scheduler","time":"2019-03-09T12:39:21+08:00"}
打開瀏覽器輸入 http://localhost:8080
就可以看到跳轉到 OAuth 頁面
心得
現在 Gitea 已經支援 OAuth Provider,未來可以再接更多第三方服務,這樣就可以不用透過帳號密碼登入,避免讓第三方服務存下您的密碼。