Jenkins + Gitea 踩坑记录

发布于 2023-11-03  720 次阅读


记录下

触发方式

Jenkins 插件商店中有一个 Gitea 插件,但其实需求比较简单的话,使用通用方案即可。

我们使用 webhook 方式,具体如下:

  1. Jenkins 中构建触发器选择“触发远程构建”,并填入身份验证令牌(随机字符串即可)。
  2. 在 Gitea 仓库-设置-Webhook 中添加新的 Gitea webhook,链接填写第 1 步中显示的 URL,注意替换变量。HTTP 方法为 GET,触发条件和分支过滤自选,勾选激活,然后添加。之后点击测试,即可触发。

踩坑

Jenkins 反向代理配置

需要一些特殊配置,参考:

upstream jenkins {
        server 127.0.0.1:8090;
}

server {
    listen 80;
    server_name jenkins-dev.com;
    charset utf-8;
    client_body_buffer_size 10M;
    proxy_redirect     off;
    proxy_set_header   Host             $host:$server_port;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header X-Forwarded-Host $host:$server_port;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_next_upstream error timeout invalid_header http_502 http_503 http_504;
    proxy_ignore_client_abort on;
    proxy_read_timeout  180;
    proxy_buffering on;
    proxy_buffer_size 8k;

    proxy_buffers 8 8M;

    gzip                on;
    gzip_min_length     1000;
    gzip_types          text/plain text/css application/json text/xml application/xml application/xml+rss text/javascript;

    location / {
       proxy_pass http://jenkins;
       proxy_redirect     default;
       proxy_set_header   Host             $host:$server_port;
       proxy_set_header   X-Real-IP        $remote_addr;
       proxy_set_header X-Forwarded-Host $host:$server_port;
       proxy_set_header X-Forwarded-Server $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
    }
}

触发报 403 错误

错误信息:403 Authentication required

要在 Jenkins-全局安全设置 中打开匿名用户的可读权限,否则触发必定失败。

参考文章

测试正常,push 触发报 431 错误

错误信息:431 Request Header Fields Too Large

这是 Nginx 反向代理配置中缓存设置过小导致的,适当调大即可。

参考文章