Skip to content

Can not patch pipelinerun labels #44

Open
@liangyuanpeng

Description

@liangyuanpeng

Log

1.683615978721644e+09   INFO    controller.run-filter   Inspecting BuildRun instance for Tekton's CustomRun ownership   {"generation": 1, "namespace": "default", "name": "trigger-bhfwt"}
1.6836159789839964e+09  ERROR   trying to update PipelineRun metadata   {"controller": "pipelinerun", "controllerGroup": "tekton.dev", "controllerKind": "PipelineRun", "PipelineRun": {"name":"test","namespace":"default"}, "namespace": "default", "name": "test", "reconcileID": "b67e91b4-9bed-4bfc-908e-5f4e646d6208", "error": "PipelineRun.tekton.dev \"test\" is invalid: metadata.labels: Invalid value: \"trigger-bhfwt,test-prbbl\": a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyValue',  or 'my_value',  or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?')"}
github.com/shipwright-io/triggers/controllers.(*PipelineRunReconciler).Reconcile
        /home/lan/repo/git/shipwright/triggers/controllers/pipelinerun_controller.go:183
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile
        /home/lan/repo/git/shipwright/triggers/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:121
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler
        /home/lan/repo/git/shipwright/triggers/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:320
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
        /home/lan/repo/git/shipwright/triggers/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:273
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2
        /home/lan/repo/git/shipwright/triggers/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:234
1.6836159789841447e+09  ERROR   Reconciler error        {"controller": "pipelinerun", "controllerGroup": "tekton.dev", "controllerKind": "PipelineRun", "PipelineRun": {"name":"test","namespace":"default"}, "namespace": "default", "name": "test", "reconcileID": "b67e91b4-9bed-4bfc-908e-5f4e646d6208", "error": "PipelineRun.tekton.dev \"test\" is invalid: metadata.labels: Invalid value: \"trigger-bhfwt,test-prbbl\": a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyValue',  or 'my_value',  or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?')"}
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler
        /home/lan/repo/git/shipwright/triggers/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:326
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
        /home/lan/repo/git/shipwright/triggers/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:273
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2
        /home/lan/repo/git/shipwright/triggers/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:234
1.68361597900475e+09    INFO    Searching for Builds matching criteria  {"controller": "pipelinerun", "controllerGroup": "tekton.dev", "controllerKind": "PipelineRun", "PipelineRun": {"name":"test","namespace":"default"}, "namespace": "default", "name": "test", "reconcileID": "f10f1cc7-41bf-46e3-aa83-6b0b0f34613f", "ref-name": "nodejs-ex", "ref-status": ["Succeeded"], "ref-selector": {"tekton.dev/pipeline":"nodejs-ex"}}

Checked

name: "PipelineRun with BuildRun labeled",
pipelineRun: pipelineRunLabeled,
buildRunsIssued: []string{"buildrun"},
want: "buildrun,existing-buildrun",

Seems like this is the design but it's not working.

It is giving pipelinerun patch labels if I understand correctly, just like:

lan@lan:~/repo/git/shipwright/triggers$ kubectl patch pipelinerun test --type='merge' -p '{"metadata":{"labels":{"hello":"world,world2"}}}'
The PipelineRun "test" is invalid: metadata.labels: Invalid value: "world,world2": a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyValue',  or 'my_value',  or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?')

Versions

shipwright build: 0.11.0
tekton: v0.44.0
trigger: main

Reproduce

  1. base env (shipwright build, tekton and trigger)
  2. apply buildstrategy of ko
  3. Change output.image in demo.yaml
  4. create secret for output.credentials.name in demo.yaml (maybe not need, have not run this step.)
  5. kubectl apply demo.yaml

demo.yaml

---
apiVersion: shipwright.io/v1alpha1
kind: Build
metadata:
  name: trigger
spec:
  trigger:
    when:
      - name: nodejs-ex pipeline has succeeded
        type: Pipeline
        objectRef:
          name: nodejs-ex
          status:
            - Succeeded
  paramValues:
    - name: go-flags
      value: "-v -mod=vendor -ldflags=-w"
    - name: go-version
      value: "1.19"
    - name: package-directory
      value: ./cmd/shipwright-build-controller
  source:
    url: https://github.com/shipwright-io/build
  strategy:
    name: ko
    kind: ClusterBuildStrategy
  output:
    image: {owner}/shipwright-build
    credentials:
      name: push-secret

---
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: nodejs-ex
spec:
  tasks:
    - name: shipwright
      taskSpec:
        steps:
          - name: echo
            image: alpine
            script: |
              #!/bin/sh
              echo "Hello nodejs-ex"
---
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  name: test
spec:
  pipelineRef:
    name: nodejs-ex

cc author @otaviof

Remind me if i missed something,Thanks :)

I want to work for it if someone can provide more detail for it and it's the wrong thing.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions