Change:
Which jobs are failing: Since when has it been failing: Testgrid link: Reason for failure: Anything else we need to know: /priority important-soon /cc /cc /milestone v1.18 /sig release
/assign
This is failing because a 1.18 release for CRI tools doesn't exist yet. I can tweak the test job arguments to skip this later.
(As a note, this job is important, but not ) /remove-priority critical-urgent /priority important-soon
Do we need to remove the job from dashboard?
-- No. I'll work on fixing the job later today.
I've started to investigate, but I haven't yet reproduced the new error locally: This is likely related to a recent refactor of the package that handles interpreting deb/rpm package versions. As is not currently in use, I'm moving this to the milestone. /milestone v1.19
the version issue is fixed via The test is now failing because it tries to download cri-tools v1.18.0: which I think is related to this code part:
Updating testgrid link here: Any updates here /retitle [Flaky Test] build-packages-debs (ci-release-build-packages-debs) /kind flaky-test
The label(s) cannot be applied, because the repository doesn't have them <detailsIn response to : Updating testgrid link here: /kind flaky-test Instructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/kind flake
I was assuming that is working on this issue. I can jump in if you want and do not find the time to work on it. :)
/assign /unassign Sascha -- Can you take this? I thought I was going to have time to look at this, but it's been a while.
Sure, the reason for the failing test seems to have changed, I'm on it.
Fix is incoming in

