Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.
By integrating regularly, you can detect errors quickly and locate them more easily.
For all active projects we use Bitrise (previously we used CircleCI). Unlike Circle, which is suitable for any type of project, Bitrise is CI/CD just for mobile apps and it offers some advantages for mobile development CI.
Bitrise and Circle are a cloud-based solution, your code gets cloned to a remote server, which could pose a security problem for your client.
We usually have two main workflows:
- One that's run for every push and contains all the checks and linters. Status of this workflow is reported back to Github, so Pull Request can't be merged if these checks don't pass. That workflow might look something like this:
- One that's run to distribute the app to internal store or Google Play
In the git flow model that is applied at Infinum, the
release branches have a special role in the development and release cycle. It is expected that the code will not be pushed directly to those two branches. Therefore, the branches need to be set as protected.
release branch need to be set as protected. In order to do so, administrator rights are required on the working project. The administrator user can click on the Settings button, as depicted in the picture.
Next, select the Branches tab as shown in the picture.
Next, select the
dev branch in the
Protected branches section.
Mark the check boxes as shown.