\n\nAnd here is the outcome on BitBucket:\n\u003Cimg width=\"479\" height=\"182\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/11c2a65d-cbf2-4162-9805-3d035bdac04e\" />\n\n\n### Steps to reproduce\n\n1. Run Woodpecker with BitBucket Cloud forge\n2. Create a pipeline that uses a matrix\n3. Let the pipeline finish on Woodpecker\n4. Observe the build statuses on the commit in BitBucket\n\n### Expected behavior\n\nBoth pipelines should show completed.\n\n### System Info\n\n```shell\nWoodpecker version: v3.8.0\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/versions]",[3018],{"name":3019,"color":3020},"bug","d73a4a",5338,"woodpecker-ci","woodpecker","open","Build status not completing on matrix pipelines with BitBucket","2025-07-17T18:03:12Z","https://github.com/woodpecker-ci/woodpecker/issues/5338",0.7142875,{"description":3030,"labels":3031,"number":3038,"owner":3022,"repository":3023,"state":3024,"title":3039,"updated_at":3040,"url":3041,"score":3042},"### Clear and concise description of the problem\n\nI want to describe `matrix` both with the combinations AND the list in the `include` field at the same time.\r\n\r\nMy main reasons to such selective `include` along with the combination is to avoid bloat of combinations.\r\nSee the example below.\n\n### Suggested solution\n\nSuggested solution is, the combinations and `include` are both used to generate workflows.\r\n\r\nExample:\r\n\r\n```yaml\r\nmatrix:\r\n TOOLCHAIN:\r\n - stable\r\n - beta\r\n PROFILE:\r\n - debug\r\n - release\r\n FEATURES:\r\n - NONE\r\n - foo\r\n - bar\r\n - foo+bar\r\n include:\r\n - TOOLCHAIN: oldest-supported # Versions before stable, but still supported officially.\r\n PROFILE: debug\r\n FEATURES: foo+bar # test with all major features enabled at once\r\n - TOOLCHAIN: nightly\r\n PROFILE: debug\r\n FEATURES: NONE # No features\r\n - TOOLCHAIN: nightly\r\n PROFILE: debug\r\n FEATURES: foo+bar # test with all major features at once\r\n - TOOLCHAIN: nightly\r\n PROFILE: debug\r\n FEATURES: foo+bar+experimental-baz # ...and also experimental feature!\r\n\r\nsteps:\r\n # long long steps\r\n```\r\n\r\nIn this case, there will be 2×2×4 (=16) workflows to be generated from combinations, and additionally, plus 4 workflows to be generated from `include` (so total is 20).\n\n### Alternative\n\n* Write all \"resolved\" combinations in `include` manually.\r\n + This makes it hard to maintain the variables.\r\n* Write combinations without `include`, and accept extra (unnecessary) workflows.\r\n + This may make tests too long. In the above example, simply putting `nightly` to `TOOLCHAIN:` will create 8 more workflows, and I need more for `TOOLCHAIN: oldest-supported` and `experimental-baz` cases!\r\n + This may exceed the limit of combinations ([25](https://github.com/woodpecker-ci/woodpecker/blob/ef8e03396e0da0f72212ee834f77f381744d4646/pipeline/frontend/yaml/matrix/matrix.go#L27) or something? In my test environment 27 was the maximum but I don't know why this was not 25...)\r\n* Split the workflow YAML file into two, a combinations version and `include` version.\r\n + This forces the maintainer to duplicate all parts other than `matrix` (such as `clone`, `variables`, `when`, `steps`, etc.) so makes maintenance error-prone.\n\n### Additional context\n\nI'm not familiar with go but this part seems to be responsible:\r\n\r\nhttps://github.com/woodpecker-ci/woodpecker/blob/ef8e03396e0da0f72212ee834f77f381744d4646/pipeline/frontend/yaml/matrix/matrix.go#L46-L53\r\n\r\nParsing both (of course ignoring `include` as a tag) and merging `calc(matrix)` and `axis` may produce the expected result?\r\n\r\n---\r\n\r\nBTW, the document should clarify this is not currently supported.\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.",[3032,3035],{"name":3033,"color":3034},"enhancement","7E1FE4",{"name":3036,"color":3037},"pipeline-config","1BE540",3992,"matrix with combinations AND includes","2024-07-30T06:18:09Z","https://github.com/woodpecker-ci/woodpecker/issues/3992",0.7220671,{"description":3044,"labels":3045,"number":3047,"owner":3022,"repository":3023,"state":3024,"title":3048,"updated_at":3049,"url":3050,"score":3051},"### Component\r\n\r\nother\r\n\r\n### Describe the bug\r\n\r\nTrying to use steps with the same name, pipeline fails or works wrong.\r\n\r\nhttps://github.com/woodpecker-ci/woodpecker/pull/3411#issuecomment-2194567897:\r\n> be aware that steps now can have the same name\r\n\r\n\r\n### Steps to reproduce 1\r\n\r\n1. Make pipeline\r\n```yaml\r\nskip_clone: true\r\nsteps:\r\n notification:\r\n depends_on:\r\n - build\r\n image: alpine\r\n commands:\r\n - echo 'Alright'\r\n build:\r\n image: alpine\r\n commands:\r\n - echo 'Build'\r\n build:\r\n image: alpine\r\n commands:\r\n - echo 'Test'\r\n package:\r\n image: alpine\r\n commands:\r\n - echo 'Package'\r\n```\r\n2. Get error in editor\r\n\r\n3. Run pipeline\r\n4. Get error in UI\r\n\r\n\r\n⬆️ pipeline with one `build` step works well.\r\n\r\n[server-same-name-map.log](https://github.com/user-attachments/files/17784403/server-same-name-map.log.txt)\r\n[agent-same-name-map.log](https://github.com/user-attachments/files/17784389/agent-same-name-map.log.txt)\r\n\r\n\r\n### Steps to reproduce 2\r\n\r\n1. Make pipeline\r\n```yaml\r\nskip_clone: true\r\nsteps:\r\n - name: notification\r\n depends_on:\r\n - build\r\n image: alpine\r\n commands:\r\n - echo 'Alright'\r\n - name: build\r\n image: alpine\r\n commands:\r\n - echo 'Build'\r\n - name: build\r\n image: alpine\r\n commands:\r\n - echo 'Test'\r\n - name: package\r\n image: alpine\r\n commands:\r\n - echo 'Package'\r\n```\r\n2. Run pipeline\r\n3. See that the only one `build` step was run (second one with echo Test) \r\n\r\n\r\n[server-same-name-array.log](https://github.com/user-attachments/files/17784400/server-same-name-array.log.txt)\r\n[agent-same-name-array.log](https://github.com/user-attachments/files/17784390/agent-same-name-array.log.txt)\r\n\r\n\r\n### Expected behavior\r\n\r\n- pipeline fails with error like `step names must be unique`\r\n- or pipeline runs _both_ steps with the same name (`build`)\r\n\r\n### System Info\r\n\r\n```shell\r\nWoodpecker `next-75017ac7ca`, Gitea `1.22.3`, Postgres `16`, Kubernetes `v1.30.6+k3s1`\r\n```\r\n\r\n\r\n### Additional context\r\n\r\nhttps://github.com/woodpecker-ci/woodpecker/pull/3411#issuecomment-2194567897\r\nhttps://github.com/woodpecker-ci/woodpecker/pull/3411#discussion_r1844941371\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]",[3046],{"name":3019,"color":3020},4385,"Steps with the same name","2024-11-17T14:44:50Z","https://github.com/woodpecker-ci/woodpecker/issues/4385",0.75393814,{"description":3053,"labels":3054,"number":3059,"owner":3022,"repository":3023,"state":3060,"title":3061,"updated_at":3062,"url":3063,"score":3064},"### Component\n\nserver\n\n### Describe the bug\n\nConsider following `.woodpecker.yml`:\r\n```yaml\r\nvariables:\r\n - &my_testing_var1 'first value'\r\n\r\nmatrix:\r\n MY_MATRIX_ENV:\r\n - aaa\r\n - bbb\r\n\r\nsteps:\r\n - name: test-env\r\n image: busybox\r\n environment:\r\n MY_TESTING_VAR1: *my_testing_var1\r\n MY_TESTING_VAR2: \"second value\"\r\n commands:\r\n - |\r\n echo \"$${MY_MATRIX_ENV:?}\"\r\n echo \"$${MY_TESTING_VAR1:?}\"\r\n echo \"$${MY_TESTING_VAR2:?}\"\r\n```\r\n\r\nExpected output (e.g. with `MY_MATRIX_ENV=aaa`):\r\n```\r\naaa\r\nfirst value\r\nsecond value\r\n```\r\n\r\nActual output (e.g. with `MY_MATRIX_ENV=aaa`):\r\n```\r\naaa\r\nsh: MY_TESTING_VAR1: parameter not set or null\r\n```\r\n\r\nHowever, I've detected that it sets provided variables in following manner:\r\n```sh\r\nPLUGIN_MY_TESTING_VAR1=\"first value\"\r\nPLUGIN_MY_TESTING_VAR2=\"second value\"\r\n```\n\n### System Info\n\n```shell\ndocker.io/woodpeckerci/woodpecker-server:next-5b0430ab4a\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]",[3055,3056],{"name":3019,"color":3020},{"name":3057,"color":3058},"regression","7E192B",3436,"closed","matrix workflows set up environment in wrong way","2024-02-25T09:12:41Z","https://github.com/woodpecker-ci/woodpecker/issues/3436",0.72628856,{"description":3066,"labels":3067,"number":3071,"owner":3022,"repository":3023,"state":3060,"title":3072,"updated_at":3073,"url":3074,"score":3075},"### Clear and concise description of the problem\n\nAs a user of Woodpecker I want to be able to have one place in my repository where my list of supported compiler versions is written down, and have a woodpecker workflow to generate a matrix of jobs based on it. \r\n\r\nI developed the [get-tested](https://github.com/Kleidukos/get-tested) tool for the Haskell ecosystem because we have a way to declare the tested versions of the compiler as metadata of the package file. \r\n\r\n\u003Cdetails>\r\n\u003Csummary>See\u003C/summary>\r\n\r\nhttps://flora.pm/packages/@haskell/text\r\n\r\n\r\n\u003C/details>\r\n\r\nThis enables us to keep this list of tested compiler versions in one place, thus avoiding de-synchronisation problems between what we declare as tested and what is actually tested.\n\n### Suggested solution\n\nMuch like how GitHub does it, a well-defined JSON object format could be generated by one job on which another depends and reads from. This JSON object would mimick the YAML format:\r\n\r\n```\r\nmatrix={\"include\":[{\"ghc\":\"9.10.1\",\"os\":\"ubuntu-latest\"}]}\r\n```\r\n\r\nWith ideally the addition of an `exclude` property that would prevent a combination of values from being run.\r\n\r\nMain inspiration is https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs\n\n### Alternative\n\nMaintaining multiple lists of supported compiler versions (one for package metadata, one for CI), which is prone to error and de-synchronisation. \n\n### Additional context\n\nThe link of the first checkbox (https://woodpecker-ci.org/faq#which-version-of-woodpecker-should-i-use) returns a 404.\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.",[3068],{"name":3069,"color":3070},"feature","180DBE",3873,"Dynamically-defined matrix workflows","2024-07-06T08:14:14Z","https://github.com/woodpecker-ci/woodpecker/issues/3873",0.7330793,{"description":3077,"labels":3078,"number":3086,"owner":3022,"repository":3023,"state":3060,"title":3087,"updated_at":3088,"url":3089,"score":3090},"### Clear and concise description of the problem\n\nWhen triggering a manual pipeline run in the web UI, I often forget to apply env vars with the `+ Add variable` button, as I interpret it as adding _another_ variable.\r\n\r\n\r\n\n\n### Suggested solution\n\n- Apply all variables with non-empty variable names\r\n- Add a new input line once the variable name is not empty\r\n- Keep the variables editable\r\n- Remove the `+ Add variable` button\r\n\r\nExample from GitLab:\r\n\r\n\r\n\n\n### Alternative\n\n_No response_\n\n### Additional context\n\nMight also be useful if my issue #3291 gets implemented\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.",[3079,3082,3083],{"name":3080,"color":3081},"ui","46DEA2",{"name":3033,"color":3034},{"name":3084,"color":3085},"ux","fef2c0",3292,"UI/UX: Apply Non-Empty Environment Variables","2024-02-08T23:46:09Z","https://github.com/woodpecker-ci/woodpecker/issues/3292",0.74318224,{"description":3092,"labels":3093,"number":3095,"owner":3022,"repository":3023,"state":3060,"title":3096,"updated_at":3097,"url":3098,"score":3099},"### Clear and concise description of the problem\n\nI'm wishing for an way to grant individual pipeline executions access to external resources based on their identity (repo name, branch, git-commit, pipeline name, trigger by, ...). External resources includes things such as container registries.\nSigning and generating attestations for artifacts with [Sigstore's `cosign`](https://www.sigstore.dev/), which is growing need due to EU legislation such as NIS2, requires a away to identity the build pipeline to issues signing certificates.\n\n### Suggested solution\n\nThe core idea is to take inspiration from [Github Actions where tokens are issues to pipelines on-demand](https://docs.github.com/en/actions/security-for-github-actions/security-guides/automatic-token-authentication), and implement an OAuth2 provider into Woodpecker that issues token to pipelines with specialized fields and claims identifying the specific pipeline execution.\n\n### Alternative\n\nAdding secrets to pipelines via the existing secrets mechanism can give us some of the functionality, but lacks the fine-grained access that can be given by issuing tokens with exact information about a specific pipeline execution. It is also vulnerable to secret leakage since the secret have a life-time far greater that an single execution.\n\n### Additional context\n\nA lot of legislation is arriving that demands greater and greater cyber security and supply-chain security. Figuring out how we can best support `cosign` with Woodpecker can become important for future use of Woodpecker in commercial settings. And personally I'm very interested in being able to produce [SLSA](https://slsa.dev/) level 3 compliant software artifacts.\n\n### Validations\n\n- [x] Checked that the feature isn't part of the `next` version already [https://woodpecker-ci.org/versions]\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.",[3094],{"name":3069,"color":3070},4837,"Workload identities for pipelines","2025-02-25T09:05:13Z","https://github.com/woodpecker-ci/woodpecker/issues/4837",0.7517142,{"description":3101,"labels":3102,"number":3104,"owner":3022,"repository":3023,"state":3060,"title":3105,"updated_at":3106,"url":3107,"score":3108},"### Component\n\nserver, agent\n\n### Describe the bug\n\nThe pipeline ID of the `CI_PIPELINE_URL` environment variable is always zero and not the actual pipeline ID. I don't know if the bug is in the server or in the agent.\n\n### System Info\n\n```shell\nVersion 2.0.0. Agent and server running on the same host and started manually.\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).",[3103],{"name":3019,"color":3020},2906,"$CI_PIPELINE_URL always \u003Cbase_url>/repos/\u003Crepo_id>/pipeline/0","2023-12-04T15:47:20Z","https://github.com/woodpecker-ci/woodpecker/issues/2906",0.753128,{"description":3110,"labels":3111,"number":3112,"owner":3022,"repository":3023,"state":3060,"title":3113,"updated_at":3114,"url":3115,"score":3116},"### Component\n\ncli\n\n### Describe the bug\n\nSame as in #1379, found while fixing that part of the schema.json.\r\n\r\nTag in the schema currently only supports a string while the pipeline/frontend/yaml/constraints/constraints.go also accepts an array of strings.\n\n### System Info\n\n```shell\nv0.15.4 (problem is existent on the release/v0.15 branch, so all v0.15s at least, fixed by the large rewrite applied to main)\n```\n\n\n### Additional context\n\nI'll head in and fix this as well...\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).",[],1381,"Conditional pipeline.step.when.tag not taking array as documented in 0.15","2022-11-05T00:04:12Z","https://github.com/woodpecker-ci/woodpecker/issues/1381",0.7550256,{"description":3118,"labels":3119,"number":3123,"owner":3022,"repository":3023,"state":3060,"title":3124,"updated_at":3125,"url":3126,"score":3127},"### Clear and concise description of the problem\n\nAs a user of Woodpecker\r\nI Want to see the build number into PipelineItem component\r\nSo that will show easily build numbers into pipeline list view.\r\n\r\n\n\n### Suggested solution\n\nI added hash with build number\r\n\r\n\r\n\n\n### Alternative\n\n_No response_\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.",[3120,3121,3122],{"name":3080,"color":3081},{"name":3033,"color":3034},{"name":3084,"color":3085},1299,"Add build number into pipeline item component","2022-10-23T09:21:58Z","https://github.com/woodpecker-ci/woodpecker/issues/1299",0.7552256,["Reactive",3129],{},["Set"],["ShallowReactive",3132],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fd-B9UhikUzJ4q_SOyPsH5cQphgeustDVsiFfDnjD46s":-1},"/woodpecker-ci/woodpecker/2819"]