When working on a team to develop a software its hard to keep track if everything because integration process is really fast. Fast integration of software makes backtracking tough and Its hard to find when things went wrong. I was thinking about making the process of automatic deployment which does not require any human intervention to start a build/deployment process. There were various enterprise CD applications out there but I was trying to define my own steps or pipeline to deploy my applications (specificly android application) without having any external servers and hosting.
What it does
When ever a project/team member makes changes to source code, Jenkins server finds change in code and it utilizes the pipeline defined for the project to setup, build, test and deploy application. and when the build is successful it notifies about the new build in team's slack channel
How I built it
There are multiple resources used to make the whole delevery process automates. For example Vagrant and Virtualbox is used to create a VM to build, test and deploy application. Jenkins is used to find the change in code and run the defined steps to deploy application. Slack plugin is used to push notification about build details to the team member.
Challenges I ran into
The biggest challenge I had was the process of selection of resources to use for the entire process. Other challanges I had was working with groovy and understanding and defining Jenkins pipeline process.
Accomplishments that I'm proud of
I'm proud that I was able to complete the entire infrastructure in very short period of time.
What I learned
I learn't how automated Continuous Delivery pipeline works. Also learnt how to work multiple setup of server in same machine (VM running in same machine with same ip but different ssh port than master machine. Jenkins server hosted in master machine which runs its builds in VM running in nested network).