\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).",[2905,2908],{"name":2906,"color":2907},"bug","d73a4a",{"name":2891,"color":2892},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.7421519,{"description":2915,"labels":2916,"number":2918,"owner":2863,"repository":2864,"state":2865,"title":2919,"updated_at":2920,"url":2921,"score":2922},"_as per https://github.com/woodpecker-ci/woodpecker/issues/3856#issuecomment-2231454406_\r\n\r\nhave some regex / heuristics that check if the image could be valid in the first place",[2917],{"name":2857,"color":2858},3919,"linter: check if image is invalid","2024-07-16T17:43:33Z","https://github.com/woodpecker-ci/woodpecker/issues/3919",0.74459755,{"description":2924,"labels":2925,"number":2928,"owner":2863,"repository":2864,"state":2929,"title":2930,"updated_at":2931,"url":2932,"score":2933},"### 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).",[2926,2927],{"name":2906,"color":2907},{"name":2891,"color":2892},2079,"closed","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.7295879,{"description":2935,"labels":2936,"number":2937,"owner":2863,"repository":2864,"state":2929,"title":2938,"updated_at":2939,"url":2940,"score":2941},"### Component\n\nserver, web-ui\n\n### Describe the bug\n\nDue to various technical limitations of my situation I want to run a woodpecker-ci server behind an apache reverse-proxy server, reachable by an url like `https://example.org/foo`.\r\nI.e. the web server does *NOT* simply forward all requests, but only requests for `https://example.com/foo/*` are forwarded to `localhost:8000/*`.\r\n\r\nThe issue is now, that even if I configure `WOODPECKER_HOST=https://example.org/foo`, the `index.html` that is served still references further assets by absolute paths like `/web-config.js`, which causes the browser to request `https://example.com/web-config.js` instead of `https://example.com/foo/web-config.js`.\r\n\r\nI can successfully run Gitea behind such a reverse-proxy, so the web server is not to blame here.\r\n\n\n### System Info\n\n```shell\n{\"source\":\"https://github.com/woodpecker-ci/woodpecker\",\"version\":\"next-6d86ec7fe7\"}\n```\n\n\n### Additional context\n\nHere is an example (running on local host)\r\n\r\n\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).",[],2477,"Server not honoring url path component of WOODPECKER_HOST","2023-09-19T16:30:20Z","https://github.com/woodpecker-ci/woodpecker/issues/2477",0.7296687,{"description":2943,"labels":2944,"number":2946,"owner":2863,"repository":2864,"state":2929,"title":2947,"updated_at":2948,"url":2949,"score":2950},"### Component\n\nagent\n\n### Describe the bug\n\ni am using woodpecker:next docker image and configured for my gitea instance:\r\n```yml\r\n# docker-compose.yml \r\nversion: '3'\r\nnetworks:\r\n put_net:\r\n driver: bridge\r\n ipam:\r\n driver: default\r\n config:\r\n - \r\n subnet: 172.18.0.0/24\r\n gateway: 172.18.0.1\r\n\r\nservices:\r\n woodpecker-server:\r\n image: woodpeckerci/woodpecker-server:next\r\n networks:\r\n put_net:\r\n ipv4_address: 172.18.0.2\r\n extra_hosts:\r\n - \"n3s1.sbc-io.xyz:10.7.1.4\"\r\n ports:\r\n - 8999:8000\r\n expose:\r\n - \"9000\"\r\n volumes:\r\n - woodpecker-server-data:/mnt/m1/wpdata\r\n environment:\r\n - WOODPECKER_OPEN=true\r\n - WOODPECKER_HOST=https://woodpecker.example:3944\r\n - WOODPECKER_GITEA=true\r\n - WOODPECKER_GITEA_URL=https://gitea.example:3943/\r\n - WOODPECKER_GITEA_CLIENT=0c7d543a-b70a-461c-bb06-ef32c912789c\r\n - WOODPECKER_GITEA_SECRET=gto_secret\r\n - WOODPECKER_AGENT_SECRET=secretexample\r\n - WOODPECKER_DATABASE_DRIVER=postgres\r\n - WOODPECKER_DATABASE_DATASOURCE=postgres://woodpecker_u:passwd@172.17.0.1:5432/woodpecker_db?sslmode=disable\r\n - WOODPECKER_AUTHENTICATE_PUBLIC_REPOS=true\r\n - WOODPECKER_DEFAULT_CLONE_IMAGE=woodpeckerci/plugin-git:next\r\n - WOODPECKER_ADMIN=WoodpeckerBot\r\n\r\n woodpecker-agent:\r\n image: woodpeckerci/woodpecker-agent:next\r\n networks:\r\n put_net:\r\n ipv4_address: 172.18.0.3\r\n extra_hosts:\r\n - \"gitea.example:10.7.1.4\"\r\n command: agent\r\n restart: always\r\n depends_on:\r\n - woodpecker-server\r\n links:\r\n - woodpecker-server\r\n tmpfs:\r\n - /tmp\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=secretexample\r\n\r\nvolumes:\r\n woodpecker-server-data:\r\n```\r\n\r\nnow there is a private repo in the list:\r\n\r\n\r\nbut Pipelines are failing:\r\n```\r\n+ git init -b main\r\nInitialized empty Git repository in /woodpecker/src/gitea.example/main-mirrors-private/proj/.git/\r\n+ git remote add origin \r\n+ git fetch --no-tags origin +refs/heads/main:\r\nfatal: no path specified; see 'git help pull' for valid url syntax\r\nexit status 128\r\n```\r\ni found that remote url is gone:\r\n`+ git remote add origin *[remote url]*` on line 3 above\r\n\r\nafter execute `Repair repository` on settings, I can restart this pipeline without issues:\r\n```\r\n+ git init -b main\r\nInitialized empty Git repository in /woodpecker/src/gitea.example/main-mirrors-private/proj/.git/\r\n+ git remote add origin https://gitea.example:3943/main-mirrors-private/proj.git\r\n+ git fetch --no-tags origin +refs/heads/main:\r\nFrom https://gitea.example:3943/main-mirrors-private/proj\r\n * branch main -> FETCH_HEAD\r\n * [new branch] main -> origin/main\r\n+ git reset --hard -q 7905a6e4214a2969b5106a19806e6c56442675e9\r\n+ git submodule update --init --recursive\r\n```\r\nbut after I push a new commit to trigger CI, the new pipeline failed:\r\n```\r\n+ git init -b main\r\nInitialized empty Git repository in /woodpecker/src/gitea.example/main-mirrors-private/proj/.git/\r\n+ git remote add origin \r\n+ git fetch --no-tags origin +refs/heads/main:\r\nfatal: no path specified; see 'git help pull' for valid url syntax\r\nexit status 128\r\n```\r\n\r\nlogs:\r\n```\r\nwp-conf-woodpecker-agent-1 | {\"level\":\"error\",\"error\":\"io: read/write on closed pipe\",\"time\":\"2022-09-07T02:47:06Z\",\"message\":\"copy limited logStream part\"}\r\nwp-conf-woodpecker-agent-1 | {\"level\":\"error\",\"error\":\"rpc error: code = Unknown desc = Proc finished with exitcode 128, \",\"time\":\"2022-09-07T02:47:07Z\",\"message\":\"grpc error: wait(): code: Unknown: rpc error: code = Unknown desc = Proc finished with exitcode 128, \"}\r\nwp-conf-woodpecker-agent-1 | {\"level\":\"warn\",\"repo\":\"main-mirrors-private/repo\",\"build\":\"21\",\"id\":\"61\",\"error\":\"rpc error: code = Unknown desc = Proc finished with exitcode 128, \",\"time\":\"2022-09-07T02:47:07Z\",\"message\":\"cancel signal received\"}\r\n```\n\n### System Info\n\n```shell\nhttps://woodpecker.example:3944/version\r\n{\r\n \"source\":\"https://github.com/woodpecker-ci/woodpecker\",\r\n \"version\":\"next-05d660f2\"\r\n}\r\n\r\nDocker Compose version v2.6.0\n```\n\n\n### Additional context\n\nlogs:\r\n```\r\nwp-conf-woodpecker-agent-1 | {\"level\":\"error\",\"error\":\"io: read/write on closed pipe\",\"time\":\"2022-09-07T02:47:06Z\",\"message\":\"copy limited logStream part\"}\r\nwp-conf-woodpecker-agent-1 | {\"level\":\"error\",\"error\":\"rpc error: code = Unknown desc = Proc finished with exitcode 128, \",\"time\":\"2022-09-07T02:47:07Z\",\"message\":\"grpc error: wait(): code: Unknown: rpc error: code = Unknown desc = Proc finished with exitcode 128, \"}\r\nwp-conf-woodpecker-agent-1 | {\"level\":\"warn\",\"repo\":\"main-mirrors-private/repo\",\"build\":\"21\",\"id\":\"61\",\"error\":\"rpc error: code = Unknown desc = Proc finished with exitcode 128, \",\"time\":\"2022-09-07T02:47:07Z\",\"message\":\"cancel signal received\"}\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] 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).",[2945],{"name":2906,"color":2907},1169,"gitea remote url disappears - fatal: no path specified","2024-04-18T14:47:43Z","https://github.com/woodpecker-ci/woodpecker/issues/1169",0.7309225,{"description":2952,"labels":2953,"number":2958,"owner":2863,"repository":2864,"state":2929,"title":2959,"updated_at":2960,"url":2961,"score":2962},"### Component\n\nagent\n\n### Describe the bug\n\npipeline file like this\r\n```yml\r\n---\r\nlabels:\r\n platform: linux/amd64\r\n backend: local\r\n\r\nsteps:\r\n hello:\r\n image: bash\r\n commands:\r\n - uname -a\r\n - pwd\r\n - echo $${CI_WORKSPACE}\r\n - ls -AFlh\r\n - echo \"hello world 你好\"\r\n - touch hello.txt\r\n - echo $${PATH}\r\n\r\n 测试:\r\n image: bash\r\n commands:\r\n - uname -a\r\n - pwd\r\n - ls -AFlh\r\n - echo \"hello world 你好 测试\"\r\n```\r\n\r\nCI_WORKSPACE set wrong in local backends\r\n\r\n\r\n\n\n### System Info\n\n```shell\n{\"source\":\"https://github.com/woodpecker-ci/woodpecker\",\"version\":\"1.0.3\"}\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).",[2954,2955],{"name":2906,"color":2907},{"name":2956,"color":2957},"backend/local","bfdadc",2610,"CI_WORKSPACE set wrong in local backends","2023-10-23T10:54:12Z","https://github.com/woodpecker-ci/woodpecker/issues/2610",0.7329696,{"description":2964,"labels":2965,"number":2966,"owner":2863,"repository":2864,"state":2929,"title":2967,"updated_at":2968,"url":2969,"score":2970},"### 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,"Broken Cancel Pipeline in Web UI and CLI","2022-10-30T13:39:03Z","https://github.com/woodpecker-ci/woodpecker/issues/1369",0.7330205,["Reactive",2972],{},["Set"],["ShallowReactive",2975],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fzAfvHdD43fOficEho0o19WxiBOS2-seEbYU8mdxSK0g":-1},"/woodpecker-ci/woodpecker/2368"]