"fatal: could not read Username for 'https://XXX': No such device or address" 与 drone.io 和 Gogs
"fatal: could not read Username for 'https://XXX': No such device or address" with drone.io and Gogs
我想使用 drone.io and gogs 以便在我的环境中拥有一些 CI 功能。
drone.io (http://docs.drone.io/) 的文档不是最新的,我不得不挖掘很多才能启动它。
我的 docker-compose.yml
文件如下:
version: '3'
services:
drone-server:
image: drone/drone:latest
network_mode: "bridge"
volumes:
- "/docker/drone:/var/lib/drone/"
environment:
- "DRONE_OPEN=true"
- "DRONE_HOST=XXX"
- "DRONE_SECRET=XXX"
- "DRONE_GOGS=true"
- "DRONE_GOGS_URL=http://gogs:3000"
- "DRONE_GOGS_GIT_USERNAME=XXX"
- "DRONE_GOGS_GIT_PASSWORD=XXX"
- "DRONE_GOGS_PRIVATE_MODE=true"
external_links:
- "dedigogs_gogs_1:gogs"
drone-agent:
image: drone/agent:latest
network_mode: "bridge"
depends_on:
- drone-server
links:
- drone-server
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
environment:
- "DRONE_SERVER=drone-server:9000"
- "DRONE_HOST=XXX"
- "DRONE_SECRET=XXX"
- "DRONE_GOGS=true"
- "DRONE_GOGS_URL=http://gogs:3000"
- "DRONE_GOGS_GIT_USERNAME=XXX"
- "DRONE_GOGS_GIT_PASSWORD=XXX"
- "DRONE_GOGS_PRIVATE_MODE=true"
external_links:
- "dedigogs_gogs_1:gogs"
(dedigogs_gogs_1
是我的 gogs
docker 实例)
我可以使用我的 gogs
凭据连接到 drone
。
我可以看到我所有的私有存储库,并为 drone.io
启用它们。
但是,在构建提交时,代理(我认为)无法克隆存储库:
+ git init
Initialized empty Git repository in /drone/src/XXX/XXX/XXX/.git/
+ git remote add origin https://XXX/XXX/XXX.git
+ git fetch --no-tags origin +refs/heads/master:
fatal: could not read Username for 'https://XXX': No such device or address
exit status 128
我尝试使用 .drone.yml
(添加“clone
”部分,使用 username
、netrc.username
、...),我还尝试使用环境变量,没有任何作用,我无法对克隆存储库进行 drone
身份验证。
有什么想法吗?
事情是这样的,我在 gogs 上遇到过类似的问题,出于某种原因,.netrc 文件与用于克隆的 url 不匹配。
尝试使用完整的 url 在浏览器中访问 Gogs 而不是 docker 网络中的内部主机名
DRONE_GOGS_URL=http://myurl.to.gogs.com:3000
DRONE_GOGS_URL=http://some-ip-address:3000
我想使用 drone.io and gogs 以便在我的环境中拥有一些 CI 功能。
drone.io (http://docs.drone.io/) 的文档不是最新的,我不得不挖掘很多才能启动它。
我的 docker-compose.yml
文件如下:
version: '3'
services:
drone-server:
image: drone/drone:latest
network_mode: "bridge"
volumes:
- "/docker/drone:/var/lib/drone/"
environment:
- "DRONE_OPEN=true"
- "DRONE_HOST=XXX"
- "DRONE_SECRET=XXX"
- "DRONE_GOGS=true"
- "DRONE_GOGS_URL=http://gogs:3000"
- "DRONE_GOGS_GIT_USERNAME=XXX"
- "DRONE_GOGS_GIT_PASSWORD=XXX"
- "DRONE_GOGS_PRIVATE_MODE=true"
external_links:
- "dedigogs_gogs_1:gogs"
drone-agent:
image: drone/agent:latest
network_mode: "bridge"
depends_on:
- drone-server
links:
- drone-server
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
environment:
- "DRONE_SERVER=drone-server:9000"
- "DRONE_HOST=XXX"
- "DRONE_SECRET=XXX"
- "DRONE_GOGS=true"
- "DRONE_GOGS_URL=http://gogs:3000"
- "DRONE_GOGS_GIT_USERNAME=XXX"
- "DRONE_GOGS_GIT_PASSWORD=XXX"
- "DRONE_GOGS_PRIVATE_MODE=true"
external_links:
- "dedigogs_gogs_1:gogs"
(dedigogs_gogs_1
是我的 gogs
docker 实例)
我可以使用我的 gogs
凭据连接到 drone
。
我可以看到我所有的私有存储库,并为 drone.io
启用它们。
但是,在构建提交时,代理(我认为)无法克隆存储库:
+ git init
Initialized empty Git repository in /drone/src/XXX/XXX/XXX/.git/
+ git remote add origin https://XXX/XXX/XXX.git
+ git fetch --no-tags origin +refs/heads/master:
fatal: could not read Username for 'https://XXX': No such device or address
exit status 128
我尝试使用 .drone.yml
(添加“clone
”部分,使用 username
、netrc.username
、...),我还尝试使用环境变量,没有任何作用,我无法对克隆存储库进行 drone
身份验证。
有什么想法吗?
事情是这样的,我在 gogs 上遇到过类似的问题,出于某种原因,.netrc 文件与用于克隆的 url 不匹配。
尝试使用完整的 url 在浏览器中访问 Gogs 而不是 docker 网络中的内部主机名
DRONE_GOGS_URL=http://myurl.to.gogs.com:3000
DRONE_GOGS_URL=http://some-ip-address:3000