jmckenzie-dev commented on code in PR #2554: URL: https://github.com/apache/cassandra/pull/2554#discussion_r1300507584
########## .build/config/README.md: ########## @@ -0,0 +1,125 @@ +Declarative Test Suite Configuration +------------------------------------------- + +Pipeline and test suite configurations are declarative so other CI implementations can build +durable, reactive systems based on changes to the upstream OSS C* CI. Additions to `jobs.cfg` and +`pipelines.cfg` can be picked up programmatically by CI implementations +without requiring human intervention. + +Concepts +--------------------- + +### Pipeline +A [pipeline](cassandra_ci.yaml) is a collection of jobs. For a given pipeline to be considered +successful, +all +jobs listed in the pipeline must run to completion without error using the constraints, commands, +and environment specified for the job in the config. + +### Job +A [job](jobs.yaml) contains a collection of parameters that inform a CI system on both what needs to +run, how to run it, and the constraints of the environment in which it should execute. We +provide these limits to reflect what's available in our reference ASF CI implementation so other +CI environments are able to limit themselves to our resourcing upstream and thus not destabilize +ASF CI. + +Examples of jobs include unit tests, python dtests, in-jvm dtests, etc. + +Jobs include the following parameters: + +* `parent:` Another job defined in the file this job inherits parameters from, potentially + overwriting any declared in duplication +* `description:` Text based description of this job's purpose +* `cmd:` The command a shell should run to execute the test job +* `testlist:` A command that will create a text file listing all the test files to be run for + this + suite +* `env:` Space delimited list of environment variables to be set for this suite. Duplicates for + params are allowed and later declarations should supercede former. +* `cpu:` Max cpu count allowed for a testing suite +* `memory:` Max memory (in GB) allowable for a suite +* `storage:` Max allowable storage (in GB) allowable for a suite to access + +Jobs can be split up and parallelized in whatever manner best suits the environment in which they're +orchestraed. + +Configuration Files +--------------------- + +[pipelines.cfg](./cassandra_ci.yaml): Contains pipelines for CI jobs for Apache Cassandra + +[jobs.cfg](./jobs.yaml): Contains reference CI jobs for Apache Cassandra + +Existing Pipelines +--------------------- + +As outlined in the `pipelines.cfg` file, we primarily have 3 pipelines: +### pre-commit: +* must run and pass on the lowest supported JDK before a committer merges any code +### post-commit: +* will run on the upstream ASF repo after a commit is merged, matrixed across more axes and including configurations expected to fail or diverge only rarely +### nightly: +* run nightly. Longer term, infra, very stable areas of code. Review Comment: Fair enough. Removed; kept it as an unopinionated option to consider during this process. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

