Description:

Planning and defining a complete continuous integration/deployment (CI/CD) process for an application is not easy if one has no previous experience. In the session, I will explain the basics: from code to deployment, stage by stage, and how we can assess each of the stages and automate them in our CI/CD pipeline.  

The session will start by presenting the basics of the life-cycle of a project, with a focus on development and testing with no CI/CD process involved. Then, we will discuss how and when we could be interested in running automation like compilation, testing, packaging, and distribution of assets from our project. We will see real examples in Jenkins, the popular CI/CD server, with reference to other CI systems, on premises or as a service (like TravisCI).

We will then discuss testing environments, when to deploy to a testing environment and the needs (packaging the application, publishing in package repositories, deploying). In connection to this, we will discuss when to do testing: online testing vs nightly testing. Pros and cons of both and when it could be interesting to choose one over another.

Finally, options for deployment to production will be presented: either with some additional QA process involved in the middle or directly publishing our product once all automated tests have passed. 

At the end, a complete pipeline, from commit to the code repository to deployment to production will be presented.