> Auto-run on push? Can you elaborate?
Yep - instead of having to go to circle and click, when you push your branch 
the circle hook picks it up and kicks off the top level job automatically. I 
tend to be paranoid and push a lot of incremental work that's not ready for CI 
remotely so it's not great for me, but I think having it be optional is the 
Right Thing.

So here's the outstanding work I've distilled from this thread:
- Create an epic for circleci improvement work (we have a lot of little 
augments to do here; keep it organized and try and avoid redundancy)
- Include CASSANDRA-17600 in epic umbrella  
- Include CASSANDRA-17930 in epic umbrella
- Ticket to tune parallelism per job  
    -  
    > def java_parallelism(src_dir, kind, num_file_in_worker, include = lambda 
a, b: True):
    >     d = os.path.join(src_dir, 'test', kind)
    >     num_files = 0
    >     for root, dirs, files in os.walk(d):
    >         for f in files:
    >             if f.endswith('Test.java') and include(os.path.join(root, f), 
f):
    >                 num_files += 1
    >     return math.floor(num_files / num_file_in_worker)
    > 
    > def fix_parallelism(args, contents):
    >     jobs = contents['jobs']
    > 
    >     unit_parallelism                = java_parallelism(args.src, 'unit', 
20)
    >     jvm_dtest_parallelism           = java_parallelism(args.src, 
'distributed', 4, lambda full, name: 'upgrade' not in full)
    >     jvm_dtest_upgrade_parallelism   = java_parallelism(args.src, 
'distributed', 2, lambda full, name: 'upgrade' in full)
    - `TL;DR - I find all test files we are going to run, and based off a 
pre-defined variable that says “idea” number of files per worker, I then 
calculate how many workers we need.  So unit tests are num_files / 20 ~= 35 
workers.  Can I be “smarter” by knowing which files have higher cost?  Sure… 
but the “perfect” and the “average” are too similar that it wasn’t worth it...` 
 
- Ticket to combine pre-commit jobs into 1 pipeline for all JDK's
    - Path to activate all supported JDK's for pre-commit at root (one-click 
pre-merge full validation)
    - Path to activate per JDK below that (interim work partial validation)
- Ticket to rename jobs in circleci
    - Reference comment: 
https://issues.apache.org/jira/browse/CASSANDRA-17939?focusedCommentId=17617016&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17617016
    - (buildjdk)_(runjdk)_(testsuite) format:
    - j8_j8_jvm_dtests
    - j8_j11_jvm_dtests
    - j11_j11_jvm_dtest_vnode
    etc
- Ticket for flag in generate.sh to support auto run on push (see response 
above)
- Ticket for: remove -h, have -f and -p (free and paid) (probably intersects 
with https://issues.apache.org/jira/browse/CASSANDRA-17600)

Anything wrong w/the above or anything missed? If not, I'll go do some JIRA'ing.

~Josh


On Fri, Oct 21, 2022, at 3:50 PM, Josh McKenzie wrote:
>> I am cool with removing circle if apache CI is stable and works, we do need 
>> to solve the non-committer issue but would argue that partially exists in 
>> circle today (you can be a non-commuter with a paid account, but you can’t 
>> be a non-committer with a free account)
> There's a few threads here:
> 1. non-committers should be able to run ci
> 2. People that have resources and want to run ci faster should be able to do 
> so (assuming the ci of record could serve to be faster)
> 3. ci should be stable
> 
> Thus far we haven't landed on 1 system that satisfies all 3. There's some 
> background discussions brainstorming how to get there; when / if things come 
> from that they'll as always be brought to the list for discussion.
> 
> On Fri, Oct 21, 2022, at 1:44 PM, Ekaterina Dimitrova wrote:
>> I agree with David with one caveat - last time I checked only some Python 
>> tests lack enough resources with the free tier. The rest run slower than 
>> with a paid account, but they do fine. In fact I use the free tier if I want 
>> to test only unit or in-jvm tests sometimes. I guess that is what he meant 
>> by partially but even being able to run the non-Python tests is a win IMHO. 
>> If we find a solution for all tests though… even better.
>> @Derek your idea sounds interesting, I will be happy to see a proposal. 
>> Thank you
>> 
>> On Fri, 21 Oct 2022 at 13:39, David Capwell <dcapw...@apple.com> wrote:
>>> I am cool with removing circle if apache CI is stable and works, we do need 
>>> to solve the non-committer issue but would argue that partially exists in 
>>> circle today (you can be a non-commuter with a paid account, but you can’t 
>>> be a non-committer with a free account)
>>> 
>>> 
>>> 
>>>> On Oct 20, 2022, at 2:20 PM, Josh McKenzie <jmcken...@apache.org> wrote:
>>>> 
>>>>> I believe it's original intention to be just about CircleCI.
>>>> It was but fwiw I'm good w/us exploring adjacent things regarding CI here. 
>>>> I'm planning on deep diving on the thread tomorrow and distilling a 
>>>> snapshot of the work we have a consensus on for circle and summarizing 
>>>> here so we don't lose that. Seems like it's fairly non-controversial.
>>>> 
>>>> On Thu, Oct 20, 2022, at 5:14 PM, Mick Semb Wever wrote:
>>>>> 
>>>>> 
>>>>> On Thu, 20 Oct 2022 at 22:07, Derek Chen-Becker <de...@chen-becker.org> 
>>>>> wrote:
>>>>>> Would the preclusion of non-committers also prevent us from configuring 
>>>>>> Jenkins to auto-test on PR independent of who opens it?
>>>>>> 
>>>>>> One of my current concerns is that we're maintaining 2x the CI for 1x 
>>>>>> the benefit, and I don't currently see an easy way to unify them 
>>>>>> (perhaps a lack of imagination?). I know there's a long history behind 
>>>>>> the choice of CircleCI, so I'm not trying to be hand-wavy about all of 
>>>>>> the thought that went into that decision, but that decision has costs 
>>>>>> beyond just a paid CircleCI account. My long term, probably naive, goals 
>>>>>> for CI would be to:
>>>>>> 
>>>>>> 1. Have a CI system that is *fully* available to *any* contributor, 
>>>>>> modulo safeguards to prevent abuse
>>>>> 
>>>>> 
>>>>> This thread is going off-topic, as I believe it's original intention to 
>>>>> be just about CircleCI.
>>>>> 
>>>>> But on your point… our community CI won't be allowed (by ASF), nor have 
>>>>> capacity (limited donated resources), to run pre-commit testing by anyone 
>>>>> and everyone.
>>>>> 
>>>>> Today, trusted contributors can be handed tokens to ci-cassandra.a.o 
>>>>> (make sure to label them so they can be revoked easily), but we still 
>>>>> face the issue that too many pre-commit runs impacts the throughput and 
>>>>> quality of the post-commit runs (though this has improved recently).
>>>>> 
>>>>> It's on my wishlist to be able to: with a single command line; spin up 
>>>>> the ci-cassandra.a.o stack on any k8s cluster, run any git sha through it 
>>>>> and collect results, and tear it down. Variations on this would solve 
>>>>> non-committers being able to repeat, use, and work on their own (or a 
>>>>> separately donated) CI system, and folk/companies with money to be able 
>>>>> to run their own ci-cassandra.a.o stacks for faster pre-commit turnaround 
>>>>> time. Having this reproducibility of the CI system would make testing 
>>>>> changes to it easier as well, so I'd expect a positive feedback loop 
>>>>> here. 
>>>>> 
>>>>> I have some rough ideas on how to get started on this, if anyone would 
>>>>> like to buddy up on it.
> 

Reply via email to