When creating a new pipelinerun, there's a split second (depending on the controller picking it up) in which the run itself has no status yet:
dcaro@vulcanus$ kubectl get -n image-build pipelinerun -o yaml apiVersion: v1 items: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: creationTimestamp: "2022-11-02T09:24:51Z" generateName: minikube-user-buildpacks-pipelinerun- generation: 1 labels: user: minikube-user managedFields: - apiVersion: tekton.dev/v1beta1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:generateName: {} f:labels: .: {} f:user: {} f:spec: .: {} f:params: {} f:pipelineRef: .: {} f:name: {} f:serviceAccountName: {} f:workspaces: {} manager: python-requests operation: Update time: "2022-11-02T09:24:51Z" name: minikube-user-buildpacks-pipelinerun-mkgjp namespace: image-build resourceVersion: "644" uid: aa818cee-c3a8-4a68-b83c-0f4e0ff2520e spec: params: - name: BUILDER_IMAGE value: docker-registry.tools.wmflabs.org/toolforge-bullseye0-builder - name: APP_IMAGE value: harbor.tools.wmflabs.org/minikube-user/dcaro:latest - name: SOURCE_URL value: https://github.com/david-caro/wm-lol - name: USER_ID value: "61312" - name: GROUP_ID value: "61312" pipelineRef: name: buildpacks serviceAccountName: buildpacks-service-account workspaces: - emptyDir: {} name: source-ws - emptyDir: {} name: cache-ws kind: List metadata: resourceVersion: "" selfLink: ""
But we depend on it and crash:
dcaro@vulcanus$ toolforge build-list run_name status start_time end_time source_url repo_url image_name image_tag builder_image Traceback (most recent call last): File "/home/dcaro/.virtualenvs/toolforge-cli-python3/bin/toolforge", line 8, in <module> sys.exit(main()) File "/home/dcaro/Work/wikimedia/toolforge-cli/toolforge_cli/cli.py", line 538, in main toolforge() File "/home/dcaro/.virtualenvs/toolforge-cli-python3/lib/python3.10/site-packages/click/core.py", line 1130, in __call__ return self.main(*args, **kwargs) File "/home/dcaro/.virtualenvs/toolforge-cli-python3/lib/python3.10/site-packages/click/core.py", line 1055, in main rv = self.invoke(ctx) File "/home/dcaro/.virtualenvs/toolforge-cli-python3/lib/python3.10/site-packages/click/core.py", line 1657, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/home/dcaro/.virtualenvs/toolforge-cli-python3/lib/python3.10/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "/home/dcaro/.virtualenvs/toolforge-cli-python3/lib/python3.10/site-packages/click/core.py", line 760, in invoke return __callback(*args, **kwargs) File "/home/dcaro/Work/wikimedia/toolforge-cli/toolforge_cli/cli.py", line 347, in build_list for run in sorted(runs, key=lambda run: run["status"]["startTime"], reverse=True): File "/home/dcaro/Work/wikimedia/toolforge-cli/toolforge_cli/cli.py", line 347, in <lambda> for run in sorted(runs, key=lambda run: run["status"]["startTime"], reverse=True): KeyError: 'status'
This task is to handle these gracefully and add something like "not started" instead.