\r\n\n\n### Steps to reproduce\n\n.\n\n### Expected behavior\n\n_No response_\n\n### System Info\n\n```shell\n\"next-d126cf9e35\"\n```\n\n\n### Additional context\n\n_No response_\n\n### Validations\n\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]",[2012,2013],{"name":1985,"color":1986},{"name":2014,"color":2015},"ui","46DEA2",4677,"`tag` pipelines are missing avatar and commit title","2025-01-12T06:19:42Z","https://github.com/woodpecker-ci/woodpecker/issues/4677",0.75204116,{"description":2022,"labels":2023,"number":2027,"owner":1988,"repository":1989,"state":1990,"title":2028,"updated_at":2029,"url":2030,"score":2031},"### Clear and concise description of the problem\r\n\r\nFor build steps, I might be fine with using a \":latest\" image, but for diagnostics I want to be able to see exactly which image was used for a build. \r\n\r\n### Suggested solution\r\n\r\nPrint the docker image hash as a log line\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] 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 request the same feature to avoid creating a duplicate.",[2024],{"name":2025,"color":2026},"feature","180DBE",1414,"record build step docker image id","2023-08-20T17:13:01Z","https://github.com/woodpecker-ci/woodpecker/issues/1414",0.7533263,{"description":2033,"labels":2034,"number":2037,"owner":1988,"repository":1989,"state":1990,"title":2038,"updated_at":2039,"url":2040,"score":2041},"### Clear and concise description of the problem\n\nWhen following the logs of a step I would like the UI to automatically select the next step if the step I am currently looking at has finished.\n\n### Suggested solution\n\nAutomatically jump to the next step when currently visible step status changes to successfully finished.\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.",[2035,2036],{"name":2014,"color":2015},{"name":1999,"color":2000},3801,"Log jump to next step when finished","2024-06-24T11:59:39Z","https://github.com/woodpecker-ci/woodpecker/issues/3801",0.7638665,{"description":2043,"labels":2044,"number":2050,"owner":1988,"repository":1989,"state":1990,"title":2051,"updated_at":2052,"url":2053,"score":2054},"### Clear and concise description of the problem\n\nIt would be great to have a search form available at `/admin`. For instances with more users (e.g. codeberg), the paginated load becomes quite an issue when searching for a particular user/org/repository.\r\n\r\n\n\n### Suggested solution\n\nAdd a search functionality, similar as in https://ci.codeberg.org/repos.\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.",[2045,2048,2049],{"name":2046,"color":2047},"server","5D7A92",{"name":2014,"color":2015},{"name":1999,"color":2000},3015,"Admin: Search functionality for users/repos/organizations","2023-12-27T07:56:01Z","https://github.com/woodpecker-ci/woodpecker/issues/3015",0.77452487,{"description":2056,"labels":2057,"number":2062,"owner":1988,"repository":1989,"state":2063,"title":2064,"updated_at":2065,"url":2066,"score":2067},"### Component\n\ncli\n\n### Describe the bug\n\nSince updating to 2.4.x woodpecker-cli runs into a runtime error:\r\n\r\n```\r\npanic: runtime error: invalid memory address or nil pointer dereference\r\n[signal SIGSEGV: segmentation violation code=0x2 addr=0x20 pc=0x1004c71a8]\r\n\r\ngoroutine 1 [running]:\r\ngo.woodpecker-ci.org/woodpecker/v2/cli/internal/config.Load(0x14000591580)\r\n go.woodpecker-ci.org/woodpecker/v2/cli/internal/config/config.go:53 +0x268\r\ngo.woodpecker-ci.org/woodpecker/v2/cli/common.Before(0x14000591580)\r\n go.woodpecker-ci.org/woodpecker/v2/cli/common/hooks.go:53 +0x70\r\ngithub.com/urfave/cli/v2.(*Command).Run(0x14000597760, 0x14000591580, {0x1400014c000, 0xc, 0xc})\r\n github.com/urfave/cli/v2@v2.27.1/command.go:219 +0x3d0\r\ngithub.com/urfave/cli/v2.(*App).RunContext(0x140001d6e00, {0x101e2cca0, 0x102d70660}, {0x1400014c000, 0xc, 0xc})\r\n github.com/urfave/cli/v2@v2.27.1/app.go:337 +0x514\r\ngithub.com/urfave/cli/v2.(*App).Run(...)\r\n github.com/urfave/cli/v2@v2.27.1/app.go:311\r\nmain.main()\r\n go.woodpecker-ci.org/woodpecker/v2/cmd/cli/main.go:26 +0x48\r\n```\r\n\r\nHere is an example. I export the variables first\r\n\r\n```\r\nexport WOODPECKER_PROJECT=\"test/project\"\r\nexport WOODPECKER_SERVER=\"https://our.server\"\r\nexport WOODPECKER_TOKEN=\"asdf\"\r\n```\r\n\r\nThen i run any command, like `woodpecker-cli pipeline ls` and the error occurs.\n\n### System Info\n\n```shell\n{\"source\":\"https://github.com/woodpecker-ci/woodpecker\",\"version\":\"2.4.1\"}\r\n\r\n➜ ~ woodpecker-cli --version\r\nwoodpecker-cli version 2.4.1\n```\n\n\n### Additional context\n\n_No response_\n\n### Validations\n\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]",[2058,2059],{"name":1985,"color":1986},{"name":2060,"color":2061},"cli","1d76db",3553,"closed","woodpecker-cli - runtime error: invalid memory address or nil pointer dereference with 2.4.x","2024-04-15T19:18:03Z","https://github.com/woodpecker-ci/woodpecker/issues/3553",0.73849416,{"description":2069,"labels":2070,"number":2073,"owner":1988,"repository":1989,"state":2063,"title":2074,"updated_at":2075,"url":2076,"score":2077},"### Component\r\n\r\nserver, web-ui\r\n\r\n### Describe the bug\r\n\r\nDownloaded or copy-pasted logs do not have line breaks, appear as one line.\r\n\r\n### Steps to reproduce\r\n\r\n1. Install Woodpecker `2.6.0`.\r\n2. Run pipeline\r\n```yaml\r\nskip_clone: true\r\nsteps:\r\n server:\r\n image: alpine\r\n commands:\r\n - echo Hello\r\n - echo world\r\n```\r\n2. See logs in UI\r\n\r\n3. Download logs\r\n[usr-wp-test-324-server.log](https://github.com/user-attachments/files/15841307/usr-wp-test-324-server.log)\r\n4. Copy logs from UI and paste in some text editor\r\n5. Check, that downloaded logs and copy-pasted one are one-line text\r\n```\r\n+ echo HelloHello+ echo worldworld\r\n```\r\n\r\n### Expected behavior\r\n\r\n1. Install Woodpecker `2.5.0`.\r\n2. Run pipeline\r\n```yaml\r\nskip_clone: true\r\nsteps:\r\n server:\r\n image: alpine\r\n commands:\r\n - echo Hello\r\n - echo world\r\n```\r\n2. See logs in UI\r\n\r\n3. Download logs\r\n[usr-wp-test-323-server.log](https://github.com/user-attachments/files/15841256/usr-wp-test-323-server.log)\r\n4. Copy logs from UI and paste in some text editor\r\n5. Check, that downloaded logs and copy-pasted one are multiple lines\r\n```\r\n+ echo Hello\r\nHello\r\n+ echo world\r\nworld\r\n```\r\n\r\n### System Info\r\n\r\n```shell\r\nWoodpecker 2.6.0, Kubernetes.\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 [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]",[2071,2072],{"name":1985,"color":1986},{"name":2014,"color":2015},3790,"There is no line breaks in the Step logs","2024-06-21T08:14:01Z","https://github.com/woodpecker-ci/woodpecker/issues/3790",0.74393433,{"description":2079,"labels":2080,"number":2083,"owner":1988,"repository":1989,"state":2063,"title":2084,"updated_at":2085,"url":2086,"score":2087},"### Clear and concise description of the problem\n\nWhen committing with a structured message (e.g. following Conventional Commits specification), Woodpecker cramps the whole message together into one large string when displaying it in the repo commit list and the pipeline run title. This is usually pretty ugly and decreases readability. \r\n\r\nExample:\r\n\r\n\n\n### Suggested solution\n\nA new environment variable CI_COMMIT_MESSAGE_HEADER could be added which would be used to populate the strings mentioned above. This would of course require parsing the commit message first.\n\n### Alternative\n\nAlternatively, a UI section for the body and footer of the commit message could be added below the pipeline run title to display those variables. \r\n\r\nAll of the steps described above would still be necessary, but in addition, at least CI_COMMIT_MESSAGE_BODY (if one wants to treat body and footer as one) would have to be parsed and added as well.\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/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.",[2081,2082],{"name":2014,"color":2015},{"name":2025,"color":2026},1489,"Beautify display of commit messages with bodies and/or footers","2023-08-20T16:52:56Z","https://github.com/woodpecker-ci/woodpecker/issues/1489",0.74754804,{"description":2089,"labels":2090,"number":2094,"owner":1988,"repository":1989,"state":2063,"title":2095,"updated_at":2096,"url":2097,"score":2098},"### Clear and concise description of the problem\r\n\r\nI'm trying to run a container image build step in my pipeline that uses [buildah](https://quay.io/repository/buildah/stable?tab=info). I'm running into a lot of permission errors like this:\r\n\r\n```\r\ntime=\"2023-10-07T19:59:26Z\" level=error msg=\"writing \\\"0 0 4294967295\\\\n\\\" to /proc/17/uid_map: write /proc/17/uid_map: operation not permitted\"\r\ntime=\"2023-10-07T19:59:26Z\" level=error msg=\"(Unable to determine exit status)\"\r\n```\r\n\r\nAfter some experimentation with podman and buildah containers on my cluster, I have determined that I need to configure a few different settings at the Pod level for this to work:\r\n\r\n- `metadata.annotations`: I need to be able to set `container.apparmor.security.beta.kubernetes.io/\u003Ccontainer_name>` to use a custom apparmor profile for my buildah container. I would like to use the `WOODPECKER_BACKEND_K8S_POD_ANNOTATIONS` env variable, but since the container names are randomly generated I'm not sure how to make this work.\r\n- `spec.securityContext`: The only way I have found to make buildah work is to run it as non-root. This means that I need to set `runAsUser`, `runAsGroup`, and `fsGroup` on the Pod level `securityContext` (not the container level).\r\n\r\n### Suggested solution\r\n\r\nAdding support for `securityContext` seems like it should be fairly straightforward. We could just follow that same approach that is currently used for `resources`, `nodeSelector`, etc. [documented here](https://woodpecker-ci.org/docs/next/administration/backends/kubernetes#resources).\r\n\r\nThe AppArmor profile is trickier since the container name needs to be included in the annotation key. I'm imagining a configuration like `backend_options.kubernetes.appArmorProfile` that could take all of the possible values for the annotation [documented here](https://kubernetes.io/docs/tutorials/security/apparmor/). Then, the pod generation logic would just look for this configuration and add the appropriate annotation if it's found.\r\n\r\n### Alternative\r\n\r\nI could disable AppArmor entirely, but that's not really advisable for a production environment. I could also try to find a way to get the buildah container running as root (it should be possible), but again, that's not ideal from a security perspective.\r\n\r\n### Additional context\r\n\r\nThis is somewhat of a follow up from #2510. I'm trying to get Woodpecker to run on my kubeadm/CRI-O based cluster running on Debian which I believe makes me some kind of leprechaun/unicorn/lochness monster. There definitely aren't many of us out there.\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.",[2091,2092],{"name":1999,"color":2000},{"name":2093,"color":2003},"backend/kubernetes",2545,"Support AppArmor annotations and securityContext in kubernetes backend","2024-01-12T22:32:26Z","https://github.com/woodpecker-ci/woodpecker/issues/2545",0.75662917,["Reactive",2100],{},["Set"],["ShallowReactive",2103],{"TRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"8zrGg1okArJeX-LX2TsWE7Dyi6V77c1ul2pbSlXBAEg":-1},"/woodpecker-ci/woodpecker/2858"]