\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).",[2852,2855],{"name":2853,"color":2854},"bug","d73a4a",{"name":2856,"color":2857},"server","5D7A92",1947,"woodpecker-ci","woodpecker","open","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.69260323,{"description":2867,"labels":2868,"number":2876,"owner":2859,"repository":2860,"state":2861,"title":2877,"updated_at":2878,"url":2879,"score":2880},"### Clear and concise description of the problem\n\nThe \"Run pipeline\" button in the UI, which is triggered for `\"event: manual\"`, currently executes all existing pipeline definitions under `.woodpecker/`.\n\n### Suggested solution\n\nThe button could allow invoking specific pipelines only instead of starting all existing ones.\n\n### Alternative\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\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]\n- [X] Read the [Contributing Guidelines](https://github.com/woodpecker-ci/woodpecker/blob/main/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.",[2869,2870,2873],{"name":2856,"color":2857},{"name":2871,"color":2872},"feature","180DBE",{"name":2874,"color":2875},"ux","fef2c0",2763,"Run pipeline: allow executing a single/specific pipeline if more than one pipeline definitions exist","2023-12-20T12:51:01Z","https://github.com/woodpecker-ci/woodpecker/issues/2763",0.73645866,{"description":2882,"labels":2883,"number":2885,"owner":2859,"repository":2860,"state":2861,"title":2886,"updated_at":2887,"url":2888,"score":2889},"It would be cool to send commands as comments from the PR view of a forge to Woodpecker. For example a pipeline waiting for approval could listen to `/accept` and `/decline`. Other commands like `/restart` could be quite useful as well. \n\nIn the longterm we could also add a custom event type for pipelines allowing to trigger a specific pipeline on a custom command like `/deploy` to do an deployment on request. ",[2884],{"name":2871,"color":2872},814,"Add support for comment commands","2023-11-04T15:19:16Z","https://github.com/woodpecker-ci/woodpecker/issues/814",0.7470309,{"description":2891,"labels":2892,"number":2896,"owner":2859,"repository":2860,"state":2861,"title":2897,"updated_at":2898,"url":2899,"score":2900},"### 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.",[2893],{"name":2894,"color":2895},"enhancement","7E1FE4",3105,"Queue/Metrics utilization dashboard for usage overview","2024-01-02T17:04:24Z","https://github.com/woodpecker-ci/woodpecker/issues/3105",0.7524561,{"description":2902,"labels":2903,"number":2909,"owner":2859,"repository":2860,"state":2861,"title":2910,"updated_at":2911,"url":2912,"score":2913},"Its sometimes pretty difficult to debug a queue entry and understand what it is about. Therefore it might help to link the pipeline the queue entry is related to.",[2904,2905,2908],{"name":2856,"color":2857},{"name":2906,"color":2907},"ui","46DEA2",{"name":2894,"color":2895},2948,"Link queue entries to pipeline","2024-01-09T04:27:09Z","https://github.com/woodpecker-ci/woodpecker/issues/2948",0.7574542,{"description":2915,"labels":2916,"number":2918,"owner":2859,"repository":2860,"state":2861,"title":2919,"updated_at":2920,"url":2921,"score":2922},"### Clear and concise description of the problem\n\nSometimes a Woodpecker Agent might OOM, lose connection, run out of space etc. and Woodpecker Server still thinks it's running till the pipeline timed out kicks in.\n\n### Suggested solution\n\nHealthcheck / ping Woodpecker Agent(s) during the workflow(s) run. Too many timed out responses would cause the Woodpecker Server to cancel the workflow run / move the job onto another Agent (if exists).\n\n### Alternative\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\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]\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.",[2917],{"name":2894,"color":2895},3283,"Healthcheck Agents if they're still running.","2024-01-26T16:47:54Z","https://github.com/woodpecker-ci/woodpecker/issues/3283",0.76236176,{"description":2924,"labels":2925,"number":2928,"owner":2859,"repository":2860,"state":2861,"title":2929,"updated_at":2930,"url":2931,"score":2932},"### Clear and concise description of the problem\n\nA repo can use many secrets, some of which may have non-obvious origins. I find it would be useful to be able to add notes to a secret, which could contain any information that the user deems helpful for them. An example use case would be:\r\nsecret_name: SOME_API_TOKEN\r\nsecret_value: \u003Csuper_secret_value>\r\ndescription: \"Used by process xxx. Expiry date: ddmmyy, renew by going to ..., include API scope blablabla\"\n\n### Suggested solution\n\nThis could be a simple plain text field, visible to anyone who has access to create/modify secrets, along with the secret name. The aim is to provide hints/document the secret.\r\nI noticed that gitlab recently added this to their CI, which I find extremely helpful.\r\nIn a perfect world, secrets would be generated in code, with proper documentation, but it's not always possible in tiny projects.\n\n### Alternative\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\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]\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.",[2926,2927],{"name":2856,"color":2857},{"name":2894,"color":2895},3558,"Add description to secrets","2024-03-27T08:39:44Z","https://github.com/woodpecker-ci/woodpecker/issues/3558",0.7624477,{"description":2934,"labels":2935,"number":2937,"owner":2859,"repository":2860,"state":2861,"title":2938,"updated_at":2939,"url":2940,"score":2941},"### Component\n\nserver\n\n### Describe the bug\n\nHello,\r\nI've recently updated my Woodpecker agent and server to the latest `next` version. When I pushed to my repository, I noticed the pipeline didn't start, so I triggered it manually and got an error. By following the container's logs I noticed some errors very close to the ones on https://github.com/woodpecker-ci/woodpecker/issues/1609, which I thought was weird because I have a newer version and I don't think my pipeline is wrong. I also got the same thing described in that issue of having eternally stuck pipelines which can't be stopped. My error log from back then is here: https://pasty.nikko.cf/yrmUGk.txt\r\n\r\nIn order to avoid all possibilities of user error, I deleted the containers, the databse, and installed Woodpecker from scratch. I added again the repository and ran the pipeline. These are the logs as shown by `docker compose logs -f` from the moment of starting Woodpecker at first install to right after I had triggered the pipeline: https://pasty.nikko.cf/4m3bum.txt\r\n\r\nI noticed that running pipelines on other repositories worked - sort of: it ran the first step fine but hanged at the second one. I saw another couple of errors in the logs:\r\n```\r\nwoodpecker-woodpecker-server-1 | {\"level\":\"warn\",\"error\":\"sql: no rows in result set\",\"time\":\"2023-06-30T16:20:19Z\"}\r\nwoodpecker-woodpecker-server-1 | {\"level\":\"error\",\"error\":\"database is locked\",\"now\":1688142054,\"time\":\"2023-06-30T16:20:59Z\",\"message\":\"obtain cron list\"}\r\n```\r\nbut I think the first is caused by the database being locked, and the database being locked is caused by the program crashing earlier. As the pipeine was stuck, Woodpecker also took a worrying amount of CPU and I had to kill it to free it because it wouldn't stop normally.\r\n\r\nI hope this report can be helpful. Feel free to ask if you need more information.\r\n\n\n### System Info\n\n```shell\nVersion: `{\"source\":\"https://github.com/woodpecker-ci/woodpecker\",\"version\":\"next-44b54db4\"}`\r\nOS (`uname -a`): `Linux p4 5.10.0-23-amd64 #1 SMP Debian 5.10.179-1 (2023-05-12) x86_64 GNU/Linux` \r\nDocker version: `Docker version 24.0.2, build cb74dfc` \r\nCompose:\r\n\r\n# docker-compose.yml\r\nversion: '3'\r\n\r\nservices:\r\n woodpecker-server:\r\n image: woodpeckerci/woodpecker-server:next\r\n restart: always\r\n ports:\r\n - 8085:8000\r\n volumes:\r\n - ./data:/var/lib/woodpecker/\r\n environment:\r\n - WOODPECKER_OPEN=true\r\n - WOODPECKER_HOST=https://woodpecker.massivebox.net\r\n - WOODPECKER_GITEA=true\r\n - WOODPECKER_GITEA_URL=https://git.massivebox.net\r\n - WOODPECKER_GITEA_CLIENT=REDACTED\r\n - WOODPECKER_GITEA_SECRET=REDACTED\r\n - WOODPECKER_AGENT_SECRET=REDACTED\r\n networks:\r\n - internal\r\n - caddy\r\n labels:\r\n caddy: woodpecker.massivebox.net\r\n caddy.reverse_proxy: \"{{upstreams 8000}}\"\r\n\r\n woodpecker-agent:\r\n image: woodpeckerci/woodpecker-agent:next\r\n command: agent\r\n restart: always\r\n depends_on:\r\n - woodpecker-server\r\n volumes:\r\n - /var/run/docker.sock:/var/run/docker.sock\r\n environment:\r\n - WOODPECKER_SERVER=woodpecker-server:9000\r\n - WOODPECKER_AGENT_SECRET=REDACTED\r\n networks:\r\n - internal\r\n\r\nnetworks:\r\n caddy:\r\n name: caddy\r\n external: true\r\n internal:\r\n internal: true\r\n\r\n```\n```\n\n\n### Additional context\n\nConfiguration file: https://git.massivebox.net/ecodash/ecodash/src/branch/master/.woodpecker/.woodpecker.yml\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).",[2936],{"name":2853,"color":2854},1905,"Runtime error on manual pipeline execution","2024-03-20T23:43:12Z","https://github.com/woodpecker-ci/woodpecker/issues/1905",0.7641422,{"description":2943,"labels":2944,"number":2954,"owner":2859,"repository":2860,"state":2955,"title":2956,"updated_at":2957,"url":2958,"score":2959},"1. provide sensible defaults\r\n2. configs should be intuitive and self explaining\r\n3. make sure to write generic func and split up big func into sub functions\r\n4. use packages for each topic ans if to big split asap in subtopics\r\n\r\n---\r\nhttps://github.com/woodpecker-ci/woodpecker/issues/1860#issuecomment-1590175406",[2945,2948,2951],{"name":2946,"color":2947},"documentation","7D625D",{"name":2949,"color":2950},"governance","A46EFE",{"name":2952,"color":2953},"good first issue","76ea72",1884,"closed","Document key-priorieties for development","2023-08-08T07:28:13Z","https://github.com/woodpecker-ci/woodpecker/issues/1884",0.73577183,{"description":2961,"labels":2962,"number":2964,"owner":2859,"repository":2860,"state":2955,"title":2965,"updated_at":2966,"url":2967,"score":2968},"### Component\n\nserver\n\n### Describe the bug\n\nI noticed this because of this error message from the autoscaler:\r\n\r\n```json\r\n{\"level\":\"error\",\"error\":\"client.AgentUpdate: client error 409: \",\"time\":\"2024-01-22T20:02:18Z\",\"message\":\"draining agents failed\"}\r\n{\"level\":\"error\",\"error\":\"client.AgentUpdate: client error 409: \",\"time\":\"2024-01-22T20:03:18Z\",\"message\":\"draining agents failed\"}\r\n```\r\n\r\nBroken server version: next-5e2f7d81b3\r\nWorking server version: next-6a6cb094fb\r\n\r\nThe autoscaler version is unchanged, that's why I think that's a server issue.\n\n### System Info\n\n```shell\nnext-5e2f7d81b3\n```\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/faq#which-version-of-woodpecker-should-i-use]",[2963],{"name":2853,"color":2854},3261,"client.AgentUpdate: client error 409","2024-01-28T11:32:08Z","https://github.com/woodpecker-ci/woodpecker/issues/3261",0.7384916,["Reactive",2970],{},["Set"],["ShallowReactive",2973],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fNbxTgPbq7eX1fxI9Y9mcMcf0KYaida6j1E8W1D76Xp8":-1},"/woodpecker-ci/woodpecker/1936"]