\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.762207,{"description":1999,"labels":2000,"number":2005,"owner":1991,"repository":1992,"state":1993,"title":2006,"updated_at":2007,"url":2008,"score":2009},"https://github.com/woodpecker-ci/woodpecker/blob/b1d697b52a49666cb6b8cccda04f3518db9e9a0d/pipeline/stepBuilder.go#L219-L227\r\n\r\nFrom #796 \r\n\r\ncheck if we should escape in general (what about \\t ...?)",[2001,2002],{"name":1988,"color":1989},{"name":2003,"color":2004},"enhancement","7E1FE4",1258,"Improve env var escaping (vars in pipeline config, bevore parsing)","2024-02-24T10:46:15Z","https://github.com/woodpecker-ci/woodpecker/issues/1258",0.782035,{"description":2011,"labels":2012,"number":2015,"owner":1991,"repository":1992,"state":1993,"title":2016,"updated_at":2017,"url":2018,"score":2019},"Related issues: https://github.com/woodpecker-ci/woodpecker/issues/178 https://github.com/woodpecker-ci/woodpecker/issues/33\r\n\r\nOur problem:\r\n- a build can take 10-15 minutes\r\n- agent run as kubernetes pods\r\n- if an agent dies immediately (no graceful termination, for instance the node instantly goes away) and the build is running, the build stays in a \"running\" state until the timeout kicks in (by default 60 minutes)\r\n- instead of finishing as a failure (timeout), the build is rescheduled on a different agent, and starts over; it has the same build number and build steps run again as the same \"original\" build\r\n\r\nThis breaks flows where we assume the build number to be unique (as Restarting from the UI normally generates a new build number).\r\n\r\nAny chance this can be configured?",[2013,2014],{"name":1988,"color":1989},{"name":2003,"color":2004},220,"Agent interrupted builds restarted - is this desired/configurable?","2024-09-16T09:38:36Z","https://github.com/woodpecker-ci/woodpecker/issues/220",0.79178107,{"description":2021,"labels":2022,"number":2030,"owner":1991,"repository":1992,"state":1993,"title":2031,"updated_at":2032,"url":2033,"score":2034},"### 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.",[2023,2024,2027],{"name":1988,"color":1989},{"name":2025,"color":2026},"feature","180DBE",{"name":2028,"color":2029},"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.7944558,{"description":2036,"labels":2037,"number":2042,"owner":1991,"repository":1992,"state":2043,"title":2044,"updated_at":2045,"url":2046,"score":2047},"### Component\n\nserver\n\n### Describe the bug\n\nReporting the build status to GitHub stops working:\r\n\r\n```\r\n{\"level\":\"error\",\"error\":\"POST https://api.github.com/repos/thegeeklab/ansible-doctor/statuses/2382baa8f8a98e332aedad3142536d67a36da1db: 422 Validation Failed [{Resource:Status Field:context Code:missing_field Message:}]\",\"time\":\"2023-11-03T09:13:47Z\",\"message\":\"error setting commit status for thegeeklab/ansible-doctor/120\"}\r\n{\"level\":\"error\",\"error\":\"POST https://api.github.com/repos/thegeeklab/ansible-doctor/statuses/2382baa8f8a98e332aedad3142536d67a36da1db: 422 Validation Failed [{Resource:Status Field:context Code:missing_field Message:}]\",\"time\":\"2023-11-03T09:13:47Z\",\"message\":\"error setting commit status for thegeeklab/ansible-doctor/120\"}\r\n{\"level\":\"error\",\"error\":\"POST https://api.github.com/repos/thegeeklab/ansible-doctor/statuses/2382baa8f8a98e332aedad3142536d67a36da1db: 422 Validation Failed [{Resource:Status Field:context Code:missing_field Message:}]\",\"time\":\"2023-11-03T09:13:47Z\",\"message\":\"error setting commit status for thegeeklab/ansible-doctor/120\"}\r\n{\"level\":\"error\",\"error\":\"POST https://api.github.com/repos/thegeeklab/ansible-doctor/statuses/2382baa8f8a98e332aedad3142536d67a36da1db: 422 Validation Failed [{Resource:Status Field:context Code:missing_field Message:}]\",\"time\":\"2023-11-03T09:14:14Z\",\"message\":\"error setting commit status for thegeeklab/ansible-doctor/120\"}\r\n```\r\n\r\nExample repo: https://github.com/thegeeklab/ansible-doctor/pull/591\r\nExample CI: https://ci.thegeeklab.de/repos/20/pipeline/120\n\n### System Info\n\n```shell\n`next-f270be4940`\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).",[2038,2039],{"name":1985,"color":1986},{"name":2040,"color":2041},"regression","7E192B",2716,"closed","Build status not reported to GitHub","2023-11-03T12:00:36Z","https://github.com/woodpecker-ci/woodpecker/issues/2716",0.72896314,{"description":2049,"labels":2050,"number":2052,"owner":1991,"repository":1992,"state":2043,"title":2053,"updated_at":2054,"url":2055,"score":2056},"### 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).",[2051],{"name":1985,"color":1986},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.73153865,{"description":2058,"labels":2059,"number":2061,"owner":1991,"repository":1992,"state":2043,"title":2062,"updated_at":2063,"url":2064,"score":2065},"### Component\n\nagent\n\n### Describe the bug\n\nWe are getting `exit code 2` as the ONLY error message for a pipeline, with no other information, and replacing previously gathered logs about the job being executed.\r\n\r\nI connected to the container running the step and did see it working fine and doing its things until my interactive shell section got killed by something (I guess by the agent) and its processes output logs, previously shown on the job page were replaced by this obscure `exit code 2`.\r\n\r\nSee https://trac.osgeo.org/postgis/ticket/5438 for details\n\n### System Info\n\n```shell\n{\"source\":\"https://github.com/woodpecker-ci/woodpecker\",\"version\":\"0.15.5\"}\n```\n\n\n### Additional context\n\n\r\n\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).",[2060],{"name":1985,"color":1986},1951,"Logs missing and \"unknown error\" printed on exit code 2","2023-07-29T13:12:54Z","https://github.com/woodpecker-ci/woodpecker/issues/1951",0.7448033,{"description":2067,"labels":2068,"number":2071,"owner":1991,"repository":1992,"state":2043,"title":2072,"updated_at":2073,"url":2074,"score":2075},"### Component\n\nserver\n\n### Describe the bug\n\nAfter migration form 0.15.11 After migration from 0.15.11 during start of server, we get this error:\r\n\r\n```\r\nwodpecker-server_1 | {\"time\":\"2023-08-01T07:07:19Z\",\"message\":\"LogLevel = info\"}\r\nwoodpecker-server_1 | {\"level\":\"error\",\"error\":\"Migrating logs to log_entries is skipped, as we have 49180 entries to convert. Set 'WOODPECKER_MIGRATIONS_ALLOW_LONG' to 'true' to migrate anyway\",\"time\":\"2023-08-01T07:07:19Z\",\"message\":\"migration task 'migrate-logs-to-log_entries' failed but is not required\"}\r\nwoodpecker-server_1 | {\"level\":\"info\",\"time\":\"2023-08-01T07:07:19Z\",\"message\":\"Starting Woodpecker server with version '1.0.0'\"}\r\n\r\n```\r\nSetting WOODPECKER_MIGRATIONS_ALLOW_LONG to true does nothing. \r\n\n\n### System Info\n\n```shell\n{\"source\":\"https://github.com/woodpecker-ci/woodpecker\",\"version\":\"1.0.0\"}\r\n\r\n\r\nversion: '3'\r\n\r\nservices:\r\n woodpeckerdb:\r\n image: postgres:14.5-alpine\r\n restart: always\r\n environment:\r\n POSTGRES_DB: xxxxx\r\n POSTGRES_USER: xxx\r\n POSTGRES_PASSWORD: xxx\r\n TZ: Europe/Zagreb\r\n volumes:\r\n - ./_data/db/postgres:/var/lib/postgresql/data\r\n \r\n woodpecker-server:\r\n #image: woodpeckerci/woodpecker-server:v0.15.11-alpine\r\n image: woodpeckerci/woodpecker-server:v1.0.0-alpine\r\n restart: always\r\n depends_on:\r\n - woodpeckerdb\r\n volumes:\r\n - ./_data/woodpecker:/var/lib/woodpecker\r\n environment:\r\n - WOODPECKER_OPEN=true\r\n - WOODPECKER_OPEN=true\r\n - WOODPECKER_HOST=https://ci.domain.local\r\n - WOODPECKER_AGENT_SECRET=xxxx\r\n - WOODPECKER_GITEA=true\r\n - WOODPECKER_GITEA_URL=https://gitea.domain.local\r\n - WOODPECKER_GITEA_CLIENT=085e34c6-a362-42d2-9344-d4ab5f556bb4\r\n - WOODPECKER_GITEA_SECRET=gto_53npywpjlwwp4planwetxa2ixqbjloh4rq37sl6dfwqqzlej547q\r\n - WOODPECKER_AUTHENTICATE_PUBLIC_REPOS=true\r\n - WOODPECKER_BACKEND_DOCKER_NETWORK=fronted_network\r\n - WOODPECKER_DATABASE_DRIVER=postgres\r\n - WOODPECKER_DATABASE_DATASOURCE=postgres://woodpecker:woodpecker@woodpeckerdb:5432/woodpeckerdb?sslmode=disable\r\n - WOODPECKER_MIGRATIONS_ALLOW_LONG=true\r\n```\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).",[2069,2070],{"name":1985,"color":1986},{"name":1988,"color":1989},2079,"After migration from 0.15.11 getting error \"error\":\"Migrating logs to log_entries is skipped, as we have 49180 entries to convert on app start","2023-08-21T07:29:47Z","https://github.com/woodpecker-ci/woodpecker/issues/2079",0.7613249,{"description":2077,"labels":2078,"number":2083,"owner":1991,"repository":1992,"state":2043,"title":2084,"updated_at":2085,"url":2086,"score":2087},"For storage intensive pipelines would be nice to have an option to put workspace in ram disk (i.e. tmpfs); will be huge relief for systems with plenty of RAM and slower storage; pipelines will probably be much faster too.\r\n\r\nSimilar drone issue:\r\nhttps://discourse.drone.io/t/make-drone-src-workspace-a-tmpfs/8040\r\n\r\nRegards,\r\nPaweł\r\n",[2079,2080],{"name":2025,"color":2026},{"name":2081,"color":2082},"pipeline-config","1BE540",186,"Option to place workspace and service storage in RAM","2023-08-20T20:35:11Z","https://github.com/woodpecker-ci/woodpecker/issues/186",0.773364,{"description":2089,"labels":2090,"number":2091,"owner":1991,"repository":1992,"state":2043,"title":2092,"updated_at":2093,"url":2094,"score":2095},"It would be really good to have a copy/paste instructions for how to reset user token, ideally [right on the user page.](https://github.com/woodpecker-ci/woodpecker/blob/b15879d4606ad19c89388a669617afce1eb995a2/web/src/views/User.vue#L9) as if a token is compromised, one needs to react fast. Or maybe even a \"Reset token\" button.\r\n\r\nIt seems that as per [this](https://discourse.drone.io/t/ability-to-update-user-authorization-token/1002/3) forum discussion this is the way to reset it (please confirm, i have not tested it):\r\n\r\n`curl -X DELETE -H \"Authorization: Bearer ${WOODPECKER_TOKEN}\" ${WOODPECKER_SERVER}/api/user/token`",[],696,"Indicate on the user page how to reset user token","2023-05-14T16:48:35Z","https://github.com/woodpecker-ci/woodpecker/issues/696",0.77465165,["Reactive",2097],{},["Set"],["ShallowReactive",2100],{"TRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"QrkDtAYnkC7--ka_rahVyonBzzpqSnOpXq_Yyapfqtw":-1},"/woodpecker-ci/woodpecker/3884"]