\r\n \u003Clink rel=\"alternate icon\" type=\"image/png\" href=\"/favicons/favicon-light-default.png\" id=\"favicon-png\" />\r\n \u003Clink rel=\"icon\" type=\"image/svg+xml\" href=\"/favicons/favicon-light-default.svg\" id=\"favicon-svg\" />\r\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n \u003Cmeta name=\"theme-color\" content=\"#65a30d\" />\r\n \u003Ctitle>Woodpecker\u003C/title>\r\n \u003Cscript type=\"\" src=\"/web-config.js\">\u003C/script>\r\n \u003Cscript type=\"module\" crossorigin src=\"/assets/index-4b7b57db.js\">\u003C/script>\r\n \u003Clink rel=\"stylesheet\" href=\"/assets/index-f123c06a.css\">\r\n \u003C/head>\r\n \u003Cbody>\r\n \u003Cdiv id=\"app\">\u003C/div>\r\n\r\n \u003C/body>\r\n\u003C/html>\r\n```\r\n\r\nThat is basically an \"empty\" page. Let's look at the response code:\r\n```\r\n$ curl -I http://localhost:8000/foo\r\nHTTP/1.1 200 OK\r\nX-Woodpecker-Version: next-45319b24\r\n# ...etc.\r\n```\r\n\r\nThat should have returned 404.\r\n\r\nNow let's request a non-existent API endpoint:\r\n```\r\n$ curl -I http://localhost:8000/api/bar\r\nHTTP/1.1 200 OK\r\nX-Woodpecker-Version: next-45319b24\r\n# ...etc.\r\n```\r\n\r\nSame thing.\r\n\r\nNow let's request a real API endpoint, for healthchecks:\r\n```\r\n$ curl http://localhost:8000/api/healthz\r\n\u003C!DOCTYPE html>\r\n\u003Chtml lang=\"en\">\r\n # ...\r\n\u003C/html>\r\n\r\n$ curl -I http://localhost:8000/api/healthz\r\nHTTP/1.1 200 OK\r\nX-Woodpecker-Version: next-45319b24\r\n# ...etc.\r\n```\r\n\r\nSame thing. Also, it should not return a page, only a REST response.\r\n\r\nClean up:\r\n```\r\n$ apk delete curl\r\n$ exit\r\n```\r\n\r\nSummary:\r\n- both existent and non-existent endpoints and pages respond with 200\r\n- that means the `/api/healthz` endpoint is not working: it's a \"proof of life\" rather than \"proof of health\"\r\n- and the health endpoint should only return a json REST response, not a page\r\n\r\n### System Info\r\n\r\n```shell\r\nversion next-45319b24-alpine\r\ndockerised\r\n```\r\n\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Validations\r\n\r\n- [X] Read the [Contributing Guidelines](https://github.com/woodpecker-ci/woodpecker/blob/master/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://woodpecker-ci.org/docs/intro).\r\n- [X] Check that there isn't [already an issue](https://github.com/woodpecker-ci/woodpecker/issues) that reports the same bug to avoid creating a duplicate.\r\n- [X] Checked that the bug isn't fixed in the `next` version already [https://woodpecker-ci.org/faq#which-version-of-woodpecker-should-i-use]\r\n- [X] Check that this is a concrete bug. For Q&A join our [Discord Chat Server](https://discord.gg/fcMQqSMXJy) or the [Matrix room](https://matrix.to/#/#woodpecker:matrix.org).",[2892,2893],{"name":2882,"color":2883},{"name":2894,"color":2895},"server","5D7A92",1947,"All pages and API endpoints (including non-existent ones) return 200","2025-03-16T13:50:31Z","https://github.com/woodpecker-ci/woodpecker/issues/1947",0.7615426,{"description":2902,"labels":2903,"number":2907,"owner":2871,"repository":2872,"state":2873,"title":2908,"updated_at":2909,"url":2910,"score":2911},"### Clear and concise description of the problem\r\n\r\nCurrently, tracking usage pattern is hard for admins as there is no easy way to get queue statistics over time. The API endpoint `queue/info` provides some basic stats but one would need to query it every few seconds/minute and then post-process the data manually into a dashboard.\r\n\r\nYes, there is a prometheus endpoint at `/metrics` and some user-provided dasbhoard (e.g. https://github.com/Janik-Haag/woodpecker-grafana-dashboard) but having a built-in view would be really great.\r\n\r\n### Suggested solution\r\n\r\nAdd a simple dashboard to `admin#queue` which shows queue utilization over time. \r\n\r\nBonus: group the stats by agent (e.g. to infer how many builds for a given architecture were requested)\r\n\r\nhttps://github.com/arl/statsviz might be a library for this.\r\n\r\n### Alternative\r\n\r\n_No response_\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Validations\r\n\r\n- [X] Checked that the feature isn't part of the `next` version already [https://woodpecker-ci.org/faq#which-version-of-woodpecker-should-i-use]\r\n- [X] Read the [Contributing Guidelines](https://github.com/woodpecker-ci/woodpecker/blob/main/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://woodpecker-ci.org/docs/intro).\r\n- [X] Check that there isn't already an [issue](https://github.com/woodpecker-ci/woodpecker/issues) that request the same feature to avoid creating a duplicate.",[2904],{"name":2905,"color":2906},"enhancement","7E1FE4",3105,"Queue/Metrics utilization dashboard for usage overview","2024-01-02T17:04:24Z","https://github.com/woodpecker-ci/woodpecker/issues/3105",0.7734418,{"description":2913,"labels":2914,"number":2919,"owner":2871,"repository":2872,"state":2873,"title":2920,"updated_at":2921,"url":2922,"score":2923},"### Component\r\n\r\nagent\r\n\r\n### Describe the bug\r\n\r\nI'm trying to get started with the Kubernetes backend (installed via the official helm chart). When I try to run a pipeline, the container gets stuck with CreateContainerError.\r\n\r\n```\r\nError: container create failed: chdir: No such file or directory\r\n```\r\n\r\nAfter some debugging, it seems like the issue is related to the `spec.workingDir` being set to a directory that doesn't exist at the time that the container is starting. I'm not exactly an expert here, but maybe we could leave the working dir unset and then change directories after the repo is cloned?\r\n\r\nI can provide more debugging information, if that would be help.\r\n\r\n### System Info\r\n\r\n```shell\r\n{\"source\":\"https://github.com/woodpecker-ci/woodpecker\",\"version\":\"next-24204ecdeb\"}\r\n```\r\n\r\nThis is a vanilla Kubernetes 1.28.2 cluster installed via kubeadm. The nodes are Debian 12. The container runtime is CRI-O which was installed following the [install guide here](https://github.com/cri-o/cri-o/blob/v1.28.1/install.md#apt-based-operating-systems).\r\n\r\n\r\n### Additional context\r\n\r\nI'm running CRI-O (I'm not sure if that's relevant), and I discussed this issue a bit on the [CRI-O repo here](https://github.com/cri-o/cri-o/discussions/7338).\r\n\r\nI'm using Forgejo as my forge. If I comment out the `spec.workingDir` in the Pod yaml and attempt to run the Pod manually I get an error like:\r\n\r\n```\r\n+ git fetch --no-tags --depth=1 --filter=tree:0 origin +master:\r\nerror: RPC failed; HTTP 403 curl 22 The requested URL returned error: 403\r\nfatal: expected flush after ref listing\r\nexit status 128\r\n```\r\n\r\nI'm not sure if that's another issue or somehow related, but I thought it was worth mentioning.\r\n\r\n### Validations\r\n\r\n- [X] Read the [Contributing Guidelines](https://github.com/woodpecker-ci/woodpecker/blob/main/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://woodpecker-ci.org/docs/intro).\r\n- [X] Check that there isn't [already an issue](https://github.com/woodpecker-ci/woodpecker/issues) that reports the same bug to avoid creating a duplicate.\r\n- [X] Checked that the bug isn't fixed in the `next` version already [https://woodpecker-ci.org/faq#which-version-of-woodpecker-should-i-use]\r\n- [X] Check that this is a concrete bug. For Q&A join our [Discord Chat Server](https://discord.gg/fcMQqSMXJy) or the [Matrix room](https://matrix.to/#/#woodpecker:matrix.org).",[2915,2916],{"name":2882,"color":2883},{"name":2917,"color":2918},"backend/kubernetes","bfdadc",2510,"Cannot run pipeline on Kubernetes: CreateContainerError","2025-04-02T06:36:59Z","https://github.com/woodpecker-ci/woodpecker/issues/2510",0.7762588,{"description":2925,"labels":2926,"number":2931,"owner":2871,"repository":2872,"state":2873,"title":2932,"updated_at":2933,"url":2934,"score":2935},"### Clear and concise description of the problem\n\nWhenever a new secret variables is introduced into the project either the existing admin needs to add it as a secret to woodpecker or someone needs to add the developer as an admin to the WOODPECKER_ADMIN environment variable and restart the woodpecker instance.\n\n### Suggested solution\n\nWe could provide authenticated users, which have write permissions to the repository, with an ability to add, remove and edit secrets\n\n### Alternative\n\nAs an alternative we could provide admins with aт interface on web-ui to set other users as an admin. This web-ui also could be useful in case, when registrations are closed (WOODPECKER_OPEN=false), but you want to give someone access to the woodpecker (as far as I know right now it's only possible to do that using cli tool)\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Read the [Contributing Guidelines](https://github.com/woodpecker-ci/woodpecker/blob/master/CONTRIBUTING.md).\n- [X] Read the [docs](https://woodpecker-ci.org/docs/intro).\n- [X] Check that there isn't already an [issue](https://github.com/woodpecker-ci/woodpecker/issues) that request the same feature to avoid creating a duplicate.",[2927,2928],{"name":2905,"color":2906},{"name":2929,"color":2930},"ux","fef2c0",951,"Allow users with write access to repo to edit secrets","2022-06-02T21:08:44Z","https://github.com/woodpecker-ci/woodpecker/issues/951",0.7806422,{"description":2937,"labels":2938,"number":2946,"owner":2871,"repository":2872,"state":2873,"title":2947,"updated_at":2948,"url":2949,"score":2950},"### Clear and concise description of the problem\r\n\r\nIt is not possible to see list of older pipelines for a repo\r\n\r\n### Suggested solution\r\n\r\nAdd pagination on https://ci.woodpecker-ci.org/repos/3780\r\n\r\n### Alternative\r\n\r\nAdd a load more button.\r\nAlthough, I prefer pagination, because then you can share a link to the page and you will see the same view.\r\n\r\n### Additional context\r\n\r\n#### Relevant code\r\nBackend does have support for pagination\r\nhttps://github.com/woodpecker-ci/woodpecker/blob/6432109daf7e7a466c25dcc1a4f540b3dd766d94/server/api/pipeline.go#L104\r\nThe frontend store needs to support it\r\nhttps://github.com/woodpecker-ci/woodpecker/blob/6432109daf7e7a466c25dcc1a4f540b3dd766d94/web/src/store/pipelines.ts#L50\r\nThe frontend component needs to have a button, etc.\r\nhttps://github.com/woodpecker-ci/woodpecker/blob/6432109daf7e7a466c25dcc1a4f540b3dd766d94/web/src/components/repo/pipeline/PipelineList.vue\r\n\r\n### Validations\r\n\r\n- [X] Checked that the feature isn't part of the `next` version already [https://woodpecker-ci.org/faq#which-version-of-woodpecker-should-i-use]\r\n- [X] Read the [Contributing Guidelines](https://github.com/woodpecker-ci/woodpecker/blob/main/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://woodpecker-ci.org/docs/intro).\r\n- [X] Check that there isn't already an [issue](https://github.com/woodpecker-ci/woodpecker/issues) that request the same feature to avoid creating a duplicate.",[2939,2942,2943],{"name":2940,"color":2941},"ui","46DEA2",{"name":2868,"color":2869},{"name":2944,"color":2945},"good first issue","76ea72",2976,"Add pagination on repo pipelines view","2024-11-27T15:02:03Z","https://github.com/woodpecker-ci/woodpecker/issues/2976",0.78520024,{"description":2952,"labels":2953,"number":2954,"owner":2871,"repository":2872,"state":2955,"title":2956,"updated_at":2957,"url":2958,"score":2959},"### Component\r\n\r\nserver, cli, web-ui\r\n\r\n### Describe the bug\r\n\r\nThere is a breaking change in #1331 (deletion of line 88 in `server/router/api.go`)\r\n\r\n\r\n\r\nThis endpoint is used by both the clients (web and cli), so they are breaking now.\r\n\r\n### System Info\r\n\r\n```shell\r\n{\"source\":\"https://github.com/woodpecker-ci/woodpecker\",\"version\":\"dev\"}\r\n```\r\n\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Validations\r\n\r\n- [X] Read the [Contributing Guidelines](https://github.com/woodpecker-ci/woodpecker/blob/master/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://woodpecker-ci.org/docs/intro).\r\n- [X] Check that there isn't [already an issue](https://github.com/woodpecker-ci/woodpecker/issues) that reports the same bug to avoid creating a duplicate.\r\n- [X] Check that this is a concrete bug. For Q&A join our [Discord Chat Server](https://discord.gg/fcMQqSMXJy) or the [Matrix room](https://matrix.to/#/#woodpecker:matrix.org).",[],1369,"closed","Broken Cancel Pipeline in Web UI and CLI","2022-10-30T13:39:03Z","https://github.com/woodpecker-ci/woodpecker/issues/1369",0.74148804,{"description":2961,"labels":2962,"number":2964,"owner":2871,"repository":2872,"state":2955,"title":2965,"updated_at":2966,"url":2967,"score":2968},"### Component\n\nserver\n\n### Describe the bug\n\nGot this error :\n\n```\nwoodpecker-server | {\"level\":\"info\",\"time\":\"2025-02-13T09:36:51Z\",\"message\":\"log level: info\"}\nwoodpecker-server | {\"level\":\"error\",\"error\":\"can't setup store: could not migrate datastore: migration cron-without-sec failed: attempt to write a readonly database\",\"time\":\"2025-02-13T09:36:51Z\",\"message\":\"error running server\"}\n```\n\n### Steps to reproduce\n\nHave a 2.8.3 with docker compose up\nEdit docker compose to 3.0.0\nUp docker compose\nGot this error\n\n### Expected behavior\n\n_No response_\n\n### System Info\n\n```shell\nClient: Docker Engine - Community\n Version: 27.3.1\n\nDocker Compose version v2.32.4\n```\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [x] Read the [docs](https://woodpecker-ci.org/docs/intro).\n- [x] Check that there isn't [already an issue](https://github.com/woodpecker-ci/woodpecker/issues) that reports the same bug to avoid creating a duplicate.\n- [x] Checked that the bug isn't fixed in the `next` version already [https://woodpecker-ci.org/versions]",[2963],{"name":2882,"color":2883},4836,"Migration 2.8.3 to 3.0.0 failed - migration cron-without-sec failed","2025-02-13T14:04:04Z","https://github.com/woodpecker-ci/woodpecker/issues/4836",0.76249146,{"description":2970,"labels":2971,"number":2974,"owner":2871,"repository":2872,"state":2955,"title":2975,"updated_at":2976,"url":2977,"score":2978},"### Component\n\nserver, agent\n\n### Describe the bug\n\nI noticed that I have a lot of agents declared in http://my-ci/admin/settings#agents.\r\n\r\nAfter few tests, I noticed that every time I restart a pod with an agent, it registers itself, adding a new agent declared in http://my-ci/admin/settings#agents.\r\n\r\nNote : in the Kubernetes world, pods can be deleted at any time, for load balancing, draining a node, upgrading, or any other good or bad reason. With the Helm chart provided at [woodpecker-ci/helm](https://github.com/woodpecker-ci/helm) the pods are under control of a Deployment, which means that they are stateless. Any new pod has no idea of the registration of the older one.\r\n\r\nBug : some cleanup should be done automatically when a pod is removed.\r\n\r\nSuggestion : when an pod terminates, the agent should unregister before leaving.\n\n### System Info\n\n```shell\n{\"source\":\"https://github.com/woodpecker-ci/woodpecker\",\"version\":\"next-2e851ba4\"}\r\n\r\nBackend: Kubernetes\n```\n\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Read the [Contributing Guidelines](https://github.com/woodpecker-ci/woodpecker/blob/master/CONTRIBUTING.md).\n- [X] Read the [docs](https://woodpecker-ci.org/docs/intro).\n- [X] Check that there isn't [already an issue](https://github.com/woodpecker-ci/woodpecker/issues) that reports the same bug to avoid creating a duplicate.\n- [X] Checked that the bug isn't fixed in the `next` version already [https://woodpecker-ci.org/faq#which-version-of-woodpecker-should-i-use]\n- [X] Check that this is a concrete bug. For Q&A join our [Discord Chat Server](https://discord.gg/fcMQqSMXJy) or the [Matrix room](https://matrix.to/#/#woodpecker:matrix.org).",[2972,2973],{"name":2905,"color":2906},{"name":2917,"color":2918},2027,"Kubernetes backend : too many agents registered","2023-11-01T23:53:49Z","https://github.com/woodpecker-ci/woodpecker/issues/2027",0.76580936,["Reactive",2980],{},["Set"],["ShallowReactive",2983],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fqig3rzycQOsTP7r_UMoFKXWIrxsROoNFSkCSivbn_fM":-1},"/woodpecker-ci/woodpecker/479"]