woodpecker

woodpecker-ciApache-2.0活跃维护 有专家点评

轻量级 CI/CD 引擎,配置简单、扩展性强,可基于 Docker 或 Kubernetes 跑流水线,适合想自建持续集成又不想折腾复杂配置的团队。

Woodpecker is a simple, yet powerful CI/CD engine with great extensibility.

v3.20.1发布于 2026-10-29 19:39 UTC8,159star +30 / 7 天741fork同步于 2026-11-11 05:30 UTC

专家点评

上手难度:进阶更新于 2026-11-11

自托管 CI/CD 引擎,用 Server/Agent 分离和插件机制顶替 Jenkins 那套重部署

适用场景

  • 小团队自建构建环境:默认 SQLite 起步,不用先架 Postgres 或 MySQL,一台机器就能把 Server 和 Agent 跑起来,比 Jenkins 少一层运维负担
  • 需要按角色拆分执行节点:Server 管调度和 UI,Agent 挂到不同机器或不同架构上跑任务,比单机 CI 更容易横向加执行能力
  • 已经在用 Docker 或 Kubernetes 且不想被 SaaS CI 的构建环境限制:流水线步骤以容器镜像形式定义,构建环境由自己控制
  • 从 Drone 迁移:Woodpecker 的流水线模型和插件思路与 Drone 同源,迁移成本比换到完全不同的 DSL 低

踩坑

  • 插件不是开箱即用:README 明说插件要从插件站单独挑选并配置,流水线里每个非内置步骤都得自己找镜像、对参数,第一次搭流水线的时间主要花在这
  • 安装文档是唯一入口:README 没给安装命令,只指向官方 administration 文档,直接 clone 下来跑不起来,得先按文档配好 Server/Agent 的通信和鉴权
  • 后端支持范围是反复被提的点:issue 里 "native podman as backend" 这类请求反应数不低,说明容器后端的选择面比 Docker/K8s 窄,如果你的环境只跑 Podman 需要先确认当前支持状态

同类对比

Drone 是同一脉络的直接替代,流水线语法接近;如果团队已经在 GitHub 生态里且不想自托管,GitHub Actions 的分流点更明显。要更重的编排和企业级插件生态则看 Jenkins。

怎么上手

由 README 提炼,执行前请确认
README 未给出具体安装命令,仅指向官方安装文档 https://woodpecker-ci.org/docs/administration/general
硬件要求按 README 说明

README 未说明 GPU 或显存要求;空闲运行时 Server 约需 100 MB 内存,Agent 约需 30 MB 内存。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

轻量可扩展的自托管 CI/CD 引擎,用插件扩展流水线,适合想自己掌控构建环境的团队

轻量级 CI/CD 引擎,配置简单、扩展性强,可基于 Docker 或 Kubernetes 跑流水线,适合想自建持续集成又不想折腾复杂配置的团队。

核心能力

  • 默认使用 SQLite 作为数据库,无需额外部署数据库
  • 通过插件机制扩展流水线能力,核心与社区插件均可浏览选用
  • 提供 Server 与 Agent 分离的架构,按角色分别部署
  • 支持多语言界面,自带 Weblate 翻译平台
  • Apache 2.0 开源许可,被 Codeberg 用作主 CI/CD 引擎

容易踩的坑

