111 Commits
Author SHA1 Message Date
Rayan Salhabandcyphercodes 2bc7837703 feat(server): add unix socket permission option (#6839)
Co-authored-by: cyphercodes <cyphercodes@users.noreply.github.com>
2026-07-13 21:28:47 +02:00
renovate[bot]andlnx01 adbc365be3 Update module github.com/cenkalti/backoff/v6 to v7 (#6812)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-04 07:31:37 +02:00
833d0374b3 Update module github.com/cenkalti/backoff/v5 to v6 (#6752)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: qwerty287 <qwerty287@posteo.de>
Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com>
2026-06-20 19:26:23 +02:00
Eric Zhou dc916185d7 Add Prometheus metrics for pipeline step duration and failures (#6738)
- Add `WOODPECKER_STEP_LEVEL_METRICS` server option.
- Move server metrics collection into the `server/metric`.
- Export step-level Prometheus metrics when enabled:
  - `woodpecker_step_failures_total{pipeline,repo,step}`
  - `woodpecker_step_duration_seconds{pipeline,repo,step}`
2026-06-18 22:28:17 +02:00
6543 afb5820a4d Support Unix Sockets (#6721) 2026-06-14 18:44:04 +02:00
qwerty287and6543 79cc07265e Unify import aliases (#6328)
Co-authored-by: 6543 <6543@obermui.de>
2026-03-28 15:45:23 +01:00
David Ashby 5cc089e216 Always collect metrics (reverts #4667) (#5213) 2025-05-29 01:28:33 +02:00
e7243e3ff5 fix(deps): update golang-packages (#5111)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Robert Kaussow <mail@thegeeklab.de>
2025-04-22 10:55:07 +02:00
Robert Kaussow 9869f1be75 Add backoff retry for store setup (#4964) 2025-03-17 07:16:16 +01:00
qwerty287 7d64138855 Do not start metrics collector if metrics are disabled (#4667) 2025-01-05 13:46:08 +02:00
qwerty287andRobert Kaussow 81b74025d4 Update Go imports paths (#4605)
Co-authored-by: Robert Kaussow <mail@thegeeklab.de>
2024-12-22 10:44:34 +01:00
qwerty287 355ebcd508 Drop native Let's Encrypt support (#4541) 2024-12-09 18:54:36 +01:00
6543 cd5f6f71a2 Migrate to github.com/urfave/cli/v3 (#2951) 2024-07-18 01:26:35 +02:00
6543 757f5a58e2 Gracefully shutdown server (#3896) 2024-07-14 01:46:01 +02:00
6543 28cd815c42 Move setupEvilGlobals from server.go into setup.go (#3899) 2024-07-13 13:11:07 +02:00
Anbraten b12d676546 Allow login using multiple forges (#3822) 2024-07-13 01:41:35 -07:00
Anbraten 2bda19024e Use proper oauth state (#3847) 2024-06-27 16:52:09 +02:00
qwerty287andAnbraten c72468478d Allow to store logs in files (#3568)
Co-authored-by: Anbraten <6918444+anbraten@users.noreply.github.com>
2024-06-06 14:34:57 +02:00
4ec046e415 Spellcheck "server/*" (#3753)
Co-authored-by: Anbraten <6918444+anbraten@users.noreply.github.com>
Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com>
2024-06-04 08:30:54 +02:00
5527d9bf86 Cleanup server env settings (#3670)
Co-authored-by: Robert Kaussow <mail@thegeeklab.de>
Co-authored-by: Robert Kaussow <xoxys@rknet.org>
2024-05-15 15:45:08 +02:00
Anbratenandqwerty287 d494b6a959 Use forge from db (#1417)
This is the first step towards support for multiple forges (#138). It
inserts a forge using the currently existing env varaibles into db and
uses this forge from db later on in all places of the code.

closes #621

addresses #138 

# TODO
- [x] add forges table
- [x] add id of forge to repo
- [x] use forge of repo
- [x] add forge from env vars to db if not exists
- [x] migrate repo.ForgeID to the newly generated forge
- [x] support cache with forge from repo
- [x] maybe add forge loading cache? (use LRU cache for forges, I expect
users to have less than 10 forges normally)

---------

Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com>
2024-04-16 08:04:55 +02:00
Anbraten 82e1ce937c Refactor internal services (#915) 2024-02-11 18:42:33 +01:00
qwerty287 b82790d54c Remove some interfaces (#3220) 2024-01-19 16:20:35 +01:00
qwerty287 b9f6f3f9fb Replace goimports with gci (#3202)
`gci` seems to be much more strict.
2024-01-14 18:22:06 +01:00
qwerty287and6543 b0a2b1cf2d Lowercase all log strings (#3173)
from #3161

---------

Co-authored-by: 6543 <6543@obermui.de>
2024-01-11 19:17:07 +01:00
qwerty287 12c40eb957 Enable gocritic and don't ignore globally (#3159)
Use `nolint` directives instead.

From #2960
2024-01-10 15:34:44 +01:00
qwerty287 f3420716ab Fix startup panic (#3160)
introduced by #3129
2024-01-10 13:50:49 +01:00
qwerty287andlnx01 768fd71841 Enable some linters (#3129)
Mostly those that did not require much work.

From #2960

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-01-09 21:35:37 +01:00
qwerty287 0c05c38ddd Move cmd/common to shared (#3092) 2023-12-31 23:29:56 +01:00
6543andqwerty287 74f6824d03 Add option to disable version check in admin web UI (#3040)
Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com>
2023-12-27 22:16:15 +01:00
qwerty287 04d1f9ff5f Support more addon types (#2984)
Actually support all types that can be possible.

Closes https://github.com/woodpecker-ci/woodpecker/discussions/2520
2023-12-24 13:26:23 +01:00
qwerty287 360b41f961 Remove separate root path config (#2943) 2023-12-13 15:51:18 +01:00
runephilosof-karnovgroupandqwerty287 adb2c82790 Update go module path for major version 2 (#2905)
https://go.dev/doc/modules/release-workflow#breaking

Fixes https://github.com/woodpecker-ci/woodpecker/issues/2913 fixes
#2654
```
runephilosof@fedora:~/code/platform-woodpecker/woodpecker-repo-configurator (master)$ go get go.woodpecker-ci.org/woodpecker@v2.0.0
go: go.woodpecker-ci.org/woodpecker@v2.0.0: invalid version: module contains a go.mod file, so module path must match major version ("go.woodpecker-ci.org/woodpecker/v2")
```

---------

Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com>
2023-12-08 08:15:08 +01:00
qwerty287 fd77b2e9d7 Fix repo owner filter (#2808)
and move to server config instead of middleware

cc @xoxys 

closes #2784
2023-11-12 14:39:41 +01:00
6543andAnbraten 5a7b689e30 Switch to go vanity urls (#2706)
Co-authored-by: Anbraten <anton@ju60.de>
2023-11-07 08:04:33 +01:00
4647e64f13 Report problems with listening to ports and exit (#2102)
Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com>
Co-authored-by: Anbraten <anton@ju60.de>
2023-11-01 11:44:08 +01:00
qwerty287 aeb7bcb26a Remove WOODPECKER_DOCS config (#2647) 2023-10-25 15:05:19 +02:00
qwerty287 d5e68efc95 Do not print log level on CLI (#2638)
if it's not in debug log level

closes https://github.com/woodpecker-ci/woodpecker/issues/1764
2023-10-24 12:23:42 +02:00
qwerty287 0e5defa807 Refactor/simplify pubsub (#2554) 2023-10-13 07:34:33 +02:00
6543 bb17d25963 Trim last "/" from WOODPECKER_HOST config (#2538)
https://youtu.be/dGwC_AxaWLo?t=770  
( https://youtu.be/dGwC_AxaWLo?t=1020 )
2023-10-07 15:39:19 +02:00
qwerty287 ecdc729cdc Some cleanups about host config (#2490) 2023-09-23 07:54:23 +02:00
Tom Kneiphofandqwerty287 baaf8b97e1 Fix usage of WOODPECKER_ROOT_PATH (#2485)
I had experienced some issues running Woodpecker behind a reverse-proxy,
resulting from not defining the `WOODPECKER_ROOT_PATH` environment
variable in #2477.

As suggested by @qwerty287, specifying `WOODPECKER_ROOT_PATH=/foo`
*mostly* solved the issue of running the woodpecker server at an url
like `https://example.org/foo`.
However, the webhook urls and badge urls were generated excluding the
configured `WOODPECKER_ROOT_PATH`.

This PR (mostly) fixes issues related to non-empty
`WOODPECKER_ROOT_PATH`.

---------

Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com>
2023-09-22 16:43:31 +02:00
6543andqwerty287 350282ce29 make WOODPECKER_MIGRATIONS_ALLOW_LONG have an actuall effect (#2251)
close #2079

as we sett the global vars **after** migrations we did never had a
chance to propagate a **true** in WOODPECKER_MIGRATIONS_ALLOW_LONG to
the migrations ...

---------

Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com>
2023-08-21 09:29:45 +02:00
6543 d253f8cc30 Make sure we dont have hidden options for backend and pipeline compiler (#2123)
move options based on **os.Getenv** into flags

---------
*Sponsored by Kithara Software GmbH*
2023-08-07 21:13:26 +02:00
6543 3d4758578a Add opt save global log output to file (#2115)
close  #1933

---------
*Sponsored by Kithara Software GmbH*
2023-08-07 20:47:30 +02:00
qwerty287 67b7de5cc2 Fix UI and backend paths with subpath (#1799)
I'm not sure if this is an ideal fix for this, but it seems to work for
me. If you have another idea just let me know.

Closes #1798 
Closes #1773
2023-08-07 16:05:18 +02:00
qwerty287 1a7f7a9427 Allow to disable swagger (#2093)
https://github.com/woodpecker-ci/woodpecker/issues/1944
2023-08-03 02:42:30 +02:00
Martin W. Kirst 2c1fc4b500 support custom .JS and .CSS files for custom banner messages (white-labeling) (#1781)
This PR introduces two new server configuration options, for providing a
custom .JS and .CSS file.
These can be used to show custom banner messages, add
environment-dependent signals, or simply a corporate logo.

### Motivation (what problem I try to solve)

I'm operating Woodpecker in multiple k8s clusters for different
environments.
When having multiple browser tabs open, I prefer strong indicators for
each environment.
E.g. a red "PROD" banner, or just a blue "QA" banner.
Also, we sometimes need to have the chance for maintenance, and instead
of broadcasting emails,
I prefer a banner message, stating something like: "Heads-up: there's a
planned downtime, next Friday, blabla...".

Also, I like to have the firm's logo visible, which makes Woodpecker
look more like an integral part of our platform.

### Implementation notes

* Two new config options are introduced ```WOODPECKER_CUSTOM_CSS_FILE```
and ```WOODPECKER_CUSTOM_JS_FILE```
* I've piggy-bagged the existing handler for assets, as it seemed to me
a minimally invasive approach
* the option along with an example is documented
* a simple unit test for the Gin-handler ensures some regression safety
* no extra dependencies are introduced

### Visual example

The documented example will look like this.

![Screenshot 2023-05-27 at 17 00
44](https://github.com/woodpecker-ci/woodpecker/assets/1189394/8940392e-463c-4651-a1eb-f017cd3cd64d)

### Areas of uncertainty 

This is my first contribution to Woodpecker and I tried my best to align
with your conventions.
That said, I found myself uncertain about these things and would be glad
about getting feedback.

* The handler tests are somewhat different than the other ones because I
wanted to keep them simple - I hope that still matches your coding
guidelines
* caching the page sometimes will let the browser not recognize changes
and a user must reload. I'm not fully into the details of how caching is
implemented and neither can judge if it's a real problem. Another pair
of eyes would be good.
2023-07-10 12:46:35 +02:00
Thomas Anderson 0c3021473f Added Woodpecker Host Config used for Webhooks (#1869)
When SCM and Woodpecker are deployed in the same cluster, I want that
SCM requests Woodpecker directly by internal URL.


![Webhook-host-diagram](https://github.com/woodpecker-ci/woodpecker/assets/127358482/c4689d55-839a-4731-95b3-5734ba561e5f)
 
This PR adds optional URL used for Webhook calls.
2023-06-18 14:47:40 +02:00
6543 5139624cf8 Migrate old logs to new database schema (#1828)
address new models based on #1802
2023-06-12 22:43:14 +02:00