Woodpecker CI

Developer Tools

A lightweight, container-native CI engine configured from the repository.

Latest v3.17.0 · by WoodpeckerWebsitewoodpecker-ci/woodpecker

Release activity

Release activity — 10 releases across 10 days since Nov 18, 2025. Each cell is one day; darker means more releases that day. Nothing is recorded before Nov 18, 2025. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Apr 26, 2026No releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026
Monday1 release on Apr 27, 2026No releases on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026
TuesdayNo releases on Apr 28, 2026No releases on May 5, 20261 release on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026
WednesdayNo releases on Apr 29, 2026No releases on May 6, 2026No releases on May 13, 2026No releases on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
ThursdayNo releases on Apr 30, 2026No releases on May 7, 2026No releases on May 14, 2026No releases on May 21, 20261 release on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
Friday1 release on May 1, 2026No releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 20261 release on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on May 2, 2026No releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 20261 release on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026

10 releases since Nov 18, 2025

Changelog

v3.17.0

3.17.0

Added 4
  • WebUI: show runtime workflow errors
  • Add Docker backend AppArmor profile option
  • Add unix socket permission option to server
  • Add step type label to step-level Prometheus metrics
Changed 5
  • Rework k8s utils to handle resource names and labels
  • Make matrix axis permutation order deterministic
  • Stamp trusted commit-branch and event pod labels
  • Rename CI_COMMIT_PRERELEASE to CI_PIPELINE_RELEASE_PRE
  • Rework pipeline data structure: Release and Tag
Fixed 8
  • Guard DAG cycle check against filtered-out optional dependencies
  • All yaml unmarshalling should use maxDepth
  • Don't count step error as workflow runtime error
  • Do not allow 0 minute timeout
  • Fix pipeline queue default template data
  • Use toLabelValue instead of toDNSName in Kubernetes step label
  • ReFetch secrets on pipeline restart
  • Treat 404 on empty repos as empty pull request list in Forgejo
Security 3
  • Update module github.com/getkin/kin-openapi to v0.144.0
  • Make grpc secret autogenerated
  • Gate Kubernetes nodeSelector backend step config behind agent config
3.17.0 - 2026-07-31
❤️ Thanks to all contributors! ❤️

@6543, @AnayGarodia, @DerRockWolf, @Kernald, @Komzpa, @OCram85, @TowyTowy, @cyphercodes, @glitch-ux, @healdropper, @ivanvc, @jleider, @kanywst, @nicolasbatistoni, @qwerty287, @rfinnie, @roian6, @xoxys, @youdie006, @zmully

