Last updated on 2022-10-08, Sat, 07:30 PM
本来说要写的,咕了一个月。
正好最近搞了台新的小鸡,准备把 CI 迁过去,顺便复习一下 Woodpecker CI 的搭建过程。
这里就直接绑定自建的 gitea 了,比较贴近实际使用场景。
环境
Debian 11
主要依赖: nginx
, docker
, docker-compose
使用 nginx 官方 mainline 源
在 /etc/apt/sources.list
添加
安装依赖
在 Gitea 添加 OAuth2 Application
创建一个 OAuth2 应用,以便用户向其授权获取账户信息,并在 CI 运行时 clone 私有仓库。
登录 Gitea 实例。进入 Settings - Applications - Manage OAuth2 Applications (/user/settings/applications), 在 “Create a new OAuth2 Application” 中添加。
Application Name 随意,
Redirect URI 填写如 https://ci.example.com/authorize
, 将 ci.example.com/
换作自己的 URI 即可。
随后应该得到 Client ID 和 Client Secret, 其中的 ID 以 UUID 形式出现,而 Secret 需立即复制, 此后不会再显示。
启动容器
既然 官方也推荐用 docker 容器 ,那就用呗。
编写 docker-compose.yml
.
其中的环境变量需要自己填写。
WOODPECKER_OPEN=true
无需更改。
WOODPECKER_ORGS
填写自己在 gitea 中的组织名称。
WOODPECKER_ADMIN
填写自己在 gitea 中的 username.
WOODPECKER_HOST
填写 CI 将要用的 Hostname, 如 https://ci.example.com
. 能否在 path 下工作暂不清楚。
WOODPECKER_AGENT_SECRET
有两处,需填写相同的值,不妨用 openssl rand -hex 32
生成。
WOODPECKER_GITEA=true
无需更改。
WOODPECKER_GITEA_URL
填写 Gitea 的 URL, 例如 https://example.com/git
, https://git.example.com
.
WOODPECKER_GITEA_CLIENT
填写刚才得到的 Client ID.
WOODPECKER_GITEA_SECRET
填写刚才得到的 Client Secret.
WOODPECKER_SERVER_CERT
和 WOODPECKER_SERVER_KEY
直接留空,TLS 交给 nginx 处理,不会有影响。
配置反代
此处使用 nginx.
一定不要忘记申请证书!可以用 acme.sh 快速申请。我的踩坑经历
配置 HTTP Server.
配置 stream 模块
然后把这两个配置 include 到对应的地方就行了。然后重启下 nginx.
安全性(可选)
把域名挂到 互联网皇帝 那里,各种防火墙拉满。
同时给 nginx 加个 IP 白名单。
验证
最后访问网址,应该可以看到啄木鸟和旁边的 login 按钮。
点击后,应自动跳转至预设的 Gitea 实例,获取 OAuth2 授权后即可登录。
随后就应该能进入界面,并添加项目了。