Skip to content

Commit

Permalink
Add the imageID for each step to the TaskRun.Spec.Status object.
Browse files Browse the repository at this point in the history
This allows users to trace the exact steps (including digest) used in each TaskRun.
This information is already available on a Pod, but we need to assume completed Pods
will be GC'ed and not available long after the run is complete.
  • Loading branch information
dlorenc committed Aug 12, 2019
1 parent 5138955 commit ddd1f38
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 6 deletions.
5 changes: 4 additions & 1 deletion pkg/apis/pipeline/v1alpha1/taskrun_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ type StepState struct {
corev1.ContainerState
Name string `json:"name,omitempty"`
ContainerName string `json:"container,omitempty"`
ImageID string `json:"imageID,omitempty"`
}

// CloudEventDelivery is the target of a cloud event along with the state of
Expand Down Expand Up @@ -230,7 +231,9 @@ type CloudEventDeliveryState struct {
// Error is the text of error (if any)
Error string `json:"message"`
// RetryCount is the number of attempts of sending the cloud event
RetryCount int32 `json:"retryCount"`
RetryCount int32 `json:"retryCount"`
Name string `json:"name,omitempty"`
ImageID string `json:"imageID,omitempty"`
}

// +genclient
Expand Down
1 change: 1 addition & 0 deletions pkg/status/taskrunpod.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ func UpdateStatusFromPod(taskRun *v1alpha1.TaskRun, pod *corev1.Pod, resourceLis
ContainerState: *s.State.DeepCopy(),
Name: resources.TrimContainerNamePrefix(s.Name),
ContainerName: s.Name,
ImageID: s.ImageID,
})
}
}
Expand Down
17 changes: 14 additions & 3 deletions pkg/status/taskrunpod_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,11 @@ func TestUpdateStatusFromPod(t *testing.T) {
podStatus: corev1.PodStatus{
InitContainerStatuses: []corev1.ContainerStatus{{
// creds-init; ignored
ImageID: "ignored",
}},
ContainerStatuses: []corev1.ContainerStatus{{
Name: "step-state-name",
Name: "step-state-name",
ImageID: "",
State: corev1.ContainerState{
Terminated: &corev1.ContainerStateTerminated{
ExitCode: 123,
Expand All @@ -102,11 +104,14 @@ func TestUpdateStatusFromPod(t *testing.T) {
podStatus: corev1.PodStatus{
InitContainerStatuses: []corev1.ContainerStatus{{
// creds-init; ignored.
ImageID: "ignoreme",
}, {
// git-init; ignored.
ImageID: "ignoreme",
}},
ContainerStatuses: []corev1.ContainerStatus{{
Name: "step-state-name",
Name: "step-state-name",
ImageID: "image-id",
State: corev1.ContainerState{
Terminated: &corev1.ContainerStateTerminated{
ExitCode: 123,
Expand All @@ -125,6 +130,7 @@ func TestUpdateStatusFromPod(t *testing.T) {
}},
Name: "state-name",
ContainerName: "step-state-name",
ImageID: "image-id",
}},
},
}, {
Expand All @@ -138,6 +144,7 @@ func TestUpdateStatusFromPod(t *testing.T) {
ExitCode: 0,
},
},
ImageID: "image-id",
}},
},
want: v1alpha1.TaskRunStatus{
Expand All @@ -151,6 +158,7 @@ func TestUpdateStatusFromPod(t *testing.T) {
}},
Name: "step-push",
ContainerName: "step-step-push",
ImageID: "image-id",
}},
// We don't actually care about the time, just that it's not nil
CompletionTime: &metav1.Time{Time: time.Now()},
Expand Down Expand Up @@ -181,9 +189,10 @@ func TestUpdateStatusFromPod(t *testing.T) {
}, {
desc: "failure-terminated",
podStatus: corev1.PodStatus{
Phase: corev1.PodFailed,
Phase: corev1.PodFailed,
InitContainerStatuses: []corev1.ContainerStatus{{
// creds-init status; ignored
ImageID: "ignore-me",
}},
ContainerStatuses: []corev1.ContainerStatus{{
Name: "step-failure",
Expand All @@ -209,8 +218,10 @@ func TestUpdateStatusFromPod(t *testing.T) {
Terminated: &corev1.ContainerStateTerminated{
ExitCode: 123,
}},

Name: "failure",
ContainerName: "step-failure",
ImageID: "image-id",
}},
// We don't actually care about the time, just that it's not nil
CompletionTime: &metav1.Time{Time: time.Now()},
Expand Down
5 changes: 3 additions & 2 deletions test/taskrun_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,9 @@ func TestTaskRunFailure(t *testing.T) {
Name: "world",
ContainerName: "step-world",
}}
ignoreFields := cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID")
if d := cmp.Diff(taskrun.Status.Steps, expectedStepState, ignoreFields); d != "" {
ignoreTerminatedFields := cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID")
ignoreStepFields := cmpopts.IgnoreFields(v1alpha1.StepState{}, "ImageID")
if d := cmp.Diff(taskrun.Status.Steps, expectedStepState, ignoreTerminatedFields, ignoreStepFields); d != "" {
t.Fatalf("-got, +want: %v", d)
}
}

0 comments on commit ddd1f38

Please sign in to comment.