我正在尝试设置一个本地无人机服务器作为我们的 CI 环境。我们的源代码由 Github 管理。首先,我在 Github 上创建一个 oauth 应用程序并获取 client_id 和 client_secret。然后安装docker和drone,之后我做了下面的配置/etc/drone/dronerc
REMOTE_DRIVER=github
REMOTE_CONFIG=https://github.com?client_id=XXXXXX&client_secret=XXXXXX
DATABASE_DRIVER=sqlite3
DATABASE_CONFIG=/var/lib/drone/drone.sqlite
然后我运行下面的命令来启动无人机 docker 容器:
sudo docker run \
--volume /var/lib/drone:/var/lib/drone \
--volume /var/run/docker.sock:/var/run/docker.sock \
--env-file /etc/drone/dronerc \
--restart=always \
--publish=80:8000 \
--detach=true \
--name=drone \
drone/drone:0.4
我在浏览器上访问无人机链接,我可以看到一个登录按钮。如下所示。
当我点击登录按钮时,我的回调 url 会收到以下错误消息通知:
error=redirect_uri_mismatch&error_description=The+redirect_uri+MUST+match+the+registered+callback+URL+for+this+application.
下面是 Github 回调 url 的服务器代码:
get '/oauth/authorize' do
# get temporary GitHub code...
session_code = request.env['rack.request.query_hash']['code']
# ... and POST it back to GitHub
result = RestClient.post('https://github.com/login/oauth/access_token',
{:client_id => CLIENT_ID,
:client_secret => CLIENT_SECRET,
:code => session_code},
:accept => :json)
# extract the token and granted scopes
access_token = JSON.parse(result)['access_token']
redirect 'http://10.0.0.24/'
end
在上述代码的最后一行,重定向地址为无人机服务器地址。我可能在 OAuth 身份验证部分做错了事,但我不知道如何以正确的方式做到这一点。有谁知道如何实现该部分以允许无人机访问我的 Github 帐户?
谢谢