"fastlane lets you define and run your deployment pipelines for different environments. It helps you unify your app’s release process and automate the whole process. fastlane connects all fastlane tools and third party tools, like CocoaPods and Gradle." directly from the horses mouth
https://fastlane.tools/I'm obviously a fan.
It's a Ruby-based DSL that wraps a collection of small CLI tools to define the entire workflow. It can handle most aspects out-of-box like building, signing, taking a snapshot, pushing, etc. It appears to be extensible too, but I haven't tried that much yet.