diff --git a/ci/woodpecker/server.nix b/ci/woodpecker/server.nix index 793bbf9..bb56a1b 100644 --- a/ci/woodpecker/server.nix +++ b/ci/woodpecker/server.nix @@ -22,6 +22,8 @@ in CGO_ENABLED = 1; + patches = [./unlimited-matrix.patch]; + passthru = { inherit woodpecker-frontend; diff --git a/ci/woodpecker/unlimited-matrix.patch b/ci/woodpecker/unlimited-matrix.patch new file mode 100644 index 0000000..4bb77d9 --- /dev/null +++ b/ci/woodpecker/unlimited-matrix.patch @@ -0,0 +1,43 @@ +diff --git a/pipeline/frontend/yaml/matrix/matrix.go b/pipeline/frontend/yaml/matrix/matrix.go +index da5e9f24..c3fe9896 100644 +--- a/pipeline/frontend/yaml/matrix/matrix.go ++++ b/pipeline/frontend/yaml/matrix/matrix.go +@@ -22,11 +22,6 @@ import ( + "gopkg.in/yaml.v3" + ) + +-const ( +- limitTags = 10 +- limitAxis = 25 +-) +- + // Matrix represents the pipeline matrix. + type Matrix map[string][]string + +@@ -87,25 +82,15 @@ func calc(matrix Matrix) []Axis { + for p := 0; p < perm; p++ { + axis := map[string]string{} + decr := perm +- for i, tag := range tags { ++ for _, tag := range tags { + elems := matrix[tag] + decr = decr / len(elems) + elem := p / decr % len(elems) + axis[tag] = elems[elem] +- +- // enforce a maximum number of tags in the pipeline matrix. +- if i > limitTags { +- break +- } + } + + // append to the list of axis. + axisList = append(axisList, axis) +- +- // enforce a maximum number of axis that should be calculated. +- if p > limitAxis { +- break +- } + } + + return axisList