开始开发
您可以在本地计算机上按照以下步骤进行开发,也可以使用 Gitpod 和 Gitea 开始完全准备好的在线设置。
Gitpod
如果您想以最简单的方式开始开发或更新文档,您可以使用我们为 Woodpecker 预配置的设置,使用 Gitpod。Gitpod 在云端启动一个完整的开发环境,包含:
- 浏览器中的 IDE 或桥接到您的本地 VS-Code 或 Jetbrains
- 预配置的 Gitea 实例作为代码托管平台
- 预配置的 Woodpecker 服务器
- 单个预配置的 Woodpecker 代理节点
- 我们的文档预览服务器
点击以下徽章在 Gitpod 中启动 Woodpecker。您可以使用 woodpecker 和 password 登录。
本地开发准备
安装 Go
按照此指南安装 Golang (>=1.20)。
安装 make
GNU Make 是一个工具,用于从程序的源文件控制可执行文件和其他非源文件的生成 (https://www.gnu.org/software/make/)。
在以下系统上安装 make:
安装 Node.js 和 pnpm
如果您想构建 Woodpecker's UI 或文档,请安装 Node.js (>=20)。
对于 Woodpecker UI 和文档的依赖安装(node_modules),使用包管理器 pnpm。
此指南描述了 pnpm 的安装方法。
安装 pre-commit(可选)
Woodpecker 使用 pre-commit 让您轻松自动修复代码。
要在本地开发期间应用它,请查看 pre-commit 的文档。
创建包含开发配置的 .env 文件
类似于您为生产环境设置的 Woodpecker 环境变量,您可以在 Woodpecker 项目的根目录中创建一个 .env 文件并添加所需的配置。
用于调试的常见配置如下所示:
WOODPECKER_OPEN=true
WOODPECKER_ADMIN=your-username
WOODPECKER_HOST=http://localhost:8000
# github(代码托管平台配置示例 - 有关其他代码托管平台请参阅 /docs/administration/forge/overview)
WOODPECKER_GITHUB=true
WOODPECKER_GITHUB_CLIENT=<redacted>
WOODPECKER_GITHUB_SECRET=<redacted>
# 代理
WOODPECKER_SERVER=localhost:9000
WOODPECKER_AGENT_SECRET=a-long-and-secure-password-used-for-the-local-development-system
WOODPECKER_MAX_WORKFLOWS=1
# 如果您想开发 UI,请启用此项
# WOODPECKER_DEV_WWW_PROXY=http://localhost:8010
# 如果您想使用在线代码托管平台(如 GitHub)测试 webhooks,此地址需要设置并且可以从公共服务器访问
WOODPECKER_EXPERT_WEBHOOK_HOST=http://your-address.com
# 在调试时禁用健康检查(在开发时通常不需要)
WOODPECKER_HEALTHCHECK=false
# WOODPECKER_LOG_LEVEL=debug
# WOODPECKER_LOG_LEVEL=trace
设置 OAuth
按照代码托管平台文档中所述为您的代码托管平台创建 OAuth 应用。
使用 VS Code 进行开发
您可以使用不同的方法来调试 Woodpecker 应用程序。目前推荐的方法之一是使用 VS-Code 或 VS-Codium(VS-Code 的开源二进制文件),因为大多数维护者都在使用它,并且 Woodpecker 已经包含了所需的调试配置。
要启动本地开发所需的所有服务,您可以使用 "Woodpecker CI" 调试配置,它将在调试模式下启动 UI、服务器和代理。然后打开 http://localhost:8000 即可访问。
作为使用 VS Code 编程 Go 的入门指南,您可以使用此视频指南:

调试 Woodpecker
Woodpecker 源代码已经包含了 Woodpecker 服务器和代理的启动配置。要开始调试,您可以点击 VS-Code 导航栏中的调试图标(ctrl-shift-d)。在该页面上您将在顶部看到现有的启动作业。只需选择代理或服务器并点击播放按钮。您可以在源文件中设置断点以在特定点停止。

测试和代码检查
要测试或检查 Woodpecker 的各个部分,您可以运行以下命令之一:
# 测试服务器代码
make test-server
# 测试代理代码
make test-agent
# 测试 CLI 代码
make test-cli
# 测试数据存储/数据库相关代码,如服务器的迁移
make test-server-datastore
# 检查 Go 代码
make lint
# 检查 UI 代码
make lint-frontend
# 测试 UI 代码
make test-frontend
如果您想测试特定的 Go 文件,您也可以使用:
go test -race -timeout 30s go.woodpecker-ci.org/woodpecker/v3/<path-to-the-package-or-file-to-test>
或者您可以在 VS-Code 中打开测试文件,并通过点击内联命令运行或调试测试:

从终端运行应用程序
如果您想从终端运行 Woodpecker 应用程序,您可以从 Woodpecker 项目的基础目录使用以下命令之一。它们将以类似于 调试 Woodpecker 所述的方式执行 Woodpecker,但无法在您的编辑器中真正调试它。
go run ./cmd/server
go run ./cmd/agent
go run ./cmd/cli [command]