README 未列出具体安装命令,需先查阅官方安装文档再动手;插件需从插件网站单独挑选并配置,并非开箱即用

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v3.20.1
  1. v3.20.13.20.1最新正式版2026-10-29 · 2026-10-29 19:39 UTC

    3.20.1 - 2026-10-29

    ❤️ Thanks to all contributors! ❤️

    @6543, @lafriks

    🐛 Bug Fixes

    • Restore drone envsubst [#7433]
    • Fix step lop group UX [#7431]

    📦️ Dependency

    • Update golang-packages [#7426]
  2. v3.20.03.20.02026-10-28 · 2026-10-28 18:40 UTC
    查看更新说明

    3.20.0 - 2026-10-28

    ⚠️ this release has an unintended breaking change [#7398], use 3.20.1

    ❤️ Thanks to all contributors! ❤️

    @6543, @AhmadNajiKam, @AkashKumar7902, @CamiloEspinoza, @Javex, @M0Rf30, @MannXo, @Mihir-Rabari, @PatelFarhaan, @Sawarz, @Sriram-PR, @YouCD, @aniketatgithub, @arcaartem, @asyntai, @carstenschmidt77, @confusedsushi, @cuducos, @eknathdj, @fredrikblau, @lafriks, @njaaazi, @pcbeingused333, @qwerty287, @roian6, @sugar700, @supertj, @tritsystem, @wolffberg, @xoxys

    Special thanks to @baradika for reporting a security vulnerability

    🔒 Security

    • Remove agent token from process os environments [#7412]
    • Make sure CLI self-update can target cli install dir only [#7400]
    • Document security boundaries [#7281]
    • Keep revoked env admins revoked until the server restarts [#7403]
    • Fix gitlab to set tag pipeline author from webhook metadata [#7397]
    • Update module github.com/woodpecker-ci/envsubst to v1.2.0 [#7398]
    • Rotate repo JWT on repo repair [#7361]
    • Fix and harden config fetching [#7386]
    • Enhance matrix feature [#7353]
    • Recover from config parsing panic in server [#7348]
    • Fix server panics while parsing config [#7336]
    • Only link http(s) error URIs on the login page [#7318]
    • Do not log bearer credentials at trace level [#7317]
    • Fall back to read only if the forge permission sync fails [#7282]
    • Quote all YAML line breaks in environment substitution [#7283]

    ✨ Features

    • Add support for selecting workflow to run for manual pipelines [#7393]
    • Add option to restrict organization and user to use its agents only [#7359]
    • Make CLI lint prefer detected Woodpecker config [#6634]

    📈 Enhancement

    • Send restart flag to the HTTP config extension [#7384]
    • Harden store scoping for org-level secret and registry retrieval [#7365]
    • Add CI_REPO_ID environment variable [#7295]
    • Replace pipeline author on deploy with session user [#7358]
    • Switch to the woodpecker-ci envsubst fork [#7349]
    • StepFinished of log store return error now [#7346]
    • Speed up queue scheduling calculations [#7303]
    • Allow selecting the forge when creating a user [#7314]
    • Drop reviewer metadata when restarting a pipeline [#7287]
    • Indicate permission fallback in webui [#7285]
    • li
  3. v3.19.03.19.02026-10-07 · 2026-10-07 18:04 UTC
    查看更新说明

    3.19.0 - 2026-10-07

    ❤️ Thanks to all contributors! ❤️

    Special thanks to @vibushasatheeshkumar for reporting a security vulnerability!

    @6543, @ChrisJr404, @KR-Ravindra, @LaGrunge, @cacarico, @chiliec, @confusedsushi, @grisu48, @healdropper, @hsdfat, @jagerman, @joseph0531, @lafriks, @mattwilkinsonn, @qwerty287, @roian6, @sb123sb123, @somaz94, @spatterIight, @tehlordvortex, @thiagola92, @tunglambk, @usiegj00, @xoxys

    🔒 Security

    • Prevent injection of matrix env vars into default clone step [#7157]

    ✨ Features

    • Local backend gets support for custom shell paths [#7194]
    • Server side enforced agent labels [#4131]

    📈 Enhancement

    • CLI exec sanitize secrets too [#6877]
    • Harmonize unit test patterns [#7229]
    • Generalize log output groups [#7226]
    • Include HTTP status in Bitbucket errors without a message [#7227]
    • Add default user namespace support with configurable non-root override [#6943]
    • Adopt Golang v1.27 [#7153]
    • Store workflow/step dependencies in database and update API [#6130]
    • Fix/docs deps and flaky test [#7204]
    • Add AgentListWithOpts with pagination options [#7155]
    • Use more unique sign to detect commands [#7122]
    • Run swaggo in golangci-lint [#7121]
    • feat(agent): add CI_AGENT_ID and CI_AGENT_LABELS runtime env vars [#7070]

    🐛 Bug Fixes

    • Fix step logs lost when pipeline ends with skipped workflows [#7240]
    • Release agents waiting on long polls during server shutdown [#7189]
    • Add version endpoint to API as per spec [#7232]
    • Accept host:port registry addresses [#7235]
    • Fix queue scheduler debug log spam [#7224]
    • Fix infinite hook pagination loop on Bitbucket Cloud [#7210]
    • Wait for informer cache sync before checking pod deletion [#7158]
    • Fix race condition on concurrent pipeline config persist [#7192]
    • Reload user from store before refreshing OAuth token [#7176]
    • Ignore GitLab rejecting a commit status transition [#7217]
    • Fix workspace volume mismatch when using CLI exec with the Kubernetes backend [#7150]
    • Fix CLI shell completion [#7203]
    • Fix url including when combined with ansi escapes [#7196]
    • Fix nix dev env by disable static linking and make pnpm work again [#7193]
    • Fix data race in SSE stream handlers when the clie
  4. v3.18.13.18.12026-09-08 · 2026-09-08 23:35 UTC
    查看更新说明

    3.18.1 - 2026-09-09

    ❤️ Thanks to all contributors! ❤️

    @6543, @YouCD, @dylanpulver, @lafriks, @mattwilkinsonn, @qwerty287

    🔒 Security

    • Fix docs securityscan [#7094]

    🐛 Bug Fixes

    • Add timezone data to docker images [#7093]
    • Log an expected log-stream close failure at debug instead of error [#7117]
    • Log a filtered webhook at debug instead of error [#7116]
    • Fix workflow-level when.status so a failure-only workflow does not run on success [#7091]
    • Speedup migration "deduplicate-log-entries" [#7068]
    • fix(forge/gitlab): use group Path instead of Name for membership lookup [#7086]
    • Fix injecting additional variables for substituting [#7077]

    🧪 Tests

    • Add test to verify that additional envs from manual run are available to when conditions [#7090]

    📚 Documentation

    • Fix RPM URL [#7124]
    • Update dependency isomorphic-dompurify to v4 [#7097]
    • Update pnpm to v11.25.0 [#7095]
    • Update docs npm deps non-major [#7083]

    📦️ Dependency

    • Update golang-packages [#7112]
    • Update web npm deps non-major [#7107]
    • Lock file maintenance [#7113]
    • Update golang-packages [#7106]
    • Update pnpm to v12 [#7108]
    • Update dependency eslint to v10.10.0 [#7105]
    • Update dependency vitest to v5 [#7098]
    • Update module github.com/google/go-github/v90 to v91 [#7099]
    • Lock file maintenance [#7100]
    • Update web npm deps non-major [#7096]
    • Update golang-packages [#7092]
    • Update module gitlab.com/gitlab-org/api/client-go/v2 to v2.61.0 [#7088]
    • Lock file maintenance [#7087]
    • Update dependency simple-icons to v16.29.0 [#7082]
    • Update module github.com/getkin/kin-openapi to v0.149.0 [#7084]
    • Update web npm deps non-major [#7081]
    • Update pre-commit hook golangci/golangci-lint to v2.13.2 [#7080]
    • Update golang-packages [#7075]
    • Update golang-packages [#7071]

    Misc

    • Makefile enhancement [#7067]
  5. v3.18.03.18.02026-08-24 · 2026-08-24 09:38 UTC
    查看更新说明

    3.18.0 - 2026-08-24

    ⚠️ This release contains a migration that alters log storage. Depending on the number of stored log lines, it can take a while to complete. Back up before upgrading and allow for extra downtime.

    ❤️ Thanks to all contributors! ❤️

    Special thanks to @arpitjain099, @abdullaabdullazade, @george928 and @RealFakeAccount for reporting security vulnerabilities!

    @6543, @AhmadNajiKam, @DEATIN, @OCram85, @Palleas, @YouCD, @anbraten, @confusedsushi, @gerbsen, @hasufell, @jrouly, @kastl-ars, @lafriks, @qwerty287, @retif, @romain-rossi, @spam-n-eggs, @stevapple, @xoxys, @zmully

    🔒 Security

    • k8s: allow to disable runtime class name backend option [#7046]
    • Don't inject additional env vars into plugins [#7040]
    • Don't inject matrix env vars into plugins [#7036]
    • Update golang.org/x/mod [#7012]
    • Change group identifier to full_path for GitLab [#6950]

    📈 Enhancement

    • Allow to add custom message to manual pipelines [#6973]
    • Add hidden decode-base64 agent command for Windows local backend [#7023]
    • Enforce unique name for services and steps if dag is used [#7032]
    • Add custom list opts with all [#6992]
    • Add pipeline log download endpoint [#6876]
    • Reject invalid started and done workflow states [#7029]
    • Sort workflow files by name [#7021]
    • Reject incompatible gRPC proto version agents [#7028]
    • Enforce one log entry per line with a unique index [#7004]
    • Order the user feed by creation time instead of id [#7005]
    • Return step logs strictly in line order [#6999]
    • Find the preceding pipeline by number instead of id [#7003]
    • perf(schema): cache compiled YAML validation schema [#7002]
    • Pick a repo's latest pipeline by number instead of id [#7001]
    • feat: allow configuring allowed orgs per forge [#6874]
    • Make the Kubernetes cluster domain configurable [#6957]
    • Fix vite deprecation [#6974]
    • feat(web): extract ListEditor form component [#6962]
    • Rename WOODPECKER_GRPC_VERIFY to WOODPECKER_GRPC_SKIP_VERIFY [#6947]
    • Update frontend schema.json for documented backend options [#6933]

    🐛 Bug Fixes

    • Prevent repository buttons from overlapping search bar [#7047]
    • fix(server): prefix manual trigger Ref with refs/heads/ [#7051]
    • fix runtime to ignore cancel as runtime error [#7031]
    • Fix orphaned pipelines after

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Woodpecker

    Woodpecker is a simple, yet powerful CI/CD engine with great extensibility.

    woodpecker

    Installation & Resources

    Woodpecker can be installed in various ways (see the Installation Instructions) and runs with SQLite as database by default. It requires around 100 MB of RAM (Server) and 30 MB (Agent) at runtime in idle mode.

    Support

    You can support the project by becoming a backer on Open Collective or via GitHub Sponsors.

    Documentation

    Our documentation can be found at https://woodpecker-ci.org/docs/intro.

    Translation

    We have a self-hosted Weblate instance at translate.woodpecker-ci.org.

    An overview of the current translation state is available at https://translate.woodpecker-ci.org/projects/woodpecker-ci/#languages.

    Public Woodpecker Instances

    Woodpecker is used as the main CI/CD engine at Codeberg, an alternative Git hosting platform with a focus on privacy and free software development.

    Plugins

    Woodpecker can be extended via plugins. The plugin overview website helps browsing available plugins. It combines both plugins by the Woodpecker core team and community-maintained ones.

    License

    Woodpecker is Apache 2.0 licensed. The source files have a header indicating which license they are under and what copyrights apply.

    Everything in docs/ is licensed under the Creative Commons Attribution-ShareAlike 4.0 International Public License.