tree f7ebdaf8c09f3196e1546cdbe8b4ec9a9ccb67eb
parent f8cd50e5e718e55eba084a78b170d5869ca7d9be
author Nehal Patel <nehalvpatel@users.noreply.github.com> 1674682997 -0800
committer GitHub <noreply@github.com> 1674682997 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJj0aJ1CRBK7hj4Ov3rIwAAFscIAJPsRcmdIhD5jje8vqOnxxTG
 0neU8XL3FVk4kccJvVJNwjEI1qyZ76JSspKz4N8RQ1HgbCjPGeOyvkqxjXKAdkTZ
 wlbmtOqwp+Pd5AJCZAgqOFYFAvlO61+uyB1GJ2qQlMGc77iTNrnb01rIeKL2x6j9
 lqjLY/ApzBV6IyRwjamfi2I7be10j3GjPG2lFmNyo11UCRTYRZQVybN4VFOfE6QW
 V6xmFexmA7TjTdqbL/fN3KvVyqwg92Zt1MvKyL7MuUFXLpp81FlFTDOdcb8b3x5P
 yQPk4xIeZWQ8D8A8uLylo2//WefYWnqFUP/emmX/cMSlCigM2Dj9eSDYV7Ju8gM=
 =jknp
 -----END PGP SIGNATURE-----
 

Use datastore to determine if a checkrun rerun should trigger a presubmit or postsubmit build (#2387)

* Use GoB to determine if a checkrun should trigger a presubmit or postsubmit rerun

* Apply suggestions from code review

Co-authored-by: Casey Hillers <caseyhillers@gmail.com>

* Simplify getCommit's arguments by passing project name through slug

* Remove GoB stuff

* Use datastore instead of GoB for postsubmit check

* Fix tests and change ScheduleBuildRequest's properties map to have Objects as values instead of dynamic

* Add datastore tests

* Add logging about presubmit / postsubmit determination

* Add tests for processCheckRun

* Fix GerritCommit deserialization of committer field

* Fix gitBranch TODO in processCheckRun

* Add entity lookup methods from PR #2391

* Use entity methods

* Fix licenses test

* Rename Commit's key method, fix tests, and rewrite TODO

* Fix log message for Commit lookup

Co-authored-by: Casey Hillers <caseyhillers@gmail.com>