I'm learning iOS development, and started learning Travis CI. Currently, I have it testing unit tests and UI tests, I understand how this can be helpful for a team working on the same project, but what else would I use it for? Deploying projects to TestFlight seems useful, but what are some other more common reasons companies or small teams of developers use continuous integration for, specifically Travis CI?
Your question is a little broad so this may be difficult to answer without spinning out into a list of anecdotes. In general you use tools/strategies like CI to automate tasks you find yourself doing a lot and to ensure they get done in a consistent and reproducible manner. Obviously, this means they could be used for all sorts of things - building libraries or applications, running tests against them, generating documentation, and publishing the artifacts to your documentation site, package manager, etc. are just a few of the common ones you'll probably see.
The "Integrations and Notifications" and "Deployments and Uploads" sections in the TravisCI docs at https://docs.travis-ci.com/ are probably a good place to get an idea of out-of-the-box uses for Travis but keep in mind you can do many many many more things as needed using command line scripts in your travis build file.
I like to see CI/CD tools like Travis as a task scheduler that excutes scripts/code.
It executes a pipeline based on a trigger. This trigger could be a commit, a http-call or a timed interval schedule. The pipeline executes code in ordered steps and can alert you of its state.
So you can do anything with it aslong as you can do it in code. The limit is your imagination.
My typical use cases:
- Build and unit-testing
- End2End test automation
- Generation of documentation
- Reporting of results
- Scheduled clean-up scripts
- Daily/weekly restart of flaky services