Deployment
To deploy a web application to the hosting server or mobile application to users, we follow a Continuous Delivery (CD) practice. The main principles are:
- The application can be deployed at any time
- The application can be deployed with the push of a button and/or more commonly by merging a pull request
- No human is involved in the whole deployment annihilating the possibilities of most common process errors
Web
We use Semaphore to deploy (and test) the web applications that we build.
From the beginning of a project, both the staging and the production servers must be setup, and everything must be configured so that Semaphore can deploy the software to both servers.
Mobile
We use a self-hosted Jenkins CI server to deploy (and test) the mobile applications that we build.
For both iOS and Android, we also use Fastlane in the Jenkins pipelines to simplify and improve tedious build processes such as management of certificates and provisioning profiles.