github woodpecker-ci/woodpecker v3.0.0-rc.0
v3.0.0-rc1

pre-release21 hours ago

A curated changelog is currently being prepared. Please check the Migration notes PR for required changes when upgrading from 2.x to 3.x.

We welcome feedback for the new version to ship a robust final 3.0.

3.0.0-rc1 - 2024-12-14

❤️ Thanks to all contributors! ❤️

@6543, @Fishbowler, @M0Rf30, @anbraten, @cduchenoy, @fernandrone, @gnowland, @greenaar, @hg, @j04n-f, @jenrik, @johanneskastl, @jolheiser, @lafriks, @lukashass, @meln5674, @not-my-profile, @pat-s, @qwerty287, @smainz, @tori-27, @tsufeki, @xoxys, @xtexChooser, @zc-devs

💥 Breaking changes

  • Drop native Let's Encrypt support [#4541]
  • Set new default approval mode based on repo visibility [#4456]
  • Do not set empty environment variables [#4193]
  • Unify cli commands and flags [#4481]
  • Move pipeline logs command [#4480]
  • Fix woodpecker-go repo model to match server [#4479]
  • Restructure cli commands [#4467]
  • Add pagination options to all supported endpoints in sdk [#4463]
  • Allow to set custom trusted clone plugins [#4352]
  • Add PipelineListsOptions to woodpecker-go [#3652]
  • Remove secrets in favor of from_secret [#4363]
  • Kubernetes | Docker: Add support for rootless images [#4151]
  • Split repo trusted setting [#4025]
  • Move docker resource limit settings from server to agent [#3174]
  • Set /woodpecker as default workdir for the woodpecker-cli container [#4130]
  • Require upgrade from 2.x [#4112]
  • Don't expose task data via api [#4108]
  • Remove some ci environment variables [#3846]
  • Remove all default privileged plugins [#4053]
  • Add option to filter secrets by plugins with specific tags [#4069]
  • Remove old pipeline options [#4016]
  • Remove various deprecations [#4017]
  • Drop repo name fallback for hooks [#4013]
  • Improve local backend detection [#4006]
  • Refactor JSON and SDK fields [#3968]
  • Migrate to maintained cron lib and remove seconds [#3785]
  • Switch to profile-based AppArmor configuration [#4008]
  • Remove Kubernetes default image pull secret name regcred [#4005]
  • Drop "WOODPECKER_WEBHOOK_HOST" env var and adjust docs [#3969]
  • Drop version in schema [#3970]
  • Update docker to v27 [#3972]
  • Require gitlab 12.4 [#3966]
  • Migrate to maintained httpsign library [#3839]
  • Remove WOODPECKER_DEV_OAUTH_HOST and WOODPECKER_DEV_GITEA_OAUTH_URL [#3961]
  • Remove deprecated pipeline keywords: pipeline:, platform:, branches: [#3916]
  • server: remove old unused routes [#3845]
  • CLI: remove step-id and add step-number as option to logs [#3927]

🔒 Security

  • Add server config to disable user registered agents [#4206]
  • chore: fix http-proxy-middleware CVE [#4257]
  • Allow altering trusted clone plugins and filter them via tag [#4074]
  • Update gitea sdk [#4012]
  • Update Forgejo SDK [#3948]

✨ Features

  • Add user as docker backend_option [#4526]
  • Implement org/user agents [#3539]
  • Replay pipeline using cli exec by downloading metadata [#4103]
  • Update clone plugin to support sha256 [#4136]

🐛 Bug Fixes

  • Fix BB ambiguous commit status key [#4544]
  • fix: addon JSON pointers [#4508]
  • Fix apparmorProfile being ignored when it's the only field [#4507]
  • Sanitize strings in table output [#4466]
  • Cleanup openapi generation [#4331]
  • Support github refresh tokens [#3811]
  • Fix not working overflow on repo list message [#4420]
  • Fix avatar column type [#4340]
  • fix error="io: read/write on closed pipe" on k8s backend [#4281]
  • Move update notifier dot into settings button [#4334]
  • gitea: add check if pull_request webhook is missing pull info [#4305]
  • Refresh token before loading branches [#4284]
  • Delete GitLab webhooks with partial URL match [#4259]
  • Increase WOODPECKER_FORGE_TIMEOUT to fix config fetching for GitLab [#4262]
  • Ensure cli exec has by default not the same prefix [#4132]
  • Fix repo add loading spinner [#4135]
  • Fix migration registries table [#4111]
  • Wait for tracer to be done before finishing workflow [#4068]
  • Fix schema with detached steps [#4066]
  • Fix schema with commands and entrypoint [#4065]
  • Read long log lines from file storage correctly [#4048]
  • Set refspec for gitlab MR [#4021]
  • Set CI_PREV_COMMIT_{SOURCE,TARGET}_BRANCH as mentioned in the documentation [#4001]
  • [Bitbucket Datacenter] Return empty list instead of null [#4010]
  • Fix BB PR pipeline ref [#3985]
  • Change Bitbucket PR hook to point the source branch, commit & ref [#3965]
  • Add updated, merged and declined events to bb webhook activation [#3963]
  • Fix login via navbar [#3962]
  • Truncate creation in list [#3952]
  • Fix panic if forge is unreachable [#3944]

📚 Documentation

  • Show client flags [#4542]
  • chore(deps): update react monorepo to v19 (major) [#4523]
  • chore(deps): update docs npm deps non-major [#4519]
  • chore(deps): lock file maintenance [#4502]
  • chore(deps): lock file maintenance [#4501]
  • chore(deps): update dependency isomorphic-dompurify to v2.18.0 [#4493]
  • fix(deps): update docs npm deps non-major [#4484]
  • Add migration notes for restructured cli commands [#4476]
  • Various fixes for awesome.md [#4448]
  • chore(deps): lock file maintenance [#4453]
  • chore(deps): update dependency isomorphic-dompurify to v2.17.0 [#4449]
  • fix(deps): update docs npm deps non-major [#4441]
  • chore(deps): update dependency @docusaurus/tsconfig to v3.6.2 [#4433]
  • chore(deps): lock file maintenance [#4435]
  • Bump minimum nodejs to v20 [#4417]
  • chore(deps): lock file maintenance [#4402]
  • Add microsoft teams plugin [#4400]
  • fix(deps): update docs npm deps non-major [#4394]
  • chore(deps): update dependency @types/node to v22 [#4395]
  • chore(deps): update dependency marked to v15 [#4396]
  • Podman is not (official) supported [#4367]
  • Add EditorConfig-Checker Plugin to docs [#4371]
  • Update netrc option description [#4342]
  • Fix deployment event note [#4283]
  • Improve migration notes [#4291]
  • Add instructions how to build images locally [#4277]
  • chore(deps): update docs npm deps non-major [#4238]
  • Correct spelling [#4279]
  • Add Telegram plugin [#4229]
  • Remove archived plugin [#4227]
  • Use "Woodpecker Authors" as copyright on website [#4225]
  • chore(deps): update dependency cookie to v1 [#4224]
  • fix(deps): update docs npm deps non-major [#4221]
  • Fix errant apostrophe in docker-compose documentation [#4203]
  • chore(deps): lock file maintenance [#4186]
  • chore(deps): update dependency concurrently to v9 [#4176]
  • chore(deps): update docs npm deps non-major [#4164]
  • Update image filter error message [#4143]
  • Docs: reference to built-in docker compose and remove deprecated version from compose examples [#4123]
  • directory key is allowed for services [#4127]
  • [docs] Removes dot prefix from pipeline configuration filenames [#4105]
  • Use kaniko plugin in docs as example [#4072]
  • Add some posts and videos [#4070]
  • Move event type descriptions from Terminology to Workflow Syntax [#4062]
  • Add community posts from discussions [#4058]
  • Add a pull request template with some basic guidelines [#4055]
  • Add examples of CI environment variable values [#4009]
  • Fix inline author warning [#4040]
  • Updated Secrets image filter docs [#4028]
  • Update dependency marked to v14 [#4036]
  • Update docs npm deps non-major [#4033]
  • Overhaul README [#3995]
  • fix(deps): update docs npm deps non-major [#3990]
  • Add spellchecking for docs [#3787]

📈 Enhancement

  • Use docusaurus faster [#4528]
  • Use pagination helper to list pipelines in cli [#4478]
  • Some UI improvements [#4497]
  • Add status filter to list pipeline API [#4494]
  • Use JS-native date/time formatting [#4488]
  • Add pipeline purge command to cli [#4470]
  • Add option to limit the resultset returned by paginate helper [#4475]
  • Add filter to list repository pipelines API [#4416]
  • Increase log level when failing to fetch YAML [#4107]
  • Trim space to all config flags that allow to read value from file [#4468]
  • Change default icon size to 20 [#4458]
  • Add visibility icon to repo list [#4460]
  • Unify pipeline status icons [#4414]
  • Improve project settings descriptions [#4410]
  • Add count badge to visualize counters in tab title [#4419]
  • Redesign repo list and include last pipeline [#4386]
  • Use KeyValueEditor for DeployPipelinePopup too [#4412]
  • Use separate routes instead of anchors [#4285]
  • Untangle settings / header slots [#4403]
  • Fix responsiveness of the settings template [#4383]
  • Use squared spinner for active pipelines [#4379]
  • Add server configuration option to add default set of labels for workflows that has no labels specified [#4326]
  • Add cli lint option to treat warnings as errors [#4373]
  • Improve error message for wrong secrets / environment config [#4359]
  • Improve linter messages in UI [#4351]
  • Pass settings to services [#4338]
  • Inline model types for migrations [#4293]
  • Add options to control the database connections (open,idle,timeout) [#4212]
  • Move Queue creation behind new func that evaluates queue type [#4252]
  • Add additional error message on swagger v2 to v3 convert [#4254]
  • Deprecate secrets [#4235]
  • Agent edit/detail view: change the help url based on the backend [#4219]
  • Use middleware to load org [#4208]
  • Assign workflows to agents with the best label matches [#4201]
  • Report custom labels set by agent admins back [#4141]
  • Highlight invalid entries in manual pipeline trigger [#4153]
  • Print agent labels in debug mode [#4155]
  • Implement registries for Kubernetes backend [#4092]
  • Correct cli exec flags and remove ineffective ones [#4129]
  • Set repo user to repairing user when old user is missing [#4128]
  • Restart tasks on dead agents sooner [#4114]
  • Adjust cli exec metadata structure to equal server metadata [#4119]
  • Allow to restart declined pipelines [#4109]
  • Add indices to repo table [#4087]
  • Add systemd unit files to the RPM/DEB packages [#3986]
  • Duplicate key workflow_id in the agent logs [#4046]
  • Improve error on config loading [#4024]
  • Show error if secret name is missing [#4014]
  • Show error returned from API [#3980]
  • Move manual popup to own page [#3981]
  • Fail on InvalidImageName [#4007]
  • Use Bitbucket PR title for pipeline message [#3984]
  • Show logs if step has error [#3979]
  • Refactor docker backend and add more test coverage [#2700]
  • Make cli plugin log purge recognize steps by name [#3953]
  • Pin page size [#3946]
  • Improve cron list [#3947]
  • Add PULLREQUEST_DRONE_PULL_REQUEST drone env [#3939]
  • Make agent gRPC errors distinguishable [#3936]

📦️ Dependency

  • fix(deps): update module google.golang.org/grpc to v1.69.0 [#4563]
  • fix(deps): update golang-packages [#4553]
  • Update kin-openapi [#4560]
  • fix(deps): update module golang.org/x/crypto to v0.31.0 [security] [#4557]
  • fix(deps): update golang-packages [#4546]
  • chore(deps): update docker.io/woodpeckerci/plugin-ready-release-go docker tag to v3.1.0 [#4536]
  • chore(deps): update docker.io/curlimages/curl docker tag to v8.11.0 [#4530]
  • fix(deps): update golang-packages [#4496]
  • chore(deps): update docker.io/woodpeckerci/plugin-docker-buildx docker tag to v5.1.0 [#4524]
  • chore(deps): update docker.io/woodpeckerci/plugin-prettier docker tag to v1 [#4522]
  • chore(deps): update docker.io/alpine docker tag to v3.21 [#4520]
  • chore(deps): update dependency vite to v6 [#4485]
  • chore(deps): update docker.io/woodpeckerci/plugin-ready-release-go docker tag to v3 [#4506]
  • chore(deps): update docker.io/woodpeckerci/plugin-surge-preview docker tag to v1.3.3 [#4495]
  • fix(deps): update golang-packages [#4477]
  • fix(deps): update dependency @vueuse/core to v12 [#4486]
  • fix(deps): update module github.com/google/go-github/v66 to v67 [#4487]
  • chore(deps): update woodpeckerci/plugin-release docker tag to v0.2.2 [#4483]
  • chore(deps): update pre-commit hook golangci/golangci-lint to v1.62.2 [#4482]
  • fix(deps): update golang-packages [#4452]
  • fix(deps): update golang-packages [#4411]
  • chore(deps): update pre-commit hook igorshubovych/markdownlint-cli to v0.43.0 [#4443]
  • chore(deps): update postgres docker tag to v17.2 [#4442]
  • chore(deps): update docker.io/woodpeckerci/plugin-trivy docker tag to v1.3.0 [#4434]
  • chore(deps): update web npm deps non-major [#4432]
  • fix(deps): update golang-packages [#4401]
  • chore(deps): update web npm deps non-major [#4391]
  • fix(deps): update dependency @intlify/unplugin-vue-i18n to v6 [#4397]
  • chore(deps): update pre-commit hook golangci/golangci-lint to v1.62.0 [#4390]
  • chore(deps): update postgres docker tag to v17.1 [#4389]
  • chore(deps): update docker.io/techknowlogick/xgo docker tag to go-1.23.x [#4388]
  • chore(config): migrate renovate config [#4296]
  • chore(deps): update docker.io/woodpeckerci/plugin-trivy docker tag to v1.2.0 [#4289]
  • chore(deps): update docker.io/techknowlogick/xgo docker tag to go-1.23.x [#4282]
  • fix(deps): update golang-packages [#4251]
  • fix(deps): update web npm deps non-major [#4258]
  • chore(deps): update web npm deps non-major [#4250]
  • chore(deps): update node.js to v23 [#4239]
  • chore(deps): update web npm deps non-major [#4237]
  • chore(deps): update docker.io/mysql docker tag to v9.1.0 [#4236]
  • fix(deps): update dependency simple-icons to v13.14.0 [#4226]
  • fix(deps): update web npm deps non-major [#4223]
  • fix(deps): update golang-packages [#4215]
  • fix(deps): update golang-packages [#4210]
  • fix(deps): update module github.com/google/go-github/v65 to v66 [#4205]
  • fix(deps): update dependency vue-i18n to v10.0.4 [#4200]
  • chore(deps): update pre-commit hook pre-commit/pre-commit-hooks to v5 [#4192]
  • fix(deps): update dependency simple-icons to v13.13.0 [#4196]
  • chore(deps): update web npm deps non-major [#4174]
  • chore(deps): update docker.io/postgres docker tag to v17 [#4179]
  • fix(deps): update dependency @intlify/unplugin-vue-i18n to v5 [#4183]
  • fix(deps): update dependency @vueuse/core to v11 [#4184]
  • chore(deps): update docker.io/woodpeckerci/plugin-codecov docker tag to v2.1.5 [#4167]
  • fix(deps): update module github.com/google/go-github/v64 to v65 [#4185]
  • chore(deps): update docker.io/mysql docker tag to v9 [#4178]
  • chore(deps): update docker.io/alpine docker tag to v3.20 [#4169]
  • fix(deps): update github.com/urfave/cli/v3 digest to 20ef97b [#4166]
  • chore(deps): update docker.io/woodpeckerci/plugin-surge-preview docker tag to v1.3.2 [#4168]
  • chore(deps): update woodpeckerci/plugin-release docker tag to v0.2.1 [#4175]
  • chore(deps): update woodpeckerci/plugin-ready-release-go docker tag to v2 [#4182]
  • fix(deps): update github.com/muesli/termenv digest to 82936c5 [#4165]
  • chore(deps): update postgres docker tag to v17 [#4181]
  • chore(deps): update pre-commit non-major [#4173]
  • chore(deps): update docker.io/golang docker tag to v1.23 [#4170]
  • chore(deps): update node.js to v22 [#4180]
  • fix(deps): update golang-packages [#4161]
  • chore(deps): update dependency @antfu/eslint-config to v3 [#4095]
  • chore(deps): update dependency jsdom to v25 [#4094]
  • chore(deps): update docker.io/golang docker tag to v1.23 [#4081]
  • chore(deps): update docker.io/woodpeckerci/plugin-prettier docker tag to v0.2.0 [#4082]
  • fix(deps): update module github.com/google/go-github/v63 to v64 [#4073]
  • fix(deps): update golang-packages [#4059]
  • Update github.com/urfave/cli/v3 digest to fc07a8c [#4043]
  • Update woodpeckerci/plugin-git Docker tag to v2.5.2 [#4041]
  • Update web npm deps non-major [#4034]
  • Update dependency simple-icons to v13 [#4037]
  • chore(deps): lock file maintenance [#3991]
  • fix(deps): update golang-packages [#3958]

Misc

  • Move link checks into cron-curated issue dashboard [#4515]
  • Add settings title action [#4499]
  • Use same default sort for repo and org repo list [#4461]
  • Add dns config option to official feature set [#4418]
  • Remove renovate branch triggers [#4437]
  • Improve tab layout and add hover effect [#4431]
  • Dont run pipeline on push events to renovate branches [#4406]
  • Harden and correct fifo task queue tests [#4377]
  • Kubernetes documentation enhancements [#4374]
  • Use release-helper for release/* branches [#4301]
  • Fix wording for privileged plugins linter error [#4280]
  • Fix renovate support for xgo [#4276]
  • Improve nix development environment [#4256]
  • [pre-commit.ci] pre-commit autoupdate [#4209]
  • Add .lycheeignore [#4154]
  • Add eslint-plugin-promise back [#4022]
  • Improve wording [#3951]
  • Fix typos and optimize wording [#3940]

Don't miss a new woodpecker release

NewReleases is sending notifications on new releases.