🔒 Security
  • Update module github.com/getkin/kin-openapi to v0.144.0 [SECURITY] [#6896]
  • Make grpc secret autogenerated [#6845]
  • Gate Kubernetes nodeSelector backend step config behind agent config [#6809]
✨ Features
  • WebUI: show runtime workflow errors [#6577]
📈 Enhancement
  • Add Docker backend AppArmor profile option [#6909]
  • refactor: rework k8s utils to handle resource names and labels [#6855]
  • Make matrix axis permutation order deterministic [#6847]
  • feat(server): add unix socket permission option [#6839]
  • Add step type label to step-level Prometheus metrics [#6824]
  • Stamp trusted commit-branch and event pod labels [#6802]
  • Rename CI_COMMIT_PRERELEASE to CI_PIPELINE_RELEASE_PRE [#6794]
  • Rework pipeline data structure: Release & Tag [#6774]
🐛 Bug Fixes
  • fix(server): guard DAG cycle check against filtered-out optional dependencies [#6915]
  • all yaml unmarshalling should use maxDepth [#6911]
  • Don't count step error as workflow runtime error [#6904]
  • Do not allow 0 minute timeout [#6903]
  • Fix pipeline queue default template data [#6906]
  • Use toLabelValue instead of toDNSName in Kubernetes step label [#6890]
  • ReFetch secrets on pipeline restart [#6857]
  • fix(forgejo): treat 404 on empty repos as empty pull request list [#6872]
  • fix(github): resolve tag pagination loop in release hook [#6870]
  • Fix CreatePipeline retry [#6859]
  • WebUI: unregister scaffold Tab on unmount and stable Tab order [#6842]
  • WebUI: Fixes three bugs around component unmount and reset in compositions [#6843]
  • fix(server): heal users left on forge_id=0 with closed registration [#6823]
  • Correct forge_id and org handling on user/repo [#6820]
🧪 Tests
  • Add fuzz target to make [#6828]
  • Add mock for server scheduler [#6848]
📚 Documentation
  • Remove dependency overrides [#6912]
  • Document CLI configuration [#6899]
  • Update pnpm to v11.17.0 [#6892]
  • Update docs npm deps non-major [#6835]
  • docs: document the scope of built-in environment variables [#6879]
  • Add NestGuard plugin to plugins.json [#6873]
  • Minor adjustments for API usage example [#6605]
  • docs: add note about pull_request events with path filter and correct comment about on_empty [#6819]
  • Update docs npm deps non-major [#6788]
📦️ Dependency
  • Update dependency mvdan/gofumpt to v0.11.0 [#6926]
  • Lock file maintenance [#6931]
  • Update docker.io/mysql Docker tag to v26 [#6930]
  • Update dependency jsdom to v30 [#6929]
  • Update pre-commit hook hadolint/hadolint to v2.15.1 [#6927]
  • Update golang-packages [#6920]
  • Update module github.com/mattn/go-sqlite3 to v1.14.49 [#6919]
  • Update module gitlab.com/gitlab-org/api/client-go/v2 to v2.53.0 [#6917]
  • Update golang-packages [#6910]
  • Update web npm deps non-major [#6894]
  • Lock file maintenance [#6901]
  • Update module github.com/docker/go-connections to v0.8.0 [#6900]
  • Update dependency fast-uri to v4 [#6897]
  • Update golang-packages [#6889]
  • Update dependency brace-expansion to v5 [#6895]
  • Update pre-commit hook rbubley/mirrors-prettier to v3.9.6 [#6893]
  • Update golang-packages [#6883]
  • Update web npm deps non-major [#6866]
  • Update golang-packages [#6867]
  • Update pnpm to v11.15.0 [#6865]
  • Update pre-commit hook igorshubovych/markdownlint-cli to v0.49.1 [#6861]
  • Update dependency pinia to v4 [#6864]
  • Update gitea/gitea Docker tag to v1.27 [#6863]
  • Update web npm deps non-major [#6862]
  • Update docker.io/woodpeckerci/plugin-ready-release-go Docker tag to v4.1.2 [#6860]
  • Update golang-packages [#6858]
  • Update web npm deps non-major [#6815]
  • Update golang-packages [#6821]
  • Update docker.io/woodpeckerci/plugin-docker-buildx Docker tag to v6.1.1 [#6834]
  • Update docker.io/woodpeckerci/plugin-codecov Docker tag to v2.3.2 [#6833]
  • Update dependency golang to v1.26.5 [#6832]
  • Update golang-packages [#6785]
  • Lock file maintenance [#6816]
  • Update pnpm to v11.10.0 [#6814]
  • Update module github.com/cenkalti/backoff/v6 to v7 [#6812]
  • Update web npm deps non-major [#6787]
  • Lock file maintenance [#6799]
View originalPermalink
How v3.17.0 went
v3.16.0

3.16.0

Added 5
  • Add workflow concurrency limit option
  • Support Unix Sockets
  • Add CI_COMMIT_PULL_REQUEST_DRAFT environment variable
  • Add Prometheus metrics for pipeline step duration and failures
  • Add k8s userns support
Changed 8
  • Kubernetes allow custom image when precreating workingDir as nonroot
  • Server can move pipeline parsing into background on long creation times
  • Make LogEntry Buffer configurable for agent
  • Agent treat gRPC Internal error as fatal
  • Make cli exec auto detect single workflow test in multi workflow setup
  • Surface .env load errors
  • Group commands followup user preference
  • Trim white spaces for cron create/update
Fixed 2
  • Allow images for secrets to contain SHA256 for image pinning
  • Server should drop stale queue tasks already missing in database
Security 5
  • Gate Kubernetes serviceAccountName backend step config behind agent config
  • Harden agent rpc to check agentID on workflow
  • Security updates for js dependencies
  • Update mongo-driver to v1.17.7
  • Update joi
3.16.0 - 2026-06-27
❤️ Thanks to all contributors! ❤️

@6543, @AkashKumar7902, @M31ancholy, @MeurillonGuillaume, @WeslleyNasRocha, @gedankenstuecke, @head1328, @mahlzahn, @mmeier86, @nati737, @nijave, @qwerty287, @simonckemper, @simonmeyerrr

🔒 Security
  • Gate Kubernetes serviceAccountName backend step config behind agent config [#6792]
  • Harden agent rpc to check agentID on workflow [#6759]
  • Security updates for js dependencies [#6737]
  • bump go.mongodb.org/mongo-driver v1.17.6 => v1.17.7 [#6741]
  • Update joi [#6728]
✨ Features
  • Add workflow concurrency limit option [#6671]
  • Support Unix Sockets [#6721]
📈 Enhancement
  • Kubernetes: allow custom image when precreating workingDir as nonroot [#6771]
  • Server can move pipeline parsing into background on long creation times [#6781]
  • Add CI_COMMIT_PULL_REQUEST_DRAFT environment variable [#6778]
  • Make LogEntry Buffer configurable for agent [#6773]
  • Agent treat gRPC Internal error as fatal [#6780]
  • Refactor to inject store and context into server scheduler [#6755]
  • Refactor server scheduler collect in new interface [#6753]
  • Add Prometheus metrics for pipeline step duration and failures [#6738]
  • Add k8s userns support [#6710]
  • Make cli exec auto detect single workflow test in multi workflow setup [#6715]
  • Surface .env load errors [#6707]
  • Group commands followup user preference [#6694]
  • Trim white spaces for cron create/update [#6690]
  • Improve slow user authorization if many orgs/repos [#5665]
  • pipeline: use more explizite error for step dependencies filtered out by its conditions [#6680]
  • Add commit timestamp env vars [#6670]
  • Show forge in users list [#6666]
🐛 Bug Fixes
  • Allow images for secrets to contain SHA256 for image pinning [#6784]
  • server should drop stale queue tasks already missing in database [#6765]
  • server queue api should ignore missing agent [#6763]
  • docs: deps migrate gray-matter to maintained fork [#6744]
  • local backend: on windows use process tree-walk as workaround to kill [#6718]
  • Fix issue with deeply nested k8s backend_options [#6730]
  • cli exec: have uniq prefix for each workflow [#6716]
  • github dont fail on force push [#6697]
  • fix(kubernetes): retry WaitStep when container terminated state not yet finalized [#6672]
🧪 Tests
  • More test coverage of server/api/... [#6712]
  • Add e2e test that assert workflow depends_on enforces ordering [#6711]
  • Add more tests in areas not well covered [#6696]
  • Cleanup e2e test setup [#6480]
📚 Documentation
  • Update docs npm deps non-major [#6786]
  • Check docs JS files for spelling [#6758]
  • Remove openbao extension [#6757]
  • Update docs npm deps non-major [#6747]
  • adds git-pages plugin [#6736]
  • Update docs npm deps non-major to v1.18.0 [#6731]
  • Update docs npm deps non-major to v3.17.0 [#6726]
  • Update docs npm deps non-major [#6722]
  • Update docs npm deps non-major [#6705]
  • Add Podman plugin [#6701]
  • Update docs npm deps non-major [#6679]
  • Update dependency concurrently to v10 [#6676]
  • Update docs npm deps non-major [#6675]
  • docs: add cli exec examples [#6629]
📦️ Dependency
  • Update pre-commit hook rbubley/mirrors-prettier to v3.8.5 [#6791]
  • Update golang-packages [#6782]
  • Update web npm deps non-major [#6761]
  • Update golang-packages [#6767]
  • Lock file maintenance [#6768]
  • Update module github.com/cenkalti/backoff/v5 to v6 [#6752]
  • Update dependency http-proxy-middleware to v4 [#6750]
  • Update pre-commit non-major to v0.49.0 [#6749]
  • Update docker.io/mysql Docker tag to v9.7.1 [#6746]
  • Lock file maintenance [#6733]
  • Update docker.io/alpine Docker tag to v3.24 [#6725]
  • Update pre-commit non-major to v3.8.4 [#6723]
  • Lock file maintenance [#6709]
  • Update golang-lang to v1.26.4 [#6704]
  • bump github.com/quic-go/quic-go to v0.59.1 [#6700]
  • Update docker.io/woodpeckerci/plugin-trivy Docker tag to v1.6.0 [#6699]
  • Lock file maintenance [#6686]
  • Update woodpeckerci/plugin-git Docker tag to v2.9.2 [#6674]
  • Update module gitlab.com/gitlab-org/api/client-go/v2 to v2.36.0 [#6668]
  • Migrate gopkg.in/yaml.v3 usages to go.yaml.in/yaml/v4 [#6651]
Misc
  • Rename editorconfig file [#6734]
View originalPermalink
How v3.16.0 went
v3.15.0

3.15.0

Added 7
  • Support optional flag in depends_on for workflows and steps
  • Add config to change default pipeline config paths and extensions
  • Display warning if admin is configured at env level
  • Add timezone support for crons
  • Add CI_PIPELINE_RERUNS environment variable
  • Add placeholders to inputs
  • Expose step type to step env
Changed 5
  • Use refactored pipeline builder in cli exec
  • Allow disabling service workspace volumes in k8s
  • Group logs by command in step logs UI and make them collapsible
  • Add CI_PIPELINE_STATUS back and move setting step environment variables into own func
  • Refactor agent rpc retry
Fixed 5
  • Fix org lookup panic
  • Deduplicate schema linter composition errors
  • On linux/mac start commands in own process group and kill the group on cancel in local backend
  • Add guards to stop pipeline services upon completion in k8s
  • Fix missing log close button
Security 3
  • Use Gitlab username for authentication
  • Update uuid dependency
  • Extract agentID in context for grpc store
3.15.0 - 2026-05-28
❤️ Thanks to all contributors! ❤️

@6543, @AkashKumar7902, @EdwardSalter, @M31ancholy, @anbraten, @hhamalai, @johanvdw, @jolheiser, @julienvincent, @lephuongbg, @mateuszkamola, @qwerty287, @rfinnie, @simonmeyerrr, @wucm667

Special thanks to @geo-chen for finding and reporting vulnerabilities!

🔒 Security
  • Use Gitlab username [#6653]
  • Update uuid [#6647]
  • server: for grpc store extracted agentID in context [#6569]
✨ Features
  • Support optional flag in depends_on for workflows and steps [#6461]
📈 Enhancement
  • Use refactored pipeline builder in cli exec [#6453]
  • Add config to change default pipeline config paths and extensions [#6580]
  • Allow disabling service workspace volumes in k8s [#6644]
  • View warning if admin is configured at env level [#6600]
  • Add timezone support for crons [#6597]
  • Add CI_PIPELINE_RERUNS environment variable [#6588]
  • Add placeholders to inputs [#6599]
  • Refactor server/.../step_builder into pipeline/.../builder [#3967]
  • Group logs by command in step logs UI and make them collapsible [#6398]
  • Expose step type to step env [#4290]
  • pipeline runtime: move setting step environment variables into own func and add CI_PIPELINE_STATUS back [#6516]
  • Refactor agent rpc retry [#6515]
🐛 Bug Fixes
  • Fix org lookup panic [#6652]
  • Deduplicate schema linter composition errors [#6633]
  • local backend: on linux / mac start commands in own process group and kill the group on cancel [#6609]
  • k8s: add guards to stop pipeline services upon completion [#6623]
  • Fix missing log close button [#6584]
  • fix(agent): persist agent ID after auth to prevent crashloop duplicates [#6543]
  • fix(gitlab): preserve private flag when webhook payload omits project visibility [#6544]
🧪 Tests
  • Fix race in local backend tests [#6574]
📚 Documentation
  • Add note about extension permission [#6646]
  • Add GitHub OAuth App setup hint to docker-compose page [#6643]
  • Update pnpm to v11.3.0 [#6639]
  • Update docs npm deps non-major [#6625]
  • Docs: Mention that you can use failure: fail [#6611]
  • Change homepage of woodpecker-shellcheck [#6594]
  • Update docs npm deps non-major [#6586]
  • Update pnpm to v11 [#6561]
  • Update docs npm deps non-major [#6555]
  • Add 3rd party secret extensions list [#6546]
  • Update dependency axios to v1.16.0 [#6538]
  • Update dependency yaml to v2.8.4 [#6536]
  • Update dependency isomorphic-dompurify to v3.12.0 [#6532]
  • Update docs npm deps non-major [#6530]
📦️ Dependency
  • Update module gitlab.com/gitlab-org/api/client-go/v2 to v2.34.0 [#6662]
  • Update dependency uuid to v14 [#6658]
  • Lock file maintenance [#6659]
  • Update golang-packages [#6637]
  • Update web npm deps non-major [#6638]
  • Lock file maintenance [#6640]
  • Update module github.com/google/go-github/v86 to v88 [#6626]
  • Update web npm deps non-major [#6624]
  • Update golang-packages [#6622]
  • Update golang-packages [#6620]
  • Update module gitlab.com/gitlab-org/api/client-go/v2 to v2.29.0 [#6618]
  • Update golang-packages [#6614]
  • Lock file maintenance [#6606]
  • Update web npm deps non-major [#6604]
  • Update web npm deps non-major [#6603]
  • Update web npm deps non-major [#6602]
  • Update web npm deps non-major [#6601]
  • Update dependency simple-icons to v16.20.0 [#6596]
  • Update dependency eslint to v10.4.0 [#6593]
  • Update dependency @antfu/eslint-config to v9 [#6592]
  • Update web npm deps non-major [#6591]
  • Update woodpeckerci/plugin-git Docker tag to v2.9.1 [#6589]
  • Update postgres Docker tag to v18.4 [#6590]
  • Update module gitlab.com/gitlab-org/api/client-go/v2 to v2.26.1 [#6587]
  • Update golang-packages [#6582]
  • Update module gitlab.com/gitlab-org/api/client-go/v2 to v2.26.0 [#6578]
  • Update golang-packages [#6571]
  • Update web npm deps non-major [#6446]
  • Update module gitlab.com/gitlab-org/api/client-go/v2 to v2.25.0 [#6566]
  • Update module github.com/google/go-github/v85 to v86 [#6560]
  • Lock file maintenance [#6563]
  • Update golang-packages [#6562]
  • Update dependency mvdan/gofumpt to v0.10.0 [#6558]
  • Update dependency golangci/golangci-lint to v2.12.2 [#6556]
  • Update pre-commit hook golangci/golangci-lint to v2.12.2 [#6557]
  • Update dependency golang to v1.26.3 [#6554]
  • Update golang-packages [#6548]
  • Update module gitlab.com/gitlab-org/api/client-go/v2 to v2.24.1 [#6545]
  • Update golang-packages [#6542]
  • Lock file maintenance [#6540]
  • Update module github.com/docker/cli to v29.4.2+incompatible [#6539]
  • Update golangci/golangci-lint Docker tag to v2.12.1 [#6537]
  • Update pre-commit hook golangci/golangci-lint to v2.12.1 [#6535]
  • Update docker.io/woodpeckerci/plugin-docker-buildx Docker tag to v6.1.0 [#6534]
  • Update dependency golangci/golangci-lint to v2.12.0 [#6533]
  • Update woodpeckerci/plugin-release Docker tag to v0.3.1 [#6531]
  • Update docker.io/lycheeverse/lychee Docker tag to v0.24.2 [#6529]
Misc
  • build: release freebsd/openbsd as binary not container [#6610]
  • flake.lock: Update [#6656]
  • Use "sign in/out" [#6579]
View originalPermalink
How v3.15.0 went
v3.14.1

3.14.1

Security 1
  • Server: make sure agent_id can not be spoofed by agent
3.14.1 - 2026-05-12
❤️ Special thanks the security researchers and those who fixed them ❤️
  • Thanks to Shivam Kumar (@shivamkumarcyber) and Ranganatha Rao Sridhar (Praetorian) independently finding and reporting the bug
  • And @6543 fixing the bugs and orchestrating the communication

CVE-2026-50141 EUVD-2026-37897

🔒 Security
  • Server: make sure agent_id can not be spoofed by agent [#6567]
View originalPermalink
How v3.14.1 went
v3.14.0

3.14.0

Added 5
  • Support one-shot agent execution mode
  • Add external secret extension implementation
  • Allow disabling isolated home directory for local agents
  • Add Container Registry credential extension
  • Support exclusive config extensions
Changed 13
  • Kubernetes: precreate workingDir as nonroot when required
  • Kubernetes: Support allowPrivilegeEscalation and capabilities backend_options
  • Make agent reconnect retry timeout configurable
  • Docker/K8s: add config for stop timeout
  • Docker backend should retry to delete volume on in use error
  • Unify server API parameters to snake_case
Fixed 2
  • Sanitize agent introduced pipeline/workflow/step state changes and log streaming
  • Send 404 if logs are not allowed to access
Security 1
  • Prevent registering as arbitrary agents with system token
3.14.0 - 2026-05-01
❤️ Thanks to all contributors! ❤️

@6543, @Aex12, @AhmadNajiKam, @CrimsonFez, @LUKIEYF, @LoricAndre, @M31ancholy, @MartinSchmidt, @Pnkcaht, @Sim-hu, @TumbleOwlee, @api2062, @bclermont, @brainbaking, @cliffmccarthy, @confusedsushi, @dccdis, @hhamalai, @hnb2, @lephuongbg, @mehrdadbn9, @mofr93, @myers, @myselfghost, @njaaazi, @packrat386, @paulovitorbal, @qwerty287, @rfinnie, @rhafer, @samoli, @savv, @stardothosting, @utafrali, @wucm667

🔒 Security
  • docs: bump follow-redirects [#6441]
  • chore(deps): update dependency axios to v1.15.0 [security] [#6417]
  • fix(deps): update go.opentelemetry.io/otel to v1.43.0 [#6416]
  • WebUI: remove "lodash" dep [#6369]
  • Sanitize agent introduced pipeline/workflow/step state changes and log streaming [#6308]
  • Send 404 if logs are not allowed to access [#6349]
  • Prevent registering as arbitrary agents with system token [#6283]
  • Update fast-xml-parser [#6258]
  • Update dompurify and svgo [#6198]
  • Update edwards25519 [#6143]
✨ Features
  • Support one-shot agent execution mode [#6150]
  • Add external secret extension implementation [#6252]
  • Allow disabling isolated home directory for local agents [#6251]
  • Add Container Registry credential extension [#5993]
  • Support exclusive config extensions [#5978]
📈 Enhancement
  • Kubernetes: precreate workingDir as nonroot when required [#6322]
  • Kubernetes: Support allowPrivilegeEscalation and capabilities backend_options [#6307]
  • Refactor: remove Auth() from Forge interface [#6505]
  • Move wait for log uploads logic out of logger and tracer into pipeline runtime [#6471]
  • Make agent reconnect retry timeout configurable [#6470]
  • Handle re-created forge repos gracefully [#6370]
  • Cleanup server store step interface [#6476]
  • Docker/K8s: add config for stop timeout [#6445]
  • Docker backend should retry to delete volume on "in use" error [#6381]
  • Move skip pipeline by commit message into pipeline/frontend package [#6437]
  • Init server/scheduler package and use it as proxy for queue & pubsub [#6418]
  • Unify server API parameters to snake_case [#6404]
  • Add netrc option for config/registry extension [#6333]
  • Docker backend: replace docker SDK with moby SDK [#6357]
  • Deprecate commit avatar envs [#6356]
  • Refactor server/pubsub into interface [#6318]
  • Separate cron field [#6346]
  • Refactor pipeline runtime code [#6166]
  • Show Woodpecker version on pipeline details [#6316]
  • Unify import aliases [#6328]
  • Improve linter warning when step has no when block [#6314]
  • Improve error message when no workflows for manual were found [#6313]
  • Server return conflict status when stale repo causes duplicate insert [#6276]
  • Show global/org registries in org/repo registries tab [#6291]
  • Report skipped step state as soon as it's determined [#6295]
  • Only add compatibility environment variables for drone-ci to plugins [#6271]
  • Refactor: pass backend explicitly when creating pipeline engine runtime [#6268]
  • Compare admins case-insensitively [#6261]
  • Allow to cancel on failure [#6158]
  • Refactor so storage detects if Insert fails because of unique constraint [#6259]
  • Add server config for maximum log lines shown in web UI [#6250]
  • Add "Load more" pagination to pipeline list [#6200]
  • Use upstream slices.Concat and remove utils.MergeSlices [#6185]
  • Add enhanced function for error message handling in http request for configuration fetching [#5712]
  • Remove fixed badge width in UI [#6157]
  • Improve Debian packages [#6085]
  • Refactor pipeline engine [#6073]
  • Show cancellation reason in pipeline details [#6072]
  • Document required forge methods [#6049]
  • Dynamic log following [#6036]
  • Per-Workflow and Per-Workflow-Step badge generation [#5977]
  • Render MD in pipeline titles [#5999]
  • Simplify and Fix server task queue [#6017]
  • Update Architecture: move pipeline/rpc => rpc & server/{grpc => rpc} [#6012]
  • Implement retry logic in HTTP Send method [#5857]
  • CLI: Allow single output template [#5882]
  • Improve service syntax related docs and tests nits [#5991]
  • Remove deactivated secrets type from container definition [#5983]
🐛 Bug Fixes
  • fix(web): escape HTML in commit messages to prevent XSS [#6523]
  • fix(cli,server): fix trusted flags copy-paste bug and server nil pointer panic [#6501]
  • Add refname to bitbucket commit status [#6482]
  • Fix send on closed channel panic in SSE stream handlers [#6456]
  • Add WOODPECKER_FORCE_IGNORE_SERVICE_FAILURE config to preserve non-breaking behavior by default [#6448]
  • Fix race in pipeline runtime [#6451]
  • Fix race in server LogEntry logger [#6449]
  • Kubernetes: detached steps are no services [#6435]
  • Support dots in image names [#6431]
  • Fix erroneous linter error for plugin privileges [#6424]
  • Add connection timeout and graceful shutdown to agent RPC client [#6414]
  • Fix Windows container exit code handling and error checks [#6411]
  • Bitbucket: Remove usage of deprecated /user/permissions/repositories [#6401]
  • Bitbucket: Fix parsing /user/workspaces response [#6396]
  • Fix CLI exec with workflow matrix feature, where variables are not substituted. [#6162]
  • Fix enable repo with same name and owner on second forge [#6375]
  • Fix workflow being skipped and marked as failed when agent starts before server [#6361]
  • Only redirect after login [#6348]
  • Set workflow services stuck in running state to finished [#6337]
  • Fix bitbucket api deprecations [#6324]
  • Fix workflow serialize to omit skip_clone if false [#6319]
  • Fix build deb rpm packages [#6309]
  • Enable crons if created via CLI [#6228]
  • Fix message on gitlab tag event [#6196]
  • Bitbucket DC: resolve annotated tag SHA to commit SHA before posting build status [#6203]
  • Prevent leaking goroutines on canceled steps [#6186]
  • Fix when.status filter evaluation and add workflow-level support [#6183]
  • Fix status merging with skipped pipelines [#6176]
  • Update pipeline config schema [#6156]
  • Fix OAuth token refresh race condition with singleflight [#6153]
  • Use priority-based merging to determine pipeline and workflow status [#6119]
  • Only set tag env on tags [#6142]
  • Fix bitbucket email [#6102]
  • Report status for detached steps and services [#6039]
  • Don't propagate workflow error from agent back to agent [#6056]
  • Fix pipeline cancellation status handling and step state synchronization [#6011]
  • Add retry logic for CreatePipeline with backoff [#6067]
  • Fix OAuth token refresh in webhook handling for Bitbucket and GitHub [#6059]
  • Refresh token before forge calls [#6035]
  • Local backend: cleanup generated script for cmd.exe shell [#6029]
  • Local backend: setup clone step respects context [#6030]
  • Fix: Agent now gracefully handles running containers when killed [#6018]
  • Local backend: handle canceled steps case [#6008]
🧪 Tests
  • e2e test wait for grpc server teardown and stop agents [#6479]
  • Add more test cases for rpc label filter [#6483]
  • Fix flaky TestJWTManager [#6478]
  • Add e2e pipeline restart test [#6469]
  • Init minimal e2e tests [#6391]
  • Enhance datastore DB test setup [#6450]
  • Dummy backend support cancel [#6390]
  • Extend workflow integration tests [#6272]
  • Add registry service tests [#6330]
  • Add workflow integration test [#6270]
  • Increase timeout for migration tests [#6206]
  • Ignore fixtures for coverage [#6197]
  • Use tabs for indentation in embedded JSON [#6103]
  • Add tests for CLI output formatting and pipeline metadata environment variables [#6076]
  • Ignore mocks for coverage [#6074]
📚 Documentation
  • docs: better description for when.status filter [#6517]
  • docs: Add woodpecker-shellcheck lint to awesome list [#6521]
  • Lock file maintenance [#6508]
  • Update docs npm deps non-major [#6496]
  • Add Laravel Forge plugin [#6491]
  • Add 'entrypoint' property to service in schema [#6487]
  • Lock file maintenance [#6472]
  • Update dependency axios to v1.15.1 [#6468]
  • Update dependency marked to v18.0.2 [#6465]
  • Update docs npm deps non-major [#6463]
  • Update dependency marked to v18 [#6425]
  • Update docs npm deps non-major [#6422]
  • chore(deps): update dependency fuse.js to v7.3.0 [#6382]
  • chore(deps): update docs npm deps non-major [#6376]
  • chore(deps): update dependency typescript to v6 [#6336]
  • chore(deps): update docs npm deps non-major [#6335]
  • Add CI check for docs on feature PRs [#6315]
  • chore(deps): update dependency isomorphic-dompurify to v3.6.0 [#6288]
  • chore(deps): update dependency yaml to v2.8.3 [#6287]
  • Add agentscan to plugin docs [#6285]
  • Add opengrep plugin [#6282]
  • chore(deps): update docs npm deps non-major [#6281]
  • Sort glossary items alphabetically [#6255]
  • chore(deps): update docs npm deps non-major [#6240]
  • plugin: ascii junit report: renamed gh username [#6232]
  • chore(deps): update dependency svgo to v4 [#6214]
  • chore(deps): update docs npm deps non-major [#6210]
  • Update serialize-javascript [#6182]
  • chore(deps): update docs npm deps non-major [#6173]
  • chore(deps): update dependency isomorphic-dompurify to v3 [#6147]
  • chore(deps): update docs npm deps non-major [#6137]
  • Add deprecation policy [#6068]
  • fix(deps): update dependency @easyops-cn/docusaurus-search-local to ^0.55.0 [#6125]
  • Improve selinux docs [#6066]
  • Document how to ignore failure on services [#6106]
  • chore(deps): update docs npm deps non-major [#6109]
  • fix(deps): update dependency @easyops-cn/docusaurus-search-local to ^0.54.0 [#6091]
  • chore(deps): update dependency axios to v1.13.5 [#6090]
  • chore(deps): update docs npm deps non-major [#6088]
  • chore(deps): update dependency isomorphic-dompurify to v2.36.0 [#6086]
  • fix(deps): update docs npm deps non-major [#6052]
  • Update Module Interaction Diagram [#6019]
  • Add Buildah plugin link [#6050]
  • chore(deps): update docs npm deps non-major [#6045]
  • Add Homebrew package [#6037]
  • chore(deps): update dependency axios to v1.13.3 [#6010]
  • chore(deps): update docs npm deps non-major [#6000]
  • Fix docusaurus md link deprecation [#5979]
  • chore(deps): update docs npm deps non-major [#5982]
📦️ Dependency
  • Update golang-packages [#6524]
  • Update module github.com/google/go-github/v84 to v85 [#6500]
  • Update module github.com/getkin/kin-openapi to v0.136.0 [#6503]
  • Update woodpeckerci/plugin-git Docker tag to v2.9.0 [#6499]
  • Update docker.io/mysql Docker tag to v9.7.0 [#6498]
  • Update docker.io/lycheeverse/lychee Docker tag to v0.24.1 [#6497]
  • Update golang-packages to v0.36.0 [#6485]
  • Update golang-packages [#6477]
  • Update pre-commit hook rbubley/mirrors-prettier to v3.8.3 [#6462]
  • Update module k8s.io/client-go to v0.35.4 [#6460]
  • Update golang-packages [#6459]
  • Update docker.io/woodpeckerci/plugin-trivy Docker tag to v1.4.5 [#6447]
  • Update docker.io/woodpeckerci/plugin-ready-release-go Docker tag to v4.1.1 [#6440]
  • Update module gitlab.com/gitlab-org/api/client-go/v2 to v2.18.0 [#6439]
  • Update docker.io/woodpeckerci/plugin-codecov Docker tag to v2.3.1 [#6438]
  • Lock file maintenance [#6430]
  • Update dependency dotenv to v17.4.2 [#6428]
  • Update dependency simple-icons to v16.16.0 [#6427]
  • Update web npm deps non-major [#6423]
  • Update pre-commit hook rbubley/mirrors-prettier to v3.8.2 [#6421]
  • Update dependency golang to v1.26.2 [#6420]
  • fix(deps): update module github.com/docker/cli to v29.4.0+incompatible [#6403]
  • fix(deps): update module github.com/mattn/go-sqlite3 to v1.14.41 [#6397]
  • chore(deps): lock file maintenance [#6392]
  • chore(deps): update dependency dotenv to v17.4.1 [#6389]
  • chore(deps): update dependency marked to v17.0.6 [#6387]
  • chore(deps): update dependency simple-icons to v16.15.0 [#6385]
  • fix(deps): update golang-packages [#6384]
  • chore(deps): update dependency fuse.js to v7.3.0 [#6383]
  • chore(deps): update dependency @antfu/eslint-config to v8 [#6378]
  • chore(deps): update web npm deps non-major [#6377]
  • fix(deps): update module github.com/lib/pq to v1.12.2 [#6371]
  • fix(deps): update module google.golang.org/grpc to v1.80.0 [#6363]
  • fix(deps): update golang-packages [#6343]
  • chore(deps): lock file maintenance [#6344]
  • chore(deps): update dependency simple-icons to v16.14.0 [#6341]
  • chore(deps): update web npm deps non-major [#6334]
  • chore(deps): update docker.io/woodpeckerci/plugin-ready-release-go docker tag to v4.1.0 [#6331]
  • fix(deps): update module code.gitea.io/sdk/gitea to v0.24.1 [#6321]
  • chore(deps): lock file maintenance [#6306]
  • fix(deps): update module github.com/charmbracelet/huh to v2 [#6243]
  • chore(deps): update dependency golangci/golangci-lint to v2.11.4 [#6301]
  • chore(deps): update pre-commit hook golangci/golangci-lint to v2.11.4 [#6302]
  • chore(deps): update web npm deps non-major [#6279]
  • fix(deps): update module github.com/zalando/go-keyring to v0.2.7 [#6280]
  • fix(deps): update module github.com/mattn/go-sqlite3 to v1.14.37 [#6253]
  • chore(deps): update dependency jsdom to v29 [#6246]
  • chore(deps): update woodpeckerci/plugin-release docker tag to v0.3.0 [#6241]
  • chore(deps): update dependency vite to v8 [#6242]
  • chore(deps): update pre-commit non-major [#6212]
  • chore(deps): update dependency vue-i18n to v11.3.0 [#6217]
  • chore(deps): update dependency golang to v1.26.1 [#6207]
  • fix(deps): update module github.com/docker/cli to v29.3.0+incompatible [#6201]
  • fix(deps): update module github.com/yaronf/httpsign to v0.4.2 [#6188]
  • chore(deps): update dependency eslint-plugin-vue-scoped-css to v3 [#6178]
  • chore(deps): update dependency @intlify/eslint-plugin-vue-i18n to v4.3.0 [#6177]
  • fix(deps): update module github.com/google/go-github/v83 to v84 [#6172]
  • chore(deps): update postgres docker tag to v18.3 [#6169]
  • fix(deps): update golang-packages [#6160]
  • chore(deps): update dependency vue-tsc to v3.2.5 [#6141]
  • chore(deps): update docker.io/golang docker tag to v1.26 [#6121]
  • chore(deps): update docker.io/lycheeverse/lychee docker tag to v0.23.0 [#6122]
  • chore(deps): update dependency @types/node to v24.10.12 [#6087]
  • chore(deps): update eslint monorepo to v10 (major) [#6083]
  • chore(deps): update dependency @antfu/eslint-config to v7.3.0 [#6084]
  • chore(deps): update dependency @vueuse/core to v14.2.0 [#6048]
  • fix(deps): update dependency vue-router to v5 [#6046]
  • chore(deps): update woodpeckerci/plugin-git docker tag to v2.8.1 [#6006]
  • chore(deps): update docker.io/mysql docker tag to v9.6.0 [#6002]
  • fix(deps): update module github.com/urfave/cli/v3 to v3.6.2 [#5989]
Misc
  • Add s3 cache plugin to docs [#6467]
  • Fix license headers [#6205]
  • Add agentscan plugin [#6284]
View originalPermalink
How v3.14.0 went
v3.14.0-rc.2Pre-release

3.14.0-rc.2

Added 3
  • Make agent reconnect retry timeout configurable
  • Add config for stop timeout in Docker and Kubernetes backends
  • Add WOODPECKER_FORCE_IGNORE_SERVICE_FAILURE config to preserve non-breaking behavior by default
Changed 4
  • Remove Auth() from Forge interface
  • Move wait for log uploads logic out of logger and tracer into pipeline runtime
  • Handle re-created forge repos gracefully
  • Cleanup server store step interface
Fixed 7
  • Docker backend should retry to delete volume on in use error
  • Fix trusted flags copy-paste bug and server nil pointer panic
  • Add refname to bitbucket commit status
  • Fix send on closed channel panic in SSE stream handlers
  • Fix race in pipeline runtime
  • Fix race in server LogEntry logger
  • Detached steps are no services in Kubernetes
Security 1
  • Bump follow-redirects dependency
3.14.0-rc.2 - 2026-04-27
❤️ Thanks to all contributors! ❤️

@6543, @LoricAndre, @bclermont, @hhamalai, @lephuongbg, @njaaazi, @rhafer

🔒 Security
  • docs: bump follow-redirects [#6441]
📈 Enhancement
  • Refactor: remove Auth() from Forge interface [#6505]
  • Move wait for log uploads logic out of logger and tracer into pipeline runtime [#6471]
  • Make agent reconnect retry timeout configurable [#6470]
  • Handle re-created forge repos gracefully [#6370]
  • Cleanup server store step interface [#6476]
  • Docker/K8s: add config for stop timeout [#6445]
  • Docker backend should retry to delete volume on "in use" error [#6381]
🐛 Bug Fixes
  • fix(cli,server): fix trusted flags copy-paste bug and server nil pointer panic [#6501]
  • Add refname to bitbucket commit status [#6482]
  • Fix send on closed channel panic in SSE stream handlers [#6456]
  • Add WOODPECKER_FORCE_IGNORE_SERVICE_FAILURE config to preserve non-breaking behavior by default [#6448]
  • Fix race in pipeline runtime [#6451]
  • Fix race in server LogEntry logger [#6449]
  • Kubernetes: detached steps are no services [#6435]
🧪 Tests
  • e2e test wait for grpc server teardown and stop agents [#6479]
  • Add more test cases for rpc label filter [#6483]
  • Fix flaky TestJWTManager [#6478]
  • Add e2e pipeline restart test [#6469]
  • Init minimal e2e tests [#6391]
  • Enhance datastore DB test setup [#6450]
📚 Documentation
  • Lock file maintenance [#6508]
  • Update docs npm deps non-major [#6496]
  • Add Laravel Forge plugin [#6491]
  • Add 'entrypoint' property to service in schema [#6487]
  • Lock file maintenance [#6472]
  • Update dependency axios to v1.15.1 [#6468]
  • Update dependency marked to v18.0.2 [#6465]
  • Update docs npm deps non-major [#6463]
📦️ Dependency
  • Update module github.com/google/go-github/v84 to v85 [#6500]
  • Update module github.com/getkin/kin-openapi to v0.136.0 [#6503]
  • Update woodpeckerci/plugin-git Docker tag to v2.9.0 [#6499]
  • Update docker.io/mysql Docker tag to v9.7.0 [#6498]
  • Update docker.io/lycheeverse/lychee Docker tag to v0.24.1 [#6497]
  • Update golang-packages to v0.36.0 [#6485]
  • Update golang-packages [#6477]
  • Update pre-commit hook rbubley/mirrors-prettier to v3.8.3 [#6462]
  • Update module k8s.io/client-go to v0.35.4 [#6460]
  • Update golang-packages [#6459]
  • Update docker.io/woodpeckerci/plugin-trivy Docker tag to v1.4.5 [#6447]
Misc
  • Add s3 cache plugin to docs [#6467]
View originalPermalink
How v3.14.0-rc.2 went
v3.14.0-rc.1Pre-release

3.14.0-rc.1

Added 1
  • Initialize server/scheduler package and use it as proxy for queue and pubsub
Changed 2
  • Move skip pipeline by commit message into pipeline/frontend package
  • Unify API parameters to snake case
Fixed 8
  • Support dots in image names
  • Fix erroneous linter error for plugin privileges
  • Add connection timeout and graceful shutdown to agent RPC client
  • Fix Windows container exit code handling and error checks
  • Remove usage of deprecated /user/permissions/repositories endpoint in Bitbucket integration
  • Fix parsing /user/workspaces response in Bitbucket integration
  • Fix CLI exec with workflow matrix feature where variables are not substituted
  • Fix enable repo with same name and owner on second forge
Security 4
  • Update dependency axios to v1.15.0
  • Update go.opentelemetry.io/otel to v1.43.0
  • Remove lodash dependency from WebUI
  • Sanitize agent introduced pipeline/workflow/step state changes and log streaming
3.14.0-rc.1 - 2026-04-15
❤️ Thanks to all contributors! ❤️

@6543, @AhmadNajiKam, @M31ancholy, @lephuongbg, @packrat386, @qwerty287, @utafrali

🔒 Security
  • chore(deps): update dependency axios to v1.15.0 [security] [#6417]
  • fix(deps): update go.opentelemetry.io/otel to v1.43.0 [#6416]
  • WebUI: remove "lodash" dep [#6369]
  • Sanitize agent introduced pipeline/workflow/step state changes and log streaming [#6308]
📈 Enhancement
  • Move skip pipeline by commit message into pipeline/frontend package [#6437]
  • Init server/scheduler package and use it as proxy for queue&pubsub [#6418]
  • refactor(server): unify api parameters to snake case [#6404]
🐛 Bug Fixes
  • Support dots in image names [#6431]
  • Fix erroneous linter error for plugin privileges [#6424]
  • fix: add connection timeout and graceful shutdown to agent RPC client [#6414]
  • Fix Windows container exit code handling and error checks [#6411]
  • Bitbucket: Remove usage of deprecated /user/permissions/repositories [#6401]
  • Bitbucket: Fix parsing /user/workspaces response [#6396]
  • Fix CLI exec with workflow matrix feature, where variables are not substituted. [#6162]
  • Fix enable repo with same name and owner on second forge [#6375]
🧪 Tests
  • Dummy backend support cancel [#6390]
📚 Documentation
  • Update dependency marked to v18 [#6425]
  • Update docs npm deps non-major [#6422]
  • chore(deps): update dependency marked to v17.0.6 [#6386]
  • chore(deps): update dependency fuse.js to v7.3.0 [#6382]
  • chore(deps): update docs npm deps non-major [#6376]
📦️ Dependency
  • Update docker.io/woodpeckerci/plugin-ready-release-go Docker tag to v4.1.1 [#6440]
  • Update module gitlab.com/gitlab-org/api/client-go/v2 to v2.18.0 [#6439]
  • Update docker.io/woodpeckerci/plugin-codecov Docker tag to v2.3.1 [#6438]
  • Lock file maintenance [#6430]
  • Update dependency dotenv to v17.4.2 [#6428]
  • Update dependency simple-icons to v16.16.0 [#6427]
  • Update web npm deps non-major [#6423]
  • Update pre-commit hook rbubley/mirrors-prettier to v3.8.2 [#6421]
  • Update dependency golang to v1.26.2 [#6420]
  • fix(deps): update module github.com/docker/cli to v29.4.0+incompatible [#6403]
  • fix(deps): update module github.com/mattn/go-sqlite3 to v1.14.41 [#6397]
  • chore(deps): lock file maintenance [#6392]
  • chore(deps): update dependency dotenv to v17.4.1 [#6389]
  • chore(deps): update dependency marked to v17.0.6 [#6387]
  • chore(deps): update dependency simple-icons to v16.15.0 [#6385]
  • fix(deps): update golang-packages [#6384]
  • chore(deps): update dependency fuse.js to v7.3.0 [#6383]
  • chore(deps): update dependency @antfu/eslint-config to v8 [#6378]
  • chore(deps): update web npm deps non-major [#6377]
  • fix(deps): update module github.com/lib/pq to v1.12.2 [#6371]
Misc
  • Update module gitlab.com/gitlab-org/api/client-go/v2 to v2.17.0 [#6426]
View originalPermalink
How v3.14.0-rc.1 went
v3.14.0-rc.0Pre-release

3.14.0-rc.0

Added 8
  • Support one-shot agent execution mode
  • Add external secret extension implementation
  • Add Container Registry credential extension
  • Support exclusive config extensions
  • Add netrc option for config/registry extension
  • Allow to cancel on failure
  • Configure the max number of lines loaded in log webview
  • Add Load more pagination to pipeline list
Changed 5
  • Migrate to moby
  • Separate cron field
  • Show Woodpecker version on pipeline details
  • Show global/org registries in org/repo registries tab
  • Compare admins case-insensitively
Deprecated 1
  • Deprecate commit avatar envs
Security 6
  • Send 404 if logs are not allowed to access
  • Prevent registering as arbitrary agents with system token
  • Update fast-xml-parser
  • Update dompurify and svgo
  • Update edwards25519
  • Update dependency lodash to v4.17.23
3.14.0-rc.0 - 2026-04-01
❤️ Thanks to all contributors! ❤️

@6543, @CrimsonFez, @LUKIEYF, @MartinSchmidt, @Pnkcaht, @Sim-hu, @TumbleOwlee, @api2062, @brainbaking, @cliffmccarthy, @confusedsushi, @dccdis, @hhamalai, @hnb2, @mehrdadbn9, @mofr93, @myers, @myselfghost, @paulovitorbal, @qwerty287, @samoli, @savv, @stardothosting

🔒 Security
  • Send 404 if logs are not allowed to access [#6349]
  • Prevent registering as arbitrary agents with system token [#6283]
  • Update fast-xml-parser [#6258]
  • Update dompurify and svgo [#6198]
  • Update edwards25519 [#6143]
  • chore(deps): update dependency lodash to v4.17.23 [security] [#5997]
✨ Features
  • Support one-shot agent execution mode [#6150]
  • Add external secret extension implementation [#6252]
  • make it possible to disable the isolated home for local agents [#6251]
  • Add Container Registry credential extension [#5993]
  • Support exclusive config extensions [#5978]
📈 Enhancement
  • Add netrc option for config/registry extension [#6333]
  • Migrate to moby [#6357]
  • Deprecate commit avatar envs [#6356]
  • Refactor server/pubsub into interface [#6318]
  • Separate cron field [#6346]
  • Refactor pipeline runtime code [#6166]
  • Show Woodpecker version on pipeline details [#6316]
  • Unify import aliases [#6328]
  • Improve linter warning when step has no when block [#6314]
  • Improve error message when no workflows for manual were found [#6313]
  • Server return conflict status when stale repo causes duplicate insert [#6276]
  • Show global/org registries in org/repo registries tab [#6291]
  • Forward skipped step state once it's known [#6295]
  • Only add compatibility environment variables for drone-ci to plugins [#6271]
  • Creating new engine runtime now requires backend as argument [#6268]
  • Compare admins case-insensitively [#6261]
  • Allow to cancel on failure [#6158]
  • Refactor so storage detects if Insert fails because of unique constraint [#6259]
  • Add configure the max number of lines loaded in log webview [#6250]
  • Add "Load more" pagination to pipeline list [#6200]
  • refactor: pipeline runtime add description and prevent race [#6167]
  • refactor: use upstream slices.Concat and remove utils.MergeSlices [#6185]
  • Add enhanced function for error message handling in http request for configuration fetching [#5712]
  • Remove fixed badge width in UI [#6157]
  • Refactor pipeline engine [#6073]
  • Added cancel info so one can see why it was cancelled [#6072]
  • Document required forge methods [#6049]
  • Dynamic log following [#6036]
  • Per-Workflow and Per-Workflow-Step badge generation [#5977]
  • Render MD in pipeline titles [#5999]
  • Simplify and Fix server task queue [#6017]
  • fix(agent): workflow runner use shutdown context [#6021]
  • Update Architecture: move pipeline/rpc => rpc & server/{grpc => rpc} [#6012]
  • Implement retry logic in HTTP Send method [#5857]
  • CLI: Allow single output template [#5882]
  • Improve service syntax related docs and tests nits [#5991]
  • Remove deactivated secrets type from container defintion [#5983]
🐛 Bug Fixes
  • Fix workflow beeing skipped and marked as failed when agent starts before server [#6361]
  • Only redirect after login [#6348]
  • Set workflow services stuck in running state to finished [#6337]
  • Fix bitbucket api deprecations [#6324]
  • Fix workflow serialize to omit skip_clone if false [#6319]
  • Fix build deb rpm packages [#6309]
  • Enable crons if created via CLI [#6228]
  • Fix message on gitlab tag event [#6196]
  • fix(bbdc): resolve annotated tag object SHA to commit SHA before posting build status [#6203]
  • Prevent leaking goroutines on cancelled steps [#6186]
  • Independently evaluate status filter and support on workflows [#6183]
  • Fix status merging with skipped pipelines [#6176]
  • Update pipeline config schema [#6156]
  • Fix OAuth token refresh race condition with singleflight [#6153]
  • Fully merge statuses [#6119]
  • Only set tag env on tags [#6142]
  • Fix bitbucket email [#6102]
  • Detached or service steps report back too [#6039]
  • Don't propagate workflow error from agent back to agent [#6056]
  • Fix pipeline cancellation status handling and step state synchronization [#6011]
  • Add retry logic for CreatePipeline with backoff [#6067]
  • Fix OAuth token refresh in webhook handling for Bitbucket and GitHub [#6059]
  • Refresh token before forge calls [#6035]
  • Local backend: cleanup generated script for cmd.exe shell [#6029]
  • Local backend: setup clone step respects context [#6030]
  • Fix: Agent now gracefully handles running containers when killed [#6018]
  • Local backend: handle canceled steps case [#6008]
🧪 Tests
  • Extend workflow integration tests [#6272]
  • Add registry service tests [#6330]
  • Add workflow integration test [#6270]
  • Increase timeout for migration tests [#6206]
  • Ignore fixtures for coverage [#6197]
  • Use tabs for indentation in embedded JSON [#6103]
  • Add some tests [#6076]
  • Ignore mocks for coverage [#6074]
📚 Documentation
  • chore(deps): update dependency typescript to v6 [#6336]
  • chore(deps): update docs npm deps non-major [#6335]
  • Add CI check for docs on feature PRs [#6315]
  • chore(deps): update dependency isomorphic-dompurify to v3.6.0 [#6288]
  • chore(deps): update dependency yaml to v2.8.3 [#6287]
  • Add agentscan to plugin docs [#6285]
  • Adding opengrep plugin [#6282]
  • chore(deps): update docs npm deps non-major [#6281]
  • Sorted the glossary items [#6255]
  • chore(deps): update docs npm deps non-major [#6240]
  • plugin: ascii junit report: renamed gh username [#6232]
  • chore(deps): update dependency svgo to v4 [#6214]
  • chore(deps): update docs npm deps non-major [#6210]
  • Update serialize-javascript [#6182]
  • chore(deps): update docs npm deps non-major [#6173]
  • chore(deps): update dependency isomorphic-dompurify to v3 [#6147]
  • chore(deps): update docs npm deps non-major [#6137]
  • Add deprecation policy [#6068]
  • fix(deps): update dependency @easyops-cn/docusaurus-search-local to ^0.55.0 [#6125]
  • Improve selinux docs [#6066]
  • document how to ignore failure on services [#6106]
  • chore(deps): update docs npm deps non-major [#6109]
  • fix(deps): update dependency @easyops-cn/docusaurus-search-local to ^0.54.0 [#6091]
  • chore(deps): update dependency axios to v1.13.5 [#6090]
  • chore(deps): update docs npm deps non-major [#6088]
  • chore(deps): update dependency isomorphic-dompurify to v2.36.0 [#6086]
  • fix(deps): update docs npm deps non-major [#6052]
  • Update Module Interaction Diagram [#6019]
  • Add Buildah plugin link [#6050]
  • chore(deps): update docs npm deps non-major [#6045]
  • Add Homebrew package [#6037]
  • chore(deps): update dependency axios to v1.13.3 [#6010]
  • chore(deps): update docs npm deps non-major [#6000]
  • Fix docusaurus md link deprecation [#5979]
  • chore(deps): update docs npm deps non-major [#5982]
📦️ Dependency
  • fix(deps): update module google.golang.org/grpc to v1.80.0 [#6363]
  • fix(deps): update module github.com/lib/pq to v1.12.1 [#6354]
  • fix(deps): update golang-packages [#6343]
  • chore(deps): lock file maintenance [#6344]
  • chore(deps): update dependency simple-icons to v16.14.0 [#6341]
  • fix(deps): update golang-packages [#6340]
  • chore(deps): update web npm deps non-major [#6334]
  • fix(deps): update module gitlab.com/gitlab-org/api/client-go/v2 to v2.8.0 [#6332]
  • chore(deps): update docker.io/woodpeckerci/plugin-ready-release-go docker tag to v4.1.0 [#6331]
  • fix(deps): update golang-packages [#6327]
  • fix(deps): update module code.gitea.io/sdk/gitea to v0.24.1 [#6321]
  • chore(deps): lock file maintenance [#6306]
  • fix(deps): update module github.com/charmbracelet/huh to v2 [#6243]
  • chore(deps): update dependency golangci/golangci-lint to v2.11.4 [#6301]
  • chore(deps): update pre-commit hook golangci/golangci-lint to v2.11.4 [#6302]
  • chore(deps): update dependency simple-icons to v16.13.0 [#6290]
  • chore(deps): update web npm deps non-major [#6279]
  • fix(deps): update module github.com/zalando/go-keyring to v0.2.7 [#6280]
  • fix(deps): update golang-packages to v0.35.3 [#6265]
  • fix(deps): update module github.com/lib/pq to v1.12.0 [#6260]
  • fix(deps): update module github.com/mattn/go-sqlite3 to v1.14.37 [#6253]
  • fix(deps): update module gitlab.com/gitlab-org/api/client-go/v2 to v2.6.0 [#6248]
  • chore(deps): update dependency jsdom to v29 [#6246]
  • chore(deps): update dependency simple-icons to v16.12.0 [#6245]
  • chore(deps): update woodpeckerci/plugin-release docker tag to v0.3.0 [#6241]
  • chore(deps): update dependency vite to v8 [#6242]
  • fix(deps): update module golang.org/x/net to v0.52.0 [#6235]
  • chore(deps): update pre-commit non-major [#6212]
  • chore(deps): update dependency simple-icons to v16.11.0 [#6220]
  • chore(deps): update dependency vue-i18n to v11.3.0 [#6217]
  • chore(deps): update dependency golang to v1.26.1 [#6207]
  • fix(deps): update module github.com/docker/cli to v29.3.0+incompatible [#6201]
  • fix(deps): update module github.com/yaronf/httpsign to v0.4.2 [#6188]
  • chore(deps): update dependency eslint-plugin-vue-scoped-css to v3 [#6178]
  • chore(deps): update dependency @intlify/eslint-plugin-vue-i18n to v4.3.0 [#6177]
  • chore(deps): update dependency simple-icons to v16.10.0 [#6175]
  • fix(deps): update module github.com/google/go-github/v83 to v84 [#6172]
  • chore(deps): update docker.io/woodpeckerci/plugin-ready-release-go docker tag to v4 [#6171]
  • chore(deps): update postgres docker tag to v18.3 [#6169]
  • fix(deps): update golang-packages [#6160]
  • chore(deps): update golangci/golangci-lint docker tag to v2.10.1 [#6138]
  • chore(deps): update dependency vue-tsc to v3.2.5 [#6141]
  • fix(deps): update module github.com/google/go-github/v82 to v83 [#6140]
  • chore(deps): update postgres docker tag to v18.2 [#6124]
  • chore(deps): update docker.io/golang docker tag to v1.26 [#6121]
  • chore(deps): update docker.io/lycheeverse/lychee docker tag to v0.23.0 [#6122]
  • chore(deps): update dependency @types/node to v24.10.12 [#6087]
  • chore(deps): update eslint monorepo to v10 (major) [#6083]
  • chore(deps): update dependency @antfu/eslint-config to v7.3.0 [#6084]
  • chore(deps): update dependency @vueuse/core to v14.2.0 [#6048]
  • fix(deps): update dependency vue-router to v5 [#6046]
  • chore(deps): update woodpeckerci/plugin-git docker tag to v2.8.1 [#6006]
  • chore(deps): update docker.io/mysql docker tag to v9.6.0 [#6002]
  • fix(deps): update module github.com/urfave/cli/v3 to v3.6.2 [#5989]
Misc
  • Fix license headers [#6205]
  • Add agentscan plugin [#6284]
  • Improve Debian packages [#6085]
View originalPermalink
How v3.14.0-rc.0 went
v3.13.0

3.13.0

Added 6
  • Add CLI contexts
  • Allow to add a note to secrets
  • Add support for pod affinity and anti-affinity configurations in Kubernetes
  • Add public key endpoint
  • Add support for headless Kubernetes services
  • Include CI_COMMIT_TAG env in deployment events
Changed 6
  • Log addon errors
  • Allow custom variables for crons
  • Allow to disable a cron
  • Add background to status icons
  • Allow untrusted repo to still drop network for steps
  • Add events query parameter to badge URL
Fixed 6
  • Use repo-user for API call of cron
  • Close opened file on LogFind
  • Delete/Deactivate repo ignores missing repo at forge
  • Correctly update repo permissions
  • Revert repos pagination for GitHub and Bitbucket
  • Do not run crons for disabled repos
Security 2
  • Update quic-go/qpack & quic-go/quic-go
  • Fix updateRepoPermissions to cleanup old permissions
3.13.0 - 2026-01-14
❤️ Thanks to all contributors! ❤️

@6543, @Javex, @KhalidAlansary, @MartinSchmidt, @abhiyerra, @anbraten, @bentasker, @gjuoun, @gsaslis, @henkka, @jolheiser, @mogsie, @qwerty287, @sloonz, @sugar700, @tuxmainy, @xoxys

🔒 Security
  • Update quic-go/qpack & quic-go/quic-go [#5885]
  • fix: updateRepoPermissions to cleanup old permissions [#5790]
✨ Features
  • Add cli contexts [#5929]
📈 Enhancement
  • Allow to add a note to secrets [#5898]
  • Log addon errors [#5923]
  • Custom vars for crons [#5897]
  • Allow to disable a cron [#5896]
  • Add background to status icons [#5880]
  • Fix dead page and cleanup router [#5519]
  • feat(kubernetes): add support for pod affinity and anti-affinity configurations [#5854]
  • Public key endpoint [#5860]
  • Allow untrusted repo to still drop network for steps [#5820]
  • Add support for headless Kubernetes services [#5764]
  • server/forge: rename var to be more descriptive and test value [#5806]
  • add events query parameter to badge url [#5728]
  • Extract default step-builder options into server [#5785]
  • feat: include CI_COMMIT_TAG env in deployment events [#5773]
🐛 Bug Fixes
  • Use repo-user for api call of cron [#5967]
  • Close opened file on LogFind [#5961]
  • Delete/Deactivate repo ignores missing repo at forge [#5953]
  • Correctly update repo permissions [#5928]
  • Revert repos pagination for GH and BB [#5924]
  • fix: send correct argument to rpc call for name/url [#5922]
  • fix: secrets-file flag [#5909]
  • Do not run crons for disabled repos [#5884]
  • Show warning if there is no workflow to run [#5883]
  • fix(datastore): fix pagination bug in workflowsDelete skipping records [#5881]
  • Remove rounded corners in fullscreen log view [#5879]
  • Fix some ListItems and Queue view background in dark mode [#5878]
  • Make disabled checkboxes match overall style [#5869]
  • Fix CLI trusted updating [#5861]
  • Send configuration as part of the request for external configuration [#5831]
  • fix(bitbucketdatacenter): fix CI_COMMIT_PULL_REQUEST [#5769]
  • On set/get of repo make sure forge_id is set and on fetch respected [#5717]
  • Improve repair endpoints [#5767]
📚 Documentation
  • chore(deps): lock file maintenance [#5963]
  • chore(deps): update dependency @types/node to v24.10.7 [#5954]
  • chore(deps): update dependency @types/react to v19.2.8 [#5941]
  • chore(deps): update dependency @types/node to v24.10.6 [#5935]
  • chore(deps): update dependency @types/node to v24.10.5 [#5933]
  • fix(docs): update woodpecker-cli secret command [#5927]
  • Update Docs and nix-flake to reflect current dev environment [#5926]
  • Update Helm chart installation command [#5872]
  • docs: add BunnyCDN Cache Purge Plugin [#5906]
  • chore(deps): update dependency isomorphic-dompurify to v2.35.0 [#5904]
  • chore(deps): update dependency @types/node to v24.10.4 [#5862]
  • chore(deps): update docs npm deps non-major [#5855]
  • chore(deps): update docs npm deps non-major [#5829]
  • Update link for Codeberg Pages Deploy plugin [#5811]
  • chore(deps): update dependency yaml to v2.8.2 [#5803]
  • chore(deps): update dependency prettier to v3.7.3 [#5799]
  • chore(deps): update docs npm deps non-major [#5791]
  • chore(deps): update dependency isomorphic-dompurify to v2.33.0 [#5778]
  • chore(deps): update docs npm deps non-major [#5774]
📦️ Dependency
  • fix(deps): update module gitlab.com/gitlab-org/api/client-go to v1.14.0 [#5969]
  • fix(deps): update golang-packages [#5966]
  • fix(deps): update module gitlab.com/gitlab-org/api/client-go to v1.12.0 [#5962]
  • chore(deps): update dependency simple-icons to v16.5.0 [#5957]
  • fix(deps): update golang-packages [#5956]
  • chore(deps): update dependency @types/node to v24.10.7 [#5955]
  • fix(deps): update module github.com/google/go-github/v80 to v81 [#5946]
  • chore(deps): update woodpeckerci/plugin-git docker tag to v2.8.0 [#5945]
  • chore(deps): update golangci/golangci-lint docker tag to v2.8.0 [#5944]
  • chore(deps): update docker.io/woodpeckerci/plugin-codecov docker tag to v2.2.0 [#5943]
  • chore(deps): update web npm deps non-major [#5942]
  • chore(deps): update docker.io/woodpeckerci/plugin-surge-preview docker tag to v1.4.2 [#5938]
  • chore(deps): update docker.io/woodpeckerci/plugin-ready-release-go docker tag to v3.4.1 [#5937]
  • chore(deps): update docker.io/woodpeckerci/plugin-docker-buildx docker tag to v6.0.4 [#5936]
  • chore(deps): update docker.io/woodpeckerci/plugin-editorconfig-checker docker tag to v0.3.3 [#5934]
  • fix(deps): update module gitlab.com/gitlab-org/api/client-go to v1.11.0 [#5919]
  • chore(deps): lock file maintenance [#5916]
  • chore(deps): update dependency simple-icons to v16.4.0 [#5915]
  • fix(deps): update module github.com/mattn/go-sqlite3 to v1.14.33 [#5910]
  • chore(deps): lock file maintenance [#5913]
  • chore(deps): lock file maintenance [#5907]
  • chore(deps): update dependency simple-icons to v16.3.0 [#5905]
  • chore(deps): update web npm deps non-major [#5903]
  • fix(deps): update module google.golang.org/grpc to v1.78.0 [#5901]
  • chore(deps): lock file maintenance [#5895]
  • fix(deps): update module github.com/tink-crypto/tink-go/v2 to v2.6.0 [#5894]
  • chore(deps): update dependency @antfu/eslint-config to v6.7.2 [#5893]
  • chore(deps): update dependency vue-i18n to v11.2.7 [#5892]
  • chore(deps): update dependency vue-tsc to v3.2.0 [#5891]
  • Migrate to maintained tink-go [#5886]
  • chore(deps): update web npm deps non-major [#5887]
  • fix(deps): update module gitlab.com/gitlab-org/api/client-go to v1.10.0 [#5888]
  • fix(deps): update golang-packages [#5877]
  • fix(deps): update module gitlab.com/gitlab-org/api/client-go to v1.9.0 [#5873]
  • fix(deps): update golang-packages [#5870]
  • chore(deps): lock file maintenance [#5868]
  • fix(deps): update module github.com/gdgvda/cron to v0.6.0 [#5867]
  • chore(deps): update dependency @intlify/unplugin-vue-i18n to v11.0.3 [#5866]
  • chore(deps): update dependency @antfu/eslint-config to v6.7.1 [#5865]
  • chore(deps): update web npm deps non-major [#5864]
  • chore(deps): update dependency @types/node to v24.10.4 [#5863]
  • chore(deps): update web npm deps non-major [#5859]
  • chore(deps): update pre-commit hook igorshubovych/markdownlint-cli to v0.47.0 [#5858]
  • fix(deps): update golang-packages [#5856]
  • fix(deps): update golang-packages [#5851]
  • fix(deps): update golang-packages [#5849]
  • chore(deps): lock file maintenance [#5847]
  • chore(deps): update web npm deps non-major [#5837]
  • chore(deps): update dependency golangci/golangci-lint to v2.7.2 [#5845]
  • chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.2 [#5846]
  • fix(deps): update module gitlab.com/gitlab-org/api/client-go to v1.7.0 [#5840]
  • fix(deps): update module github.com/google/go-github/v79 to v80 [#5838]
  • chore(deps): update pre-commit non-major [#5836]
  • chore(deps): update docker.io/lycheeverse/lychee docker tag to v0.22.0 [#5833]
  • chore(deps): update dependency golangci/golangci-lint to v2.7.1 [#5832]
  • chore(deps): update docker.io/alpine docker tag to v3.23 [#5830]
  • chore(deps): update docker.io/woodpeckerci/plugin-trivy docker tag to v1.4.4 [#5828]
  • chore(deps): update dependency golang to v1.25.5 [#5827]
  • fix(deps): update golang-packages [#5816]
  • fix(deps): update module gitlab.com/gitlab-org/api/client-go to v1.3.1 [#5812]
  • fix(deps): update module gitlab.com/gitlab-org/api/client-go to v1.3.0 [#5807]
  • chore(deps): lock file maintenance [#5808]
  • chore(deps): update pre-commit hook rbubley/mirrors-prettier to v3.7.3 [#5804]
  • fix(deps): update dependency simple-icons to v16 [#5802]
  • fix(deps): update module github.com/docker/cli to v29.1.1+incompatible [#5801]
  • chore(deps): update dependency prettier to v3.7.3 [#5800]
  • chore(deps): update pre-commit hook rbubley/mirrors-prettier to v3.7.2 [#5795]
  • fix(deps): update module gitlab.com/gitlab-org/api/client-go to v1 [#5794]
  • chore(deps): update web npm deps non-major [#5792]
  • chore(deps): update pre-commit hook rbubley/mirrors-prettier to v3.7.1 [#5793]
  • fix(deps): update module github.com/docker/cli to v29.1.0+incompatible [#5789]
  • fix(deps): update golang-packages [#5787]
  • chore(deps): lock file maintenance [#5784]
  • chore(deps): update dependency simple-icons to v15.22.0 [#5782]
  • chore(deps): update dependency vue-tsc to v3.1.5 [#5781]
  • chore(deps): update dependency @types/lodash to v4.17.21 [#5780]
  • chore(deps): update dependency vue-i18n to v11.2.1 [#5779]
  • chore(deps): update pre-commit hook igorshubovych/markdownlint-cli to v0.46.0 [#5776]
  • chore(deps): update web npm deps non-major [#5775]
  • fix(deps): update golang-packages [#5770]
  • fix(deps): update golang-packages [#5765]
Misc
  • Revert "Send configuration as part of the request for external configuration" [#5835]
  • Allow packagers to set WebUI root to custom path [#5809]
  • fix(queue): force agent cancellation on lease expiration [#5823]
  • Extract interval into composition [#5818]
  • Fix outdated Makefile target [#5817]
  • Makefile: add target to generate man pages [#5810]
  • Split make install targets [#5796]
  • Use golangci docker image [#5797]
  • Clarify envvars documentation [#5788]
View originalPermalink
How v3.13.0 went
v3.12.0

3.12.0

Added 9
  • Get changes from all commits in a single push event for Bitbucket Server
  • Support file changes in Bitbucket Cloud
  • Log agent version on startup
  • Add Header User-Agent for request client
  • Make local backend work with cli exec
  • Make pipeline/frontend/yaml/* types able to be marshaled back to YAML
Changed 2
  • Switch from BoolTrue to optional.Option[bool]
  • Enhance log stream reading and writing and handle new lines and max-size
Fixed 8
  • Fix crash when a HTTP/2 client goes away on SSE streams
  • Fix badge label padding
  • Fix workflow path filter for GitHub
  • Fix secret on new forge
  • Revert to forge internal implementation of pagination for Repos() and Teams() for gitea/forgejo
  • Fix panic due to invalid memory address when injectSecretRecursive encounters nil values
  • Fix agents not needing to specify a required label twice
  • Fix nil pointer dereference during GitHub Hook parsing
Security 1
  • Update dependency vite to v7.1.11
3.12.0 - 2025-11-18
❤️ Thanks to all contributors! ❤️

@1001Josias, @6543, @JohnWalkerx, @LUKIEYF, @MeurillonGuillaume, @Utkarsh9571, @Xuxe, @anbraten, @chamburr, @henkka, @hhamalai, @marcusramberg, @pixelateapotato, @qwerty287, @yyewolf

🔒 Security
  • chore(deps): update dependency vite to v7.1.11 [security] [#5660]
📈 Enhancement
  • feat(bitbucketserver): get changes from all commits in a single push event [#5748]
  • Support for file changes in Bitbucket Cloud [#5730]
  • feat(agent): log agent version on startup [#5724]
  • Add Header User-Agent for request client [#5664]
  • Switch from BoolTrue to optional.Option[bool] [#5693]
  • Enhancement log stream reading and writing and handle new lines and max-size [#5683]
  • Make local backend work with cli exec [#4102]
  • Make pipeline/frontend/yaml/* types able to be marshaled back to YAML [#1835]
  • Add log service addon [#5507]
  • Support multiple users with same login name but different forges [#5612]
  • Release linux/riscv64 binaries [#5663]
🐛 Bug Fixes
  • Fix crash when a HTTP/2 client goes away on SSE streams [#5738]
  • Add created icon [#5747]
  • Fix badge label padding [#5725]
  • Fix workflow path filter for GitHub [#5721]
  • Fix secret on new forge [#5715]
  • Revert to forge internal implementation of pagination for Repos() and Teams() for gitea/forgejo [#5679]
  • fix: panic due to an invalid memory address when injectSecretRecursive encounters nil values [#5699]
  • Fix so agents don't need to specify a required label twice [#5684]
  • Fix nil pointer dereference during GitHub Hook parsing [#5681]
  • Allow username to be used with multiple forges [#5676]
  • Create GitHub forge via WebUI fails to be loaded [#5675]
  • Bitbucket: ignore push hooks with no changes propperly [#5672]
  • fix(bitbucketdatacenter): prevent adding new repos with empty branch [#5669]
  • cli: show description of default value for --backend-local-temp-dir instead of value [#5656]
📚 Documentation
  • Add docs for 3.12 [#5763]
  • chore(deps): lock file maintenance [#5760]
  • chore(deps): update docs npm deps non-major [#5752]
  • chore(deps): update docs npm deps non-major [#5733]
  • Fix typo in about.md [#5716]
  • docs: add warning about 27-axis matrix limit [#5700]
  • chore(deps): update dependency isomorphic-dompurify to v2.31.0 [#5709]
  • chore(deps): update dependency @types/node to v24 [#5706]
  • chore(deps): update docs npm deps non-major [#5701]
  • Update path to plugins moved to woodpecker-community [#5698]
  • chore(deps): update docs npm deps non-major [#5688]
  • docs(plugins): add github-app-token and github-comment plugins to repository [#5671]
📦️ Dependency
  • fix(deps): update module github.com/urfave/cli/v3 to v3.6.1 [#5759]
  • chore(deps): update dependency vue-tsc to v3.1.4 [#5758]
  • fix(deps): update module github.com/google/go-github/v78 to v79 [#5757]
  • fix(deps): update module github.com/docker/cli to v29 [#5756]
  • chore(deps): update postgres docker tag to v18.1 [#5755]
  • chore(deps): update web npm deps non-major [#5754]
  • chore(deps): update pre-commit hook golangci/golangci-lint to v2.6.2 [#5753]
  • chore(deps): update dependency golangci/golangci-lint to v2.6.2 [#5751]
  • fix(deps): update golang-packages [#5746]
  • fix(deps): update golang-packages [#5745]
  • fix(deps): update module github.com/urfave/cli/v3 to v3.6.0 [#5743]
  • chore(deps): lock file maintenance [#5744]
  • fix(deps): update golang-packages [#5741]
  • chore(deps): update dependency simple-icons to v15.20.0 [#5742]
  • fix(deps): update module github.com/google/go-github/v77 to v78 [#5739]
  • fix(deps): update module github.com/google/go-github/v76 to v77 [#5737]
  • fix(deps): update dependency marked to v17 [#5736]
  • chore(deps): update web npm deps non-major [#5735]
  • chore(deps): update pre-commit hook golangci/golangci-lint to v2.6.1 [#5734]
  • chore(deps): update dependency golangci/golangci-lint to v2.6.1 [#5732]
  • chore(deps): update dependency golang to v1.25.4 [#5731]
  • fix(deps): update golang-packages to v28.5.2+incompatible [#5723]
  • fix(deps): update module gitlab.com/gitlab-org/api/client-go to v0.159.0 [#5720]
  • fix(deps): update module gitlab.com/gitlab-org/api/client-go to v0.158.0 [#5718]
  • chore(deps): lock file maintenance [#5711]
  • chore(deps): update dependency golangci/golangci-lint to v2.6.0 [#5702]
  • chore(deps): update web npm deps non-major [#5705]
  • fix(deps): update module github.com/yaronf/httpsign to v0.4.1 [#5708]
  • chore(deps): update node.js to v24 [#5707]
  • chore(deps): update pre-commit hook golangci/golangci-lint to v2.6.0 [#5704]
  • chore(deps): update gitea/gitea docker tag to v1.25 [#5703]
  • fix(deps): update module gitlab.com/gitlab-org/api/client-go to v0.157.1 [#5697]
  • chore(deps): lock file maintenance [#5695]
  • chore(deps): update web npm deps non-major [#5694]
  • fix(deps): update dependency @vueuse/core to v14 [#5692]
  • chore(deps): update dependency vitest to v4 [#5691]
  • chore(deps): update docker.io/mysql docker tag to v9.5.0 [#5690]
  • chore(deps): update web npm deps non-major [#5689]
  • chore(deps): update dependency mvdan/gofumpt to v0.9.2 [#5687]
  • fix(deps): update github.com/urfave/cli-docs/v3 digest to 72b87d1 [#5686]
  • fix(deps): update module code.gitea.io/sdk/gitea to v0.22.1 [#5682]
  • fix(deps): update module github.com/urfave/cli/v3 to v3.5.0 [#5668]
  • fix(deps): update module xorm.io/xorm to v1.3.11 [#5662]
  • chore(deps): lock file maintenance [#5657]
Misc
  • Also create image preview on label change only [#5673]
  • Add migration tests for postgres [#669]
View originalPermalink
How v3.12.0 went
View all

Discussion