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 offrom_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
andWOODPECKER_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]