你是我唯一的希望。我快要抓狂了。我试着做一件非常简单的事情,将Woodpecker CI
实例与Gitea
实例配对。
- 我在一个单独的主机上正在运行 Gitea。
- 我在 Gitea 的用户配置中为 Woodpecker 创建了一个 oauth2 应用程序。
- 我有一个
Woodpecker CI
为 Gitea 配置的实例,实际上可以通过 https 访问。它有效,有一个“登录”按钮。 - 我点击它。它将我重定向到 Gitea。我登录 Gitea 并在 Gitea 中授权 Woodpecker。
- 然后,我通过 Gitea 的应用程序配置中的重定向 URI 重定向回 Woodpecker,突然,我
HTTP ERROR 502
从 Woodpecker 实例中退出并且无法从那里继续。
有关设置的一些信息。我Woodpecker server
在 LXD/LXC 容器中运行的二进制文件。它位于反向代理后面:Caddy
。此503
错误在 Caddy 的日志中留下痕迹:
Jun 19 23:01:37 woodpecker-server caddy[158]: {"level":"error","ts":1687208497.326067,"logger":"http.handlers.reverse_proxy","msg":"reading from backend","error":"unexpected EOF"}
Jun 19 23:01:37 woodpecker-server caddy[158]: {"level":"error","ts":1687208497.326134,"logger":"http.handlers.reverse_proxy","msg":"aborting with incomplete response","error":"unexpected EOF"}
啄木鸟的木头里什么也没有。
这是我的啄木鸟的配置:
WOODPECKER_HOST=[REDACTED]
WOODPECKER_ADMIN=[REDACTED]
WOODPECKER_LOG_LEVEL=warn
WOODPECKER_LETS_ENCRYPT=false
WOODPECKER_GITEA=true
WOODPECKER_GITEA_URL=[REDACTED]
WOODPECKER_GITEA_CLIENT=[REDACTED]
WOODPECKER_GITEA_SECRET=[REDACTED]
WOODPECKER_GITEA_SKIP_VERIFY=false
Caddyfile
[REDACTED] {
reverse_proxy localhost:8000
}
# caddy version
v2.6.4 h1:2hwYqiRwk1tf3VruhMpLcYTg+11fCdr8S3jhNAdnPy8=
# woodpecker-server --version
woodpecker-server version 0.15.9
让我困惑的是,Woodpecker 服务器登录页面似乎可以正常工作。它将我重定向到我的 Gitea,允许我授权 Woodpecker,然后将我重定向回 Woodpecker 的https://[HOST]/authorize
页面。因此,看起来所有数据都是正确的。但出于某种原因,在此步骤之后它无法提供正确的响应。
我确信 Gitea+Woodpecker 设置非常常见。有人知道这可能是什么原因造成的吗?该看什么?
更多信息:Gitea位于nginx后面,其配置为:
server {
listen 80;
listen 443 ssl;
server_name [REDACTED];
ssl_certificate /etc/letsencrypt/live/[REDACTED]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[REDACTED]/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
location / {
client_max_body_size 512M;
proxy_pass http://unix:/run/gitea/gitea.sock;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Redirect non-https traffic to https
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
}
答案1
我猜问题是 WP 无法与 Gitea 通信,因此无法将代码交换为访问令牌。但我不太清楚为什么。也许你可以给下一个无论如何,尝试一下即将发布的版本。
答案2
看来啄木鸟里的虫子与https://github.com/woodpecker-ci/woodpecker/issues/1576。就像这个报告的问题一样,将 Gitea 的 URL 从域更改为 IP 似乎可以避免任何问题。还需要将WOODPECKER_GITEA_SKIP_VERIFY
环境变量值设置为true
。这是一种解决方法,但似乎有效。