Jenkins
Overview
Jenkins is one among the most popular automation servers. It helps organisations to speed up the software development process. It’s a open source CI tool which is written in Java and allows CI and delivery of projects. A exclusive feature of Jenkins is its massive library of Plugins which enable Jenkins to be used in projects that are written in languages other than Java and to integrate with other popular technologies. These will be supported by an active community that networks online, learns and grows together.Features
- No Hassle
- Not complex
- Upgradability
- easy to Communicate
3 Days
Pre-Requisites
Familiarity with Java development practices
Course Outline
The Project Build and Release Automation
- The components of build system
- The build automation process
- Overview on Apache Maven and Ant and Gradle
- Unit and Integration testing
- Overview on GIT SCM
- Product Delivery pipeline
- Code integration
What is Continuous Integration?
Introduction to Continuous Integration
- What Is CI?
- Why CI?
- CI Philosophy
- Advantages of CI in Software Development
How to Implement CI
- Setting Up a CI Environment
- CI Tools
- Automated Builds
- Automated Tests
- Code Repository
- Continuous Integration builds
- Integration of Automated Testing With CI
- Continuous Delivery mechanism
- Continuous Improvement with Feedback Loop and Improvement Cycle
The CI process practices
- What you need for CI
- General Working Procedure
- Team involvement and notifications
- Commit Code Frequently
- Don’t Commit Broken Code
- Run private Builds First
- Fix Broken Builds immediately
- Avoid Getting Broken Builds
- Write Automated Developer tests
- All Tests Must Pass
- Automate as Much as Possible
- Shared Ownership
- Build automation
The Jenkins CI Server
- Jenkins Architecture and Features
- Jenkins installation and configuration
- Jenkins plug-ins configuration
Security plug-ins
- Maven Plug-in
- Git Plug-in
- Cobertura
- Jacoco
- MS Build
- Pipeline plug-in
- Assign user roles for admin and monitoring.
Create Freestyle Build job
- The project build configuration
- Jenkins GIT SCM integration
- Configure the Trigger for build process
- Configure pre-build and post-build activities with ant and other tools
- Execute the JUnit test cases/suites
- Integrate with code quality tools Sonar, Find bugs, PMD, Check Style etc.
- Generate test reports.
- Monitor the build jobs
- Build console monitoring
- Jenkins Groovy API Overview
- Using Groovy console for monitoring and update
- Use groovy scripts
Maven Job
- Maven job with application Dependencies
- Working with Local/Remote Repository
- Maven Central Repository usage
- Build Java project with Maven
- Configure pre and post build activities
- Deploy the artifacts
- Build and monitor the job
- Build job dependencies
- Upstream and downstream triggers
- The effects of build failures
- Define a pipeline of jobs
High Level Pipeline Job
- The pipeline plug-in update
- Generate configuration
- Manage repository
- Manage build activities
- Build artifacts
- Create delivery pipeline from development job
- Define series of build jobs
- The code to manage the infrastructure
- Execution and monitoring
- Parameterized Jobs
Configure build with external inputs
- Create a parameterized job
- Configure external parameters String, Boolean, Choice, file, job name etc.
- Execute another build job
- Read the parameters during build as environment values
- Apache ant script
- Groovy Console
- Use plug-in for parameterized customization
- The execution of parameterized job
Groovy in Jenkins
- Role of groovy in Jenkins
- Groovy language basics
- The Groovy Interpreter and architecture
- Classes and Scripts
- Execute groovy scripts
- Java Integration
- Groovy Applications
- Database Operations
- Operator overloading
- Execute groovy scripts in Jenkins Groovy console
- Jenkins Groovy plug-in
- Execute groovy scripts as build activity
Jenkins Advanced
- Configure Non-Java builds such as C++ / .net applications
- Jenkins plug-ins architecture
- Write your own plug-in
- Distributed Builds on Master-Slave nodes
- Restrict the job execution on a node
- High availability / Clustering overview
