\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).",[2039,2042],{"name":2040,"color":2041},"bug","d73a4a",{"name":1985,"color":1986},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.7585704,{"description":2049,"labels":2050,"number":2052,"owner":1994,"repository":1995,"state":2053,"title":2054,"updated_at":2055,"url":2056,"score":2057},"As discussed in discord:\r\n\r\nThe document https://woodpecker-ci.org/docs/administration/server-config says: `If you want to make available a specific private registry to all pipelines, use the WOODPECKER_DOCKER_CONFIG server configuration. Point it to your server's docker config. Example: WOODPECKER_DOCKER_CONFIG=/home/user/.docker/config.json`\r\n\r\nIt's not easy to understand how WOODPECKER_DOCKER_CONFIG works and what affect it would bring, the path is unclear about where the config file should be put (on the host or in the docker). It's better to use a real example to demo the real usage.\r\n\r\nFurther more, if users want to setup a docker-in-docker (dind) system (which is more secure, isolate the host's docker), the problem becomes more complex: woodpecker agent container need to access the dind daemon to start pipeline containers, and the pipeline containers also need to access the dind daemon to do `docker build/push`, they all need correct `DOCKER_HOST` and `DOCKER_CONFIG` settings.",[2051],{"name":2026,"color":2027},720,"closed","Document about `WOODPECKER_DOCKER_CONFIG`","2023-03-21T00:32:22Z","https://github.com/woodpecker-ci/woodpecker/issues/720",0.6899513,{"description":2059,"labels":2060,"number":2065,"owner":1994,"repository":1995,"state":2053,"title":2066,"updated_at":2067,"url":2068,"score":2069},"### Component\n\nagent\n\n### Describe the bug\n\nRepository has registry secret for myregistry.tld\r\nStep in workflow references myregistry.tld/path/my-plugin:latest\r\nAgent creates build pod, but references non-existing pull-secret \"regcred\":\r\n\r\n```yaml\r\napiVersion: v1\r\nkind: Pod\r\n#...\r\nspec:\r\n containers:\r\n - #...\r\n image: myregistry.tld/path/my-plugin:latest\r\n imagePullPolicy: Always\r\n name: wp-...\r\n #...\r\n imagePullSecrets:\r\n - name: regcred\r\n```\r\n\n\n### System Info\n\n```shell\ndocker.io/woodpeckerci/woodpecker-server:next (sha256:391eb21a843bf7e38bb4bfd5a529452e31733d90a494c6d3e783f8f1ac3630b3)\r\ndocker.io/woodpeckerci/woodpecker-agent:next (sha256:60a04e5b59bbec66bf5a61fc15fcbd8f4b44693602893d10e6f74270f21d2915)\r\nkubernetes 1.28.2\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).",[2061,2062],{"name":2006,"color":2007},{"name":2063,"color":2064},"backend/kubernetes","bfdadc",2987,"Kubernetes backend references non-existing pull secret: regcred","2024-09-30T00:03:07Z","https://github.com/woodpecker-ci/woodpecker/issues/2987",0.7143386,{"description":2071,"labels":2072,"number":2075,"owner":1994,"repository":1995,"state":2053,"title":2076,"updated_at":2077,"url":2078,"score":2079},"### Clear and concise description of the problem\n\nWhen I send notify, I want to include the pipeline name, e.g. the miniapp & app-server for below build\r\n\r\n\u003Cimg width=\"648\" alt=\"image\" src=\"https://user-images.githubusercontent.com/1777211/227702720-f1eac3e2-e404-4895-bff7-0d59d0308308.png\">\r\n\n\n### Suggested solution\n\nhow about `CI_PIPELINE_NAME`\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.",[2073,2074],{"name":1988,"color":1989},{"name":2029,"color":2030},1681,"env for pipeline name","2023-04-08T11:15:30Z","https://github.com/woodpecker-ci/woodpecker/issues/1681",0.72214186,{"description":2081,"labels":2082,"number":2084,"owner":1994,"repository":1995,"state":2053,"title":2085,"updated_at":2086,"url":2087,"score":2088},"### Component\r\n\r\nagent\r\n\r\n### Describe the bug\r\n\r\nTrying to run pipeline with a service in IPv6-only cluster. Get error:\r\n\r\n\r\n\r\n\r\n### System Info\r\n\r\n```shell\r\nWoodpecker next-619858e0\r\nK3s 1.28.4\r\n```\r\n\r\n\r\n### Additional context\r\n\r\n[woodpecker-agent.log](https://github.com/woodpecker-ci/woodpecker/files/13751825/woodpecker-agent.log)\r\n\r\n```yaml\r\nservices:\r\n database:\r\n image: mysql\r\n environment:\r\n - MYSQL_DATABASE=test\r\n - MYSQL_ROOT_PASSWORD=example\r\n ports:\r\n - 3306/tcp\r\nsteps:\r\n get-version:\r\n image: ubuntu\r\n commands:\r\n - ( apt update && apt dist-upgrade -y && apt install -y mysql-client 2>&1 )> /dev/null\r\n - sleep 30s # need to wait for mysql-server init\r\n - echo 'SHOW VARIABLES LIKE \"version\"' | mysql -uroot -hdatabase test -pexample\r\n\r\n```\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).",[2083],{"name":2040,"color":2041},2991,"Invalid hostAliases.ip in IPv6-only cluster","2023-12-22T23:42:32Z","https://github.com/woodpecker-ci/woodpecker/issues/2991",0.7380939,{"description":2090,"labels":2091,"number":2094,"owner":1994,"repository":1995,"state":2053,"title":2095,"updated_at":2096,"url":2097,"score":2098},"### Component\r\n\r\nserver\r\n\r\n### Describe the bug\r\n\r\nAfter I run a simple rust test job, the server crashes because of `Write called after Handler finished`.\r\n\r\nThis is a new instance, trying to follow the docs as much as possible, on a digital ocean docker container instance.\r\n\r\n### System Info\r\n\r\n\r\nversion:\r\n```\r\nsource\t\"https://github.com/woodpecker-ci/woodpecker\"\r\nversion\t\"0.15.5\"\r\n```\r\n\r\ndocker-compose:\r\n```\r\nversion: '3'\r\n\r\nservices:\r\n woodpecker-server:\r\n image: woodpeckerci/woodpecker-server:latest\r\n restart: always\r\n ports:\r\n - 8000:8000\r\n - 9000:9000\r\n - 80:80\r\n - 443:443\r\n volumes:\r\n - woodpecker-server-data:/var/lib/woodpecker/\r\n environment:\r\n - WOODPECKER_OPEN=true\r\n - WOODPECKER_HOST=https://omitted\r\n - WOODPECKER_AGENT_SECRET=omitted\r\n - WOODPECKER_GITEA=true\r\n - WOODPECKER_GITEA_URL=omitted\r\n - WOODPECKER_GITEA_CLIENT=omitted\r\n - WOODPECKER_GITEA_SECRET=omitted\r\n - WOODPECKER_LETS_ENCRYPT=true\r\n\r\n woodpecker-agent:\r\n image: woodpeckerci/woodpecker-agent:latest\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=omitted\r\n - WOODPECKER_MAX_PROCS=4\r\n\r\nvolumes:\r\n woodpecker-server-data:\r\n```\r\n\r\n.woodpecker.yml:\r\n```\r\npipeline:\r\n test:\r\n image: rust\r\n commands:\r\n - cd rust-folder\r\n - cargo test\r\n```\r\n\r\n\r\n### Additional context\r\n\r\n```\r\nroot@docker-ubuntu-c-2-4gib-nyc1-01:~# docker-compose up -d \r\nRecreating root_woodpecker-server_1 ... done \r\nRecreating root_woodpecker-agent_1 ... done \r\nroot@docker-ubuntu-c-2-4gib-nyc1-01:~# docker-compose logs -f \r\nAttaching to root_woodpecker-agent_1, root_woodpecker-server_1 \r\nwoodpecker-server_1 | {\"time\":\"2022-10-22T17:10:12Z\",\"message\":\"LogLevel = warn\"} \r\nwoodpecker-agent_1 | {\"level\":\"error\",\"error\":\"io: read/write on closed pipe\",\"time\":\"2022-10-22T17:10:42Z\",\"message\":\"copy limited logStream part\"} \r\nwoodpecker-agent_1 | {\"level\":\"error\",\"error\":\"rpc error: code = Unavailable desc = closing transport due to: connection error: desc = \\\"error reading from server: EOF\\\", received prior go\r\naway: code: ENHANCE_YOUR_CALM, debug data: \\\"too_many_pings\\\"\",\"time\":\"2022-10-22T17:11:13Z\",\"message\":\"grpc error: wait(): code: Unavailable: rpc error: code = Unavailable desc = closing tr\r\nansport due to: connection error: desc = \\\"error reading from server: EOF\\\", received prior goaway: code: ENHANCE_YOUR_CALM, debug data: \\\"too_many_pings\\\"\"} \r\nwoodpecker-agent_1 | {\"level\":\"error\",\"error\":\"io: read/write on closed pipe\",\"time\":\"2022-10-22T17:12:47Z\",\"message\":\"copy limited logStream part\"}\r\nwoodpecker-agent_1 | {\"level\":\"error\",\"error\":\"Error response from daemon: Cannot kill container: 0_1428886657477204797_clone: Container acdb5d89928689be75e01b1dee62be669f5d36332a0dddc10bf\r\nfd0710f9e3972 is not running\",\"time\":\"2022-10-22T17:12:47Z\",\"message\":\"could not kill container '0_1428886657477204797_clone'\"}\r\nwoodpecker-agent_1 | {\"level\":\"error\",\"error\":\"Error response from daemon: Cannot kill container: 0_1428886657477204797_step_0: Container cf3fa3e9941773b78245901ae8c3e69613851625d5ea4f6ca0\r\n0ab13d8cc83a14 is not running\",\"time\":\"2022-10-22T17:12:47Z\",\"message\":\"could not kill container '0_1428886657477204797_stage_0'\"}\r\nwoodpecker-server_1 | panic: Write called after Handler finished\r\nwoodpecker-server_1 | \r\nwoodpecker-server_1 | goroutine 189 [running]:\r\nwoodpecker-server_1 | net/http.(*http2responseWriter).write(0xc00045d500?, 0xc000678688?, {0x0?, 0xf93260?, 0x102a820?}, {0x10e7646?, 0xc0000120d8?})\r\nwoodpecker-server_1 | /usr/local/go/src/net/http/h2_bundle.go:6431 +0x150\r\nwoodpecker-server_1 | net/http.(*http2responseWriter).WriteString(0xc0006786c0?, {0x10e7646?, 0xc0000120d8?})\r\nwoodpecker-server_1 | /usr/local/go/src/net/http/h2_bundle.go:6424 +0x2e\r\nwoodpecker-server_1 | io.WriteString({0x7fd7d37bed98, 0xc0000120d8}, {0x10e7646, 0x18})\r\nwoodpecker-server_1 | /usr/local/go/src/io/io.go:312 +0x5d\r\nwoodpecker-server_1 | github.com/gin-gonic/gin.(*responseWriter).WriteString(0xc0006d8400, {0x10e7646, 0x18})\r\nwoodpecker-server_1 | /woodpecker/src/github.com/woodpecker-ci/woodpecker/vendor/github.com/gin-gonic/gin/response_writer.go:85 +0x7b\r\nwoodpecker-server_1 | io.WriteString({0x7fd7d3fefa18, 0xc0006d8400}, {0x10e7646, 0x18})\r\nwoodpecker-server_1 | /usr/local/go/src/io/io.go:312 +0x5d\r\nwoodpecker-server_1 | github.com/woodpecker-ci/woodpecker/server/api.LogStreamSSE.func2()\r\nwoodpecker-server_1 | /woodpecker/src/github.com/woodpecker-ci/woodpecker/server/api/stream.go:199 +0x192\r\nwoodpecker-server_1 | created by github.com/woodpecker-ci/woodpecker/server/api.LogStreamSSE\r\nwoodpecker-server_1 | /woodpecker/src/github.com/woodpecker-ci/woodpecker/server/api/stream.go:179 +0x59b\r\nwoodpecker-agent_1 | {\"level\":\"error\",\"error\":\"rpc error: code = Unavailable desc = error reading from server: EOF\",\"time\":\"2022-10-22T17:12:48Z\",\"message\":\"grpc error: wait(): code: Unava\r\nilable: rpc error: code = Unavailable desc = error reading from server: EOF\"}\r\n\r\n```\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).",[2092,2093],{"name":2040,"color":2041},{"name":1985,"color":1986},1322,"Server crashes after job runs","2023-06-06T12:30:21Z","https://github.com/woodpecker-ci/woodpecker/issues/1322",0.7407715,["Reactive",2100],{},["Set"],["ShallowReactive",2103],{"TRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"TXJqOaOZSAYw8YXZ7K6f7svsaTgQ1K0CA2YFd_D0Sj4":-1},"/woodpecker-ci/woodpecker/2743"]