指南
ORM
Woodpecker 使用 Xorm 作为数据库连接的 ORM。
添加新迁移
Woodpecker 使用迁移来更改数据库模式,如果数据库模型已被更改。将新的迁移任务添加到 server/store/datastore/migration/。
信息
向模型添加新属性将由底层 ORM 根据模型的 struct 字段标签 自动处理。如果您添加一个全新的模型,您必须将其添加到 server/store/datastore/migration/migration.go 中的 allBeans 变量中才能创建新表。
注意
您不应该在迁移中使用 sess.Begin(), sess.Commit() 或 sess.Close()。会话/事务处理将由底层迁移管理器完成。
要在服务器启动后自动执行迁移,需要将新迁移添加到 server/store/datastore/migration/migration.go 中 migrationTasks 的末尾。成功执行该事务后,服务器将自动将迁移添加到列表中,因此在下次启动时不会再次执行。
官方镜像的常量
所有官方默认镜像都保存在 shared/constant/constant.go 中,必须使用精确的标签固定。
本地构建镜像
服务器
### 构建 web 组件
make vendor
cd web/
pnpm install --frozen-lockfile
pnpm build
cd ..
### 定义要构建的平台(例如 linux/amd64)
# (这里的 | 不是打字错误)
export PLATFORMS='linux|amd64'
make cross-compile-server
### 构建镜像
docker buildx build --platform linux/amd64 -t username/repo:tag -f docker/Dockerfile.server.multiarch.rootless --push .
信息
cross-compile-server 规则使用 xgo,一个 Go 交叉编译器。您需要在一台 amd64 主机上执行此操作,因为 xgo 仅适用于 amd64(请参阅 xgo#213)。
您可以尝试使用 build-server 规则,但此规则在某些操作系统上会失败(例如 macOS)。
代理
### 构建代理
make build-agent
### 构建镜像
docker buildx build --platform linux/amd64 -t username/repo:tag -f docker/Dockerfile.agent.multiarch --push .
CLI
### 构建 CLI
make build-cli
### 构建镜像
docker buildx build --platform linux/amd64 -t username/repo:tag -f docker/Dockerfile.cli.multiarch.rootless --push .