Discussion:
if ext != "" { name = name[:len(name)-len(ext)] } <del> if ext != ".json" { </del> <ins> if !(ext == ".json" || ext == ".yaml") { </ins> return nil } glog.Infof("Testing %s", path)

return err } <del> func TestApiExamples(t *testing.T) { expected := map[string]runtime.Object{ "controller":       &api.ReplicationController{}, "controller-list":  &api.ReplicationControllerList{}, "pod":              &api.Pod{}, "pod-list":         &api.PodList{}, "service":          &api.Service{}, "external-service": &api.Service{}, "service-list":     &api.ServiceList{}, </del> <ins> func TestExampleObjectSchemas(t *testing.T) { cases := map[string]map[string]runtime.Object{ "../api/examples": { "controller":       &api.ReplicationController{}, "controller-list":  &api.ReplicationControllerList{}, "pod":              &api.Pod{}, "pod-list":         &api.PodList{}, "service":          &api.Service{}, "external-service": &api.Service{}, "service-list":     &api.ServiceList{}, }, "../examples/guestbook": { "frontend-controller":    &api.ReplicationController{}, "redis-slave-controller": &api.ReplicationController{}, "redis-master":           &api.Pod{}, "frontend-service":       &api.Service{}, "redis-master-service":   &api.Service{}, "redis-slave-service":    &api.Service{}, }, "../examples/walkthrough": { "pod1": &api.Pod{}, "pod2": &api.Pod{}, }, </ins> } <del> tested := 0 err := walkJSONFiles("../api/examples", func(name, path string, data []byte) { expectedType, found := expected[name] if !found { t.Errorf("%s does not have a test case defined", path) return } tested += 1 if err := latest.Codec.DecodeInto(data, expectedType); err != nil { t.Errorf("%s did not decode correctly: %vn%s", path, err, string(data)) return </del> <ins> for path, expected := range cases { tested := 0 err := walkJSONFiles(path, func(name, path string, data []byte) { expectedType, found := expected[name] if !found { t.Errorf("%s does not have a test case defined", path) return } tested += 1 if err := latest.Codec.DecodeInto(data, expectedType); err != nil { t.Errorf("%s did not decode correctly: %vn%s", path, err, string(data)) return } if errors := validateObject(expectedType); len(errors) > 0 { t.Errorf("%s did not validate correctly: %v", path, errors) } }) if err != nil { t.Errorf("Expected no error, Got %v", err) </ins> } <del> if errors := validateObject(expectedType); len(errors) > 0 { t.Errorf("%s did not validate correctly: %v", path, errors) </del> <ins> if tested != len(expected) { t.Errorf("Expected %d examples, Got %d", len(expected), tested) </ins> } <del> }) if err != nil { t.Errorf("Expected no error, Got %v", err) } if tested != len(expected) { t.Errorf("Expected %d examples, Got %d", len(expected), tested) </del> } } <del> func TestExamples(t *testing.T) { expected := map[string]runtime.Object{ "frontend-controller":    &api.ReplicationController{}, "redis-slave-controller": &api.ReplicationController{}, "redis-master":           &api.Pod{}, "frontend-service":       &api.Service{}, "redis-master-service":   &api.Service{}, "redis-slave-service":    &api.Service{}, } tested := 0 err := walkJSONFiles("../examples/guestbook", func(name, path string, data []byte) { expectedType, found := expected[name] if !found { t.Errorf("%s does not have a test case defined", path) return } tested += 1 if err := latest.Codec.DecodeInto(data, expectedType); err != nil { t.Errorf("%s did not decode correctly: %vn%s", path, err, string(data)) return } if errors := validateObject(expectedType); len(errors) > 0 { t.Errorf("%s did not validate correctly: %v", path, errors) } }) if err != nil { t.Errorf("Expected no error, Got %v", err) } if tested != len(expected) { t.Errorf("Expected %d examples, Got %d", len(expected), tested) } } var jsonRegexp = regexp.MustCompile("(?ms)^```w*n({.+?})w*n^```") </del> <ins> var sampleRegexp = regexp.MustCompile("(?ms)^```(?:(?P<type>yaml)w*n(?P<content>.+?)|w*n(?P<content>{.+?}))w*n^```") var subsetRegexp = regexp.MustCompile("(?ms).{3}") </ins> func TestReadme(t *testing.T) { <del> path := "../README.md" data, err := ioutil.ReadFile(path) if err != nil { t.Fatalf("Unable to read file: %v", err) </del> <ins> paths := []string{ "../README.md", "../examples/walkthrough/README.md", </ins> } <del> match := jsonRegexp.FindStringSubmatch(string(data)) if match == nil { return } for _, json := range match[1:] { expectedType := &api.Pod{} if err := latest.Codec.DecodeInto([]byte(json), expectedType); err != nil { t.Errorf("%s did not decode correctly: %vn%s", path, err, string(data)) return } if errors := validateObject(expectedType); len(errors) > 0 { t.Errorf("%s did not validate correctly: %v", path, errors) } encoded, err := latest.Codec.Encode(expectedType) </del> <ins> for _, path := range paths { data, err := ioutil.ReadFile(path) </ins> if err != nil { <del> t.Errorf("Could not encode object: %v", err) </del> <ins> t.Errorf("Unable to read file %s: %v", path, err) </ins> continue } <del> t.Logf("Found pod %sn%s", json, encoded) </del> <ins> matches := sampleRegexp.FindAllStringSubmatch(string(data), -1) if matches == nil { continue } for _, match := range matches { var content, subtype string for i, name := range sampleRegexp.SubexpNames() { if name == "type" { subtype = match[i] } if name == "content" && match[i] != "" { content = match[i] } } if subtype == "yaml" && subsetRegexp.FindString(content) != "" { t.Logf("skipping (%s): n%s", subtype, content) continue } //t.Logf("testing (%s): n%s", subtype, content) expectedType := &api.Pod{} if err := latest.Codec.DecodeInto([]byte(content), expectedType); err != nil { t.Errorf("%s did not decode correctly: %vn%s", path, err, string(content)) continue } if errors := validateObject(expectedType); len(errors) > 0 { t.Errorf("%s did not validate correctly: %v", path, errors) } _, err := latest.Codec.Encode(expectedType) if err != nil { t.Errorf("Could not encode object: %v", err) continue } } </ins> } }

volumeMounts: - name: www-data mountPath: /srv/www <del> readOnly </del> <ins> readOnly: true </ins> containers: - name: git-monitor image: kubernetes/git-monitor