Moving this over from https://github.com/kubernetes/test-infra/pull/4430 and breaking it into smaller PRs for review sanity.
This should also cover issues #3370 and #3371.
In general the first part of this list is just porting portions of the python script to drop-in-compatible go code with unit tests which I've kept small to improve review-ability. The end of the checklist involves actually revamping things.
TODO:
bootstrap/ go program (#4872)started.json, finished.json etc.jenkins/bootstrap_test.py / write tests for bootstrap/ (#4872, #4897, #4911, #4941, #4974, in progress)bootstrap/ (in progress)jenkins/bootstrap.py to bootstrap/jobs/config.jsonjenkins/bootstrapy.py, jenkins/bootstrap_test.pyNOTE: I am aiming for ~100% coverage in godoc and unit tests excluding main.go and I want to keep it that way.
/area bootstrap
/assign
/cc @krzyzacy
First PR with the initial binary and CLI / Repos parsing is at: https://github.com/kubernetes/test-infra/pull/4872
Hmm @krzyzacy we will need to migrate this appropriately https://github.com/kubernetes/test-infra/issues/2696 (job owners in the jobs config), this and the scenario can probably just be some new flags/args?
owner probably can be part of prow jobs definition
I would really, really, really like us to revisit and reconsider the started.json and finished.json files when we do this port. There is quite a lot of cruft in there right now and if we are going to be declaring nice Go structs (with Godoc!!!) for the data we serialize into these files, we should take the time to format it nicely, explain what other dependent services use which fields, etc.
@stevekuznetsov that's definitely in my head on the list of cleanup things to do, I'd like to start by being completely compatible with bootstrap though so that we have less possible sources of breakage when transitioning and then come back and clean things up some more.
SGTM
I'm working on a controller (based on the k8s generated CRD informer+workqueue that will land soon) that I hope to use to watch ProwJobs and push data into GCS with based on state changes there. So much of the {started,finished}.json information is simply job configuration and start/stop time that Prow itself (or something watching the CRSs) can handle the upload of this data. This allows us to be a lot more resilient in the face of infrastructure issues (Jenkins crash, jobs otherwise fail to upload something). I am happy to share this work if it's moving in a direction that test-infra is interested in going.
I think that falls under https://github.com/kubernetes/test-infra/issues/3342, I'm not sure what the plans are there. I think this is something we'd like (?) but nobody is actively looking into it currently AFAIK.
https://github.com/kubernetes/test-infra/issues/3369#issuecomment-339114891 should probably be the focus instead going forward as we won't need to support jenkins
Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close.
Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale
Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.
If this issue is safe to close now please do so with /close.
Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten
/remove-lifecycle stale
we've gone different route
/close