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?
-
2Voting to close as Too Broad. You can edit your question in order to highlight a specific problem or feature of other CI tools and ask how to solve / reproduce it using Travis.– João FariasCommented Aug 19, 2019 at 14:40
-
3I think this is a pretty valid question for someone new to using CI and unfamiliar with other tools. At the moment you'll probably get answers along the lines of "here is what CI is generally used for now go RTFM the Travis docs". If this isn't the sort of answer you're looking for I'd consider an edit to narrow the question.– CherreeCommented Aug 19, 2019 at 15:17
2 Answers
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
- Deployment
- Generation of documentation
- Monitoring
- Reporting of results
- Scheduled clean-up scripts
- Daily/weekly restart of flaky services