What is Jenkins & Within SDLC
Jenkins is an open-source Continuous Integration (CI) and Continuous Delivery (CD) tool written in java.
It is an automation server used to build & deliver software projects.
Jenkins was forked from another project called Hudson, after a dispute with Oracle.
The major benefit of Jenkins is that it has a lot of plugins available.
There is easier to use CI software available, but Jenkins is Open-source free and still very popular.
What is CI/CD
Continuous Integration (CI) is the practice, in software engineering, of merging all developer working copies to a shared mainline several times a day. (Wikipedia) If you are familiar with git you will see that Continuous Integration, it used your own code together with the rest of the projects. This can be in the master branch, dev branch or even in your own branch.
Continuous Delivery (CD) is a software engineering approach in which terms produce software in short cycles, ensuring that the software can be reliably released at any time.(Wikipedia). Jenkins can really help you release software short cycles and ensure that reliability because we are going to test and build software over and over.
In Practice: Verify and Publish work by triggering automated builds & tests
We're going to do these automated builds and tests for every commit or at least once a day.
All developers should push their changes to version control, which should then be built and tested - which can be done by Jenkins.
Jenkins doesn’t merge codes, not it resolves code conflicts, that’s still for developers to do e.g. using git and merge tools
Benefits
- Jenkins provides a feedback loop back to the developer to fix build errors
- Jenkins can publish every build of your software,
- Every time someone commits the changes Jenkins can build and publish that piece of software, This build already has gone through automated testing you can configure that with Jenkins
- When publishing and deploying to a dev/QA/Staging server, you can advance the Software Development Life Cycle (SDLC) much quicker.
- The quicker you can go through an iteration of the SDLC better
CI/CD within the SDLC
- SDLC starts with the developer, the developer will write some codes, some software
- Then the software needs to be Build, Developer will user Feature and master branches (if using git), he will properly develop his features in separate branches over the code.
- Feature and master branches both need to build and compile
- What going to be happening now is, we are going to use Jenkins to do the Build, Jenkins will compile Feature and master branches any these fails it can sense the developer with some feedback. It will say, that the builds are failed because of some compile error/syntax error, So the developer can make some changes to commit those changes to version control and build it again.
3. After the build process going to have the test process, there are lots of tests to test the software/feature which they really work or not.
- What going to happen in this phase, if they're a failure in the test, the developer needs to do the fixes with code or test.
4. If build & test are successful, then the Release process can start
- First, to release the software it needs to be Package, it can be Package in the archive, zip or package in a container in a VM based on the requirements.
5. Once it Packaged then move to Provision servers and Deploy our software on the servers
6. Then Customer can use the application
7,8. This process needs to be Planned and Monitor, we need to make sure that we ensure that the Process whenever developer do some codes we want to release it quickly as possible to the customer.
The Build, Test & Release process can be done using Jenkins. It possible to use Jenkins for Build and Test and for Release to Package the software and then Deploy it on the devices or the servers, Jenkins can use whole for the SDLC.
Jenkins Alternatives
- Self-Hosted
- Drone CI (Continuous Delivery platform written in GO)
- TeamCity (By Jetbrains)
2. Hosted ( as a service)
- Wercker
- CircleCI
- CodeShip
- SemaphoreCI
- Amazon AWS CI/CD tools
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Thanks for Reading…...