Fantastic improvement to the project — huge thanks to Mick and the whole
team for making this happen!

Jaydeep

On Thu, Aug 28, 2025 at 8:54 AM Štefan Miklošovič <smikloso...@apache.org>
wrote:

> Great experience so far, it "just works". My primary CI was Circle CI
> until now around which I have developed a lot of custom scripting but
> seeing this I think I will gravitate towards pre-ci from now on. What I
> especially like is the overall responsiveness of this Jenkins instance,
> post-commit Jenkins CI is way slower, loading a lot. This just reacts
> instantly.
>
> On Wed, Aug 27, 2025 at 11:50 PM Mick <m...@apache.org> wrote:
>
>>
>> tl;dr
>> I am super excited to share with you all the availability of
>> https://pre-ci.cassandra.apache.org , made possible from a very generous
>> donation by Amazon.  Using AWS donated credits we now have a fast
>> open-source CI system for pre-commit testing.  This is intended primarily
>> for committers (and trusted contributors) that do not have access to a
>> company-private CI system.  Contact me off-list if that's you.
>>
>> …
>> This huge donation from Amazon and builds on years of work on our CI and
>> testing scripts, accumulating in CASSANDRA-18145¹.
>>
>> The project now has an AWS account (controlled by ASF Infra), and into it
>> Amazon has provided a significant amount of credits for the purpose of our
>> pre-commit testing.
>>
>> In the C* project pre-commit CI has been a major hurdle and blocker to
>> new contributors, unaffiliated committers, and generally getting patches
>> committed.  Too much of our momentum has been led by contributors and
>> committers employed in companies that can pay to run their own in-house CI
>> systems.  It is not in the slightest their fault, nor their employers'
>> priority, but it has held the project back from its potential as well as
>> not being in the proper spirit of an open source project and community.
>>
>> Amazon has recognised this and stepped forward as a true champion of our
>> open-source community, providing both the AWS credits, as well as time in
>> helping setting it up, testing and documenting it.
>>
>> The work has also involved many steps and people the past five years!
>> since that first mention of a "Stand-alone Pipeline Run"².   This work has
>> gone from having a standalone Jenkinsfile, testing images and scripts that
>> can be used anywhere, both pre-commit and post-commit, to a Helm chart to
>> deploy ci-cassandra.a.o Jenkins clones in any k8s cluster of your
>> choosing.  This has also included getting our CI pipeline generating
>> aggregated test result artefact files that can easily be attached to jira
>> tickets, and archived permanently.  These objectives you can see listed in
>> CASSANDRA-18137³.
>>
>> For all this special thanks goes out to Richa Mishra, Nishant Barola,
>> Aleksandr Volochnev, Brandon Hsieh, Himanshu Jindal, Steve Mayszak, Dmitry
>> Konstantinov, Maxim Muzafarov, Berenguer Blasi, David Capwell, Brandon
>> Williams, Ekaterina Dimitrova, Henrik Ingo, Shankar Ramaswamy, Josh
>> McKenzie, Stefan Miklosovic, Gavin McDonald and no doubt others I've
>> forgotten!  Yeah, it feels like almost everyone, it has been a journey!
>>
>> It is not perfect: there is (always) room for improvement; and for now I
>> think next steps should be around further time+cost optimisations and
>> pipeline configurability.  I'm hoping folk can jump in and help with
>> these.
>>
>> What is provided today is a way for everyone anywhere to immutably
>> provision a ci-cassandra.a.o clone on k8s.  You avoid any need to install,
>> know or operate Jenkins (you do not even have to ever once open the Jenkins
>> UI – see below) and you do not need to wait more than a few hours to run
>> the "post-commit" pipeline with 140-200k tests.  The correlation to
>> pipeline time is now how many nodes your k8s can scale to (ofc limitations
>> exist, but those fine details are other convo), and with the cluster
>> scaling down to one node you get a cost-effective pay-what-you-use
>> deployment.  https://pre-ci.cassandra.apache.org runs on EKS, and
>> another instance for DataStax employees (
>> http://ci-cassandra.infra.datastax.com ) has been in use on GKE for over
>> a year now.  We have a CI system that is relatively ops-free, has the same
>> turnaround time as CircleCI and costs over an order of magnitude less.
>> This has been designed for downstream C* products to be able to re-use,
>> and indeed it is a setup that any project can easily use.
>>
>> The setup introduces repeatability in how we test.  The Jenkinsfile, the
>> docker images and the test scripts, are the same everywhere, including
>> locally.  Reproducing obscure failures in post-commit should be easier.
>>
>> If you would like to set up your own ci-cassandra clone, the docs for
>> both GKE are found in-tree under .jenkins/k8s/ ,and the docs for EKS coming
>> soon.
>>
>>
>> There is a command line interface that can be used for both provisioning
>> as well as everyday CI use.
>> Some examples:
>> ```
>> # Install the ci-cassandra helm chat in your current k8s context,
>> creating the ci-cassandra clone
>>
>> .build/run-ci --only-setup
>>
>> # Run your current branch through CI with the skinny profile.
>> #  Waits til completion, and creates ci_summary*.html &
>> results_details*.tar.xz files to attach to jira
>>
>> .build/run-ci --profile skinny
>>
>> # If you don't have kubectl access to the cluster, just specify the
>> jenkins url and user
>>
>> .build/run-ci --profile skinny --url pre-ci.cassandra.apache.org --user
>> myuser
>> ```
>>
>>
>> Huge huge praise and thanks to Amazon here: they really deserve it, they
>> have taken this over the finish line; but the opportunity deserves to
>> repeat all our gratitudes to all the very significant
>> ci-cassandra.apache.org donations that help us keep the project running:
>> NetApp, DataStax, Huawei and iland.
>>
>>
>> ¹) CASSANDRA-18145 – Run entire Cassandra Jenkins in any k8s (immutable
>> provisioning)
>> ²) https://lists.apache.org/thread/ch768l8y95npno9o9y130fjob1h675z8
>> ³) CASSANDRA-18137 – Repeatable ci-cassandra.a.o (Epic)
>>
>>
>>
>>

Reply via email to