our dependency graph, at a high-level is very hub-...
# general
c
our dependency graph, at a high-level is very hub-and-spoke. shared libraries at the core and then a continually growing number of spokes. Each of those spokes have very heavy integration tests (and associated environment activations). I look forward to being able to change something on a spoke and only have those integration tests run. I’m trying to understand how that maps into a CI tool. We are currently using Jenkins and running each of those spokes integration tests in parallel stages. I’m more than willing to consider alternative CI tools if we can achieve something that is more seamless/better integrated.
a
at twitter we currently use something like
./pants --changed-changes-since=HEAD~1 list > all-changed-targets.txt && ./pants --target-spec-file=all-changed-targets.txt filter --type=junit_tests > all-junit-tests.txt
and then run each of those test targets in its own worker type thing using scoot: https://github.com/twitter/scoot, also through jenkins (i am not very familiar with this bit). when remoting is further along then we can just use
./pants test ::
, but i don't know the timeline until then.
hm, the first part could probably be shortened to
./pants --changed-changes-since=HEAD~1 filter --type=junit_tests
, or if it can't, it should be (i think it can't actually, because we need to make these cli options more composable)
we also have some great infra internally around flaky tests which i should probably start the process to open source tbh
c
I’m all ears on anything to help with managing flaky tests.