\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).",[2856,2859],{"name":2857,"color":2858},"bug","d73a4a",{"name":2860,"color":2861},"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.75711185,{"description":2871,"labels":2872,"number":2882,"owner":2863,"repository":2864,"state":2865,"title":2883,"updated_at":2884,"url":2885,"score":2886},"_Originally posted by @6543 in https://github.com/woodpecker-ci/woodpecker/pull/1627#discussion_r1139395959_\r\n ",[2873,2876,2879],{"name":2874,"color":2875},"ui","46DEA2",{"name":2877,"color":2878},"enhancement","7E1FE4",{"name":2880,"color":2881},"good first issue","76ea72",1637,"Display 404 page if api-client return 404 on requested resource","2023-11-13T10:16:14Z","https://github.com/woodpecker-ci/woodpecker/issues/1637",0.75851685,{"description":2888,"labels":2889,"number":2900,"owner":2863,"repository":2864,"state":2865,"title":2901,"updated_at":2902,"url":2903,"score":2904},"### Clear and concise description of the problem\r\n\r\nas of https://github.com/woodpecker-ci/woodpecker/pull/2691\r\n\r\n~~blocked by https://github.com/swaggo/swag/issues/386~~ -> https://github.com/woodpecker-ci/woodpecker/pull/3897\r\n\r\n### Suggested solution\r\n\r\nauto-generate client from swagger docs so we don't have to do it manually\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.",[2890,2891,2894,2897],{"name":2877,"color":2878},{"name":2892,"color":2893},"refactor","4f8cc9",{"name":2895,"color":2896},"blocked","AF9796",{"name":2898,"color":2899},"lib","bfdadc",3053,"Generate sdk from swagger","2024-07-13T12:58:23Z","https://github.com/woodpecker-ci/woodpecker/issues/3053",0.7703969,{"description":2906,"labels":2907,"number":2912,"owner":2863,"repository":2864,"state":2865,"title":2913,"updated_at":2914,"url":2915,"score":2916},"https://github.com/woodpecker-ci/woodpecker/blob/4456da99c56437ef49c799a047ad3518023e6ce3/pipeline/rpc/peer.go#L54",[2908,2911],{"name":2909,"color":2910},"documentation","7D625D",{"name":2892,"color":2893},3322,"Rename Interface to actully reflect what it is used for","2024-02-07T00:03:34Z","https://github.com/woodpecker-ci/woodpecker/issues/3322",0.7808138,{"description":2918,"labels":2919,"number":2923,"owner":2863,"repository":2864,"state":2924,"title":2925,"updated_at":2926,"url":2927,"score":2928},"### Component\r\n\r\nserver, cli\r\n\r\n### Describe the bug\r\n\r\nThis is not strictly a bug, but a design flaw. I first asked on the [discord server](https://discord.com/channels/838698813463724034/838698813463724037/1125415904134574080).\r\n\r\nSuppose I want to lock down my woodpecker server - I don't want random users from my gitea server to be able to log in. So I set `WOODPECKER_OPEN=false`. The docs state that in that case I need to create users manually, using the CLI.\r\n\r\nThe problem is the CLI needs an auth token, to be able to communicate with the server. But to generate such a token I must log in to the server, which I can't do. A chicken and egg problem! :baby_chick: :egg:\r\n\r\n### System Info\r\n\r\n```shell\r\nI am using 'next'\r\n```\r\n\r\n\r\n### Additional context\r\n\r\nIdea: have the CLI inside the server container, and allow it to communicate without an auth token.\r\n\r\nIdea: proposed by @6543:\r\n> gitea use an \"internal token\" for this tasks... we could do similar\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).",[2920],{"name":2921,"color":2922},"feature","180DBE",1923,"closed","Internal token for CLI / API administration","2023-08-20T16:09:02Z","https://github.com/woodpecker-ci/woodpecker/issues/1923",0.74951065,{"description":2930,"labels":2931,"number":2932,"owner":2863,"repository":2864,"state":2924,"title":2933,"updated_at":2934,"url":2935,"score":2936},"I have a fresh WP 2.5 setup in Kubernetes (docker desktop) that uses the newly introduced separate URL for gitea access ( https://github.com/woodpecker-ci/woodpecker/issues/3470 )\r\n\r\nI have these settings in woodpecker:\r\n\r\n(for browser access / oauth)\r\nname: WOODPECKER_DEV_GITEA_OAUTH_URL\r\nvalue: \"http://gitea.localhost\"\r\n\r\n(for access from woodpecker)\r\nname: WOODPECKER_GITEA_URL\r\nvalue: \"http://gitea-http.gitea:3000\"\r\n\r\nAnd this in gitea:\r\nname: GITEA__server__ROOT_URL\r\nvalue: \"http://gitea-http.gitea:3000\"\r\n\r\nWhen webhooks are delivered, gitea gets the response HTTP 403 with the body \"failure to verify token from hook. Expected manager/php-app, got \" (really blank at the end, I did not truncate the message).\r\n\r\nI assume this is the origin:\r\nhttps://github.com/woodpecker-ci/woodpecker/blob/ed7fe029796a1ca6f119a7458ae5c7f23bf97aa1/server/api/hook.go#L204\r\n\r\nIt worked in WP 2.4 (when I did not use separate URLs though)",[],3775,"Gitea Webhook fails with Woodpecker 2.5.0","2024-06-13T19:11:31Z","https://github.com/woodpecker-ci/woodpecker/issues/3775",0.75133073,{"description":2938,"labels":2939,"number":2941,"owner":2863,"repository":2864,"state":2924,"title":2942,"updated_at":2943,"url":2944,"score":2945},"### Clear and concise description of the problem\n\nThe Curve storage team is experimenting with this feature recently, and I think it could be very useful.\r\n\r\n\n\n### Suggested solution\n\nThere are already related implementations on GitHub.\r\n[ChatGPT-CodeReview](https://github.com/anc95/ChatGPT-CodeReview)\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.",[2940],{"name":2921,"color":2922},1673,"Can you provide a code review feature based on ChatGPT?","2023-03-23T02:07:56Z","https://github.com/woodpecker-ci/woodpecker/issues/1673",0.7555976,{"description":2947,"labels":2948,"number":2954,"owner":2863,"repository":2864,"state":2924,"title":2955,"updated_at":2956,"url":2957,"score":2958},"- mention how settings are de-serialized\r\n- mention build-in-env-vars\r\n- mention best practics\r\n- mention multiarch build, as official immages try to always have linux/amd64 & linux/arm64 images, and so other plugins should try to do so to",[2949,2952,2953],{"name":2950,"color":2951},"plugin","887B27",{"name":2909,"color":2910},{"name":2880,"color":2881},1389,"Document how to create an own plugin","2023-12-30T20:24:09Z","https://github.com/woodpecker-ci/woodpecker/issues/1389",0.7623905,{"description":2960,"labels":2961,"number":2963,"owner":2863,"repository":2864,"state":2924,"title":2964,"updated_at":2965,"url":2966,"score":2967},"### Component\r\n\r\nserver\r\n\r\n### Describe the bug\r\n\r\nI am trying to upgrade woodpecker from some old version (DB probably first created by some 'next' snapshot) to v1 using `docker compose`\r\nDatabase is sqlite\r\n\r\nOn startup I get this error message several times:\r\n\r\n```\r\nwoodpecker-ci-v1-woodpecker-server-1 | 1:56PM FTL woodpecker/src/github.com/woodpecker-ci/woodpecker/cmd/server/setup.go:94 > could not migrate datastore error=\"msg: Sync error '*model.Secret': UNIQUE constraint failed: secrets.secret_org_id, secrets.secret_repo_id, secrets.secret_name\"\r\n```\r\n\r\nTryed to figure out what is going wrong:\r\n\r\nIn migrated database:\r\n\r\n```\r\nsqlite> select secret_id, secret_org_id, secret_repo_id, secret_name from secrets order by secret_org_id, secret_repo_id, secret_name;\r\nsecret_id|secret_org_id|secret_repo_id|secret_name\r\n18|0|0|SETTINGS_XML\r\n19|0|0|SETTINGS_XML\r\n20|0|0|SONAR_LOGIN\r\n...\r\n```\r\n\r\nIn original database (good to have backups):\r\n```\r\n18|XXX|0|SETTINGS_XML\r\n19|YYY|0|SETTINGS_XML\r\n20|YYY|SONAR_LOGIN\r\n```\r\n\r\nwhere `XXX` and `YYY` are organisations containing capital letters.\r\n\r\n\r\nThe fix was to assign the secrets to the correct organisations by:\r\n\r\n```\r\nupdate secrets set secret_org_id=6 where secret_id=18;\r\nupdate secrets set secret_org_id=2 where secret_id=19;\r\nupdate secrets set secret_org_id=2 where secret_id=20;\r\n```\r\n\r\nHad to figure out the correct ids in the `orgs` table manually.\r\n\r\nThe reason for this bug probably is that the `name` in the `orgs`table got converted to lowercase during the migration:\r\nhttps://github.com/woodpecker-ci/woodpecker/blob/1f956753659204d46d834ac3d0cb68fd71a5b941/server/store/datastore/migration/021_add_orgs.go#L67\r\n\r\nAnd updating the secrets table dows not compare by ignoring case:\r\nhttps://github.com/woodpecker-ci/woodpecker/blob/1f956753659204d46d834ac3d0cb68fd71a5b941/server/store/datastore/migration/021_add_orgs.go#L89-L93\r\n\r\nMaybe changing `orgName` to `repo.Owner` will solve the issue.\r\n\r\nAnother observation is, that most of the secrets are written in lower case, but there are some in UPPERCASE letters.\r\nIs this still valid or shall i convert this to lowercase too?\r\n\r\n### System Info\r\n\r\n```shell\r\nNot reveant as it is a version compiled by myself which does not have changes on database handling.\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/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).",[2962],{"name":2857,"color":2858},2209,"Migration error on secrets table while updating from some old version to v1.0","2025-01-10T21:24:39Z","https://github.com/woodpecker-ci/woodpecker/issues/2209",0.7635805,{"description":2969,"labels":2970,"number":2975,"owner":2863,"repository":2864,"state":2924,"title":2976,"updated_at":2977,"url":2978,"score":2979},"### Component\n\nserver\n\n### Describe the bug\n\nThe current implementation of Bitbucket Forge makes an excessive number of API requests to fetch all repositories and the current user permissions associated with them. It performs an extra API call per every repository found.\r\n\r\nThis significantly impacts users, particularly those with access to numerous repositories, especially when the Bitbucket API experiences high latency. It can take minutes after logging in or pressing the 'Reload Repositories' button.\r\n\n\n### System Info\n\n```shell\n{\"source\":\"https://github.com/woodpecker-ci/woodpecker\",\"version\":\"dev\"}\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/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 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).",[2971,2972],{"name":2877,"color":2878},{"name":2973,"color":2974},"forge/bitbucket","E96280",3210,"Slow fetch of repos info after login when using Bitbucket Cloud forge","2024-01-19T03:15:59Z","https://github.com/woodpecker-ci/woodpecker/issues/3210",0.7638266,["Reactive",2981],{},["Set"],["ShallowReactive",2984],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fGmEHXmlY8RXavupjGIjDKgfm6S7Yx2SckoENJn8ad70":-1},"/woodpecker-ci/woodpecker/2980"]