\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).",[1984,1987],{"name":1985,"color":1986},"bug","d73a4a",{"name":1988,"color":1989},"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.70099163,{"description":1999,"labels":2000,"number":2008,"owner":1991,"repository":1992,"state":1993,"title":2009,"updated_at":2010,"url":2011,"score":2012},"### 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.",[2001,2002,2005],{"name":1988,"color":1989},{"name":2003,"color":2004},"feature","180DBE",{"name":2006,"color":2007},"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.7246637,{"description":2014,"labels":2015,"number":2017,"owner":1991,"repository":1992,"state":1993,"title":2018,"updated_at":2019,"url":2020,"score":2021},"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. ",[2016],{"name":2003,"color":2004},814,"Add support for comment commands","2023-11-04T15:19:16Z","https://github.com/woodpecker-ci/woodpecker/issues/814",0.7533682,{"description":2023,"labels":2024,"number":2028,"owner":1991,"repository":1992,"state":1993,"title":2029,"updated_at":2030,"url":2031,"score":2032},"### 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.",[2025],{"name":2026,"color":2027},"enhancement","7E1FE4",3105,"Queue/Metrics utilization dashboard for usage overview","2024-01-02T17:04:24Z","https://github.com/woodpecker-ci/woodpecker/issues/3105",0.7542596,{"description":2034,"labels":2035,"number":2037,"owner":1991,"repository":1992,"state":1993,"title":2038,"updated_at":2039,"url":2040,"score":2041},"### 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.",[2036],{"name":2026,"color":2027},3283,"Healthcheck Agents if they're still running.","2024-01-26T16:47:54Z","https://github.com/woodpecker-ci/woodpecker/issues/3283",0.7570876,{"description":2043,"labels":2044,"number":2050,"owner":1991,"repository":1992,"state":1993,"title":2051,"updated_at":2052,"url":2053,"score":2054},"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.",[2045,2046,2049],{"name":1988,"color":1989},{"name":2047,"color":2048},"ui","46DEA2",{"name":2026,"color":2027},2948,"Link queue entries to pipeline","2024-01-09T04:27:09Z","https://github.com/woodpecker-ci/woodpecker/issues/2948",0.7601857,{"description":2056,"labels":2057,"number":2062,"owner":1991,"repository":1992,"state":1993,"title":2063,"updated_at":2064,"url":2065,"score":2066},"The tabs used in the admin settings are currently loading a single page and therefore when entering the admin settings the complete data like secrets, registries, agents, users, ... is loaded at one. \r\n\r\n- Instead I suggest splitting that page into multiple pages. One page per tab.\r\n- In addition it would be nice to separate the details / edit components like secret edit into separate pages as well having an own url\r\n",[2058,2059],{"name":2047,"color":2048},{"name":2060,"color":2061},"refactor","4f8cc9",3827,"Separate details/edit components into pages","2024-11-19T14:54:00Z","https://github.com/woodpecker-ci/woodpecker/issues/3827",0.7615993,{"description":2068,"labels":2069,"number":2071,"owner":1991,"repository":1992,"state":1993,"title":2072,"updated_at":2073,"url":2074,"score":2075},"### 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).",[2070],{"name":1985,"color":1986},1905,"Runtime error on manual pipeline execution","2024-03-20T23:43:12Z","https://github.com/woodpecker-ci/woodpecker/issues/1905",0.76764554,{"description":2077,"labels":2078,"number":2088,"owner":1991,"repository":1992,"state":2089,"title":2090,"updated_at":2091,"url":2092,"score":2093},"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",[2079,2082,2085],{"name":2080,"color":2081},"documentation","7D625D",{"name":2083,"color":2084},"governance","A46EFE",{"name":2086,"color":2087},"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.73144996,{"description":2095,"labels":2096,"number":2098,"owner":1991,"repository":1992,"state":2089,"title":2099,"updated_at":2100,"url":2101,"score":2102},"### Clear and concise description of the problem\n\nIt seems like `index.html` hardcodes assets like this `/web-config.js`, etc.\r\n\r\nServing it under a path like `/ci` means that all URLs are broken.\r\n\r\nI didn't see anything in the documentation or existing issues about serving the web UI at a non-root (`/`) path.\n\n### Suggested solution\n\nPerhaps if `WOODPECKER_HOST` looks like this: `https://DOMAIN/ci`, then Woodpecker CI should infer the path from there and contructs its links correctly (adding a `/ci` prefix automatically).\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/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.",[2097],{"name":2003,"color":2004},1636,"Make serving under a subpath work","2023-04-29T15:51:52Z","https://github.com/woodpecker-ci/woodpecker/issues/1636",0.73396355,["Reactive",2104],{},["Set"],["ShallowReactive",2107],{"TRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"NbxTgPbq7eX1fxI9Y9mcMcf0KYaida6j1E8W1D76Xp8":-1},"/woodpecker-ci/woodpecker/1936"]