Chapter 1. Introduction to Continuous Integration, Continuous Delivery and Jenkins-CI
- Foundation of Agile AppDev
- XP Flow
- Extreme Programming
- Agile Development
- What is Continuous Integration
- What is Continuous Integration (cont'd)
- Typical Setup for Continuous Integration
- Setup Notes for Continuous Integration
- CI with Artifact Management
- What is Continuous Delivery?
- Why Continuous Delivery?
- DevOps and Continuous Delivery
- Continuous Delivery Challenges
- Continuous Delivery vs Continuous Deployment
- Jenkins Continuous Integration
- Jenkins Features
- Running Jenkins
Summary
Chapter 2. Installing and Running Jenkins
- Downloading and Installing Jenkins
- Running Jenkins as a Stand-Alone Application
- Running Jenkins as a Stand-Alone Application (cont'd)
- Running Jenkins on an Application Server
- The Jenkins Home Folder
- Installing Jenkins as a Windows Service
- Initial Configuration
- Configuration Wizard
- Configuration Wizard (cont'd)
- Configuring Tools
- Configuring Tools - Best Practices
- Logging in Jenkins
- Custom Log Recorders
Summary
Chapter 3. Job Types in Jenkins
- Introduction
- Different types of Jenkins Items
- Different types of Jenkins Items (cont'd)
- Configuring Source Code Management(SCM)
- Working with Subversion
- Working with Subversion (cont'd)
- Working with Git
- Storing Credentials
- Service Accounts
- Storing Credentials (cont'd)
- Build Triggers
- Schedule Build Jobs
- Polling the SCM
- Polling vs Triggers
- Maven Build Steps
Summary
Chapter 4. Advanced Jobs
- Parameterized Jobs
- Built-in Environment Variables
- Parameter Types
- Defining Parameters
- Using Parameters / Environment Variables
- Parameters in the config.xml File
- Launching a Build with Parameters
- Configuration Matrix
- Configuration Matrix – Example
- Defining Configuration Matrix
- Monitoring External Jobs
Summary
Chapter 5. Non-Java Jenkins Jobs
- Jenkins Jobs
- Non-Java Jobs
- Building .NET Projects with Jenkins
- Installing MSTest Plugin in Jenkins
- Configuring the MSBuild Plugin
- Creating a Jenkins Job and Specify a Build Step
- Specifying a Step for Running Unit Tests
- Adding a Step for Deploying the .NET Project
- Building a Node.js Application with Jenkins
- Node.js Plugin
- Provides direct Pipeline supportBuilding a C++ Project with Jenkins
- Executing PowerShell Scripts with Jenkins
Summary
Chapter 6. Template Jobs
- Template Jobs
- Template Jobs (Contd.)
- Template Jobs Plugin
- Template Jobs Plugin - config.xml
Summary
Chapter 7. Continuous Delivery and the Jenkins Pipeline
- Continuous Delivery
- Continuous Delivery (cont'd)
- DevOps and Continuous Delivery
- Continuous Delivery Challenges
- Continuous Delivery with Jenkins
- The Pipeline Plugin
- The Pipeline Plugin (cont'd)
- Defining a Pipeline
- A Pipeline Example
- Pipeline Example (cont'd)
- Parallel Execution
- Creating a Pipeline
- Invoking the Pipeline
- Interacting with the Pipeline
- Pipeline vs Traditional Jobs
Conclusion
Chapter 8. Groovy DSL
- What is Groovy
- Groovy in Jenkins
- Comments in Groovy
- Data Types
- Identifiers
- Variables
- def
- String Interpolation
- Operators
- Ranges
- Conditional Statements
- Loops
- Lists
- Maps
- Exception Handling
- Methods
- Closures
- this Keyword
- Classes
- Static Methods
- Inheritance
- Abstract Classes
- Interfaces
- Generics
- Jenkins Script Console
- Extending with Shared Libraries
- Directory Structure
- Sample Groovy Code
- Defining Shared Libraries
- Using Shared Libraries
- Same Shared Library Usage Code
- Defining Global Variables
Summary
Chapter 9. Securing Jenkins
- Jenkins Security - Overview
- Jenkins Security
- Authentication
- Authorization
- Confidentiality
- Activating Security
- Configure Authentication
- Using Jenkins's Internal User Database
- Creating Users
- Authorization
- Matrix-Based Security
- Note – Create the Administrative User
- Project-based Matrix Authorization
- Project-Based Authentication
- Role Based Access Control
Conclusion
Chapter 10. Jenkins Plugins
- Introduction
- Jenkins Plugins - SCM
- Jenkins Plugins – Build and Test
- Jenkins Plugins – Analyzers
- Jenkins for Teams
- Installing Jenkins Plugins
Summary
Chapter 11. Distributed Builds with Jenkins
- Distributed Builds - Overview
- Distributed Builds – How?
- Agent Machines
- Configure Jenkins Master
- Configure Projects
Conclusion
Chapter 12. Containerized Builds
- Introduction to Docker
- Docker – Benefits
- Containers vs. Virtual Machines
- Running Jenkins in a Docker Container
- Delete Jenkins Container and Image
- Configuring Command Prompt to Connect to Docker
- Creating Docker Container from Jenkins Job
- Test Custom Image Created by a Jenkins Job
- The Jenkins Docker Build Step Plugin
- Ephemeral Build Agents
Summary
Chapter 13. The Jenkins API
- Remote Access API
- What you can do with the Jenkins Remote API
- Remote API and CSRF Protection – API Token
- Remote API and CSRF Protection – Crumb
- Configure Jobs to Support the Jenkins Remote API
- Making Remote API Calls
- Example - Advanced REST Client
- Example – cURL
- Jenkins CLI
- Configure Jenkins to use CLI
- Download and Use Jenkins CLI
Summary
Chapter 14. Scripting
- Introduction to Scripting
- Benefits of Scripting
- The Jenkins Script Console
- Calling Scripts using cURL
- Sample Scripts
- Calling Groovy Scripts from a Jenkins Job
- Jenkins API
Summary
Chapter 15. User Interface Options
- User Interface Options
- Customizing the UI with CSS
- The User Content Folder
- Using the User Content Folder and Simple Theme Plugin
- Writing a Jenkins Plugin
- Modify settings.xml
- Generate Boilerplate Code for Custom Jenkins Plugin
- Modify pom.xml
- Package and Deploy the Plugin
- The Blue Ocean Plugin
- Blue Ocean Plugin Features
- New modern user experience
- Advanced Pipeline visualizations with built-in failure diagnosis
- Branch and Pull Request awareness
- Personalized View
Summary
Chapter 16. Best Practices for Jenkins
- Best Practices - Secure Jenkins
- Best Practices - Users
- Best Practices - Backups
- Best Practices - Reproducible Builds
- Best Practices - Testing and Reports
- Best Practices - Large Systems
- Best Practices - Distributed Jenkins
- Best Practices - Summary
Lab Exercises
Lab 1. Configure Tools in Jenkins
Lab 2. Create a Jenkins Job
Lab 3. Advanced Jobs
Lab 4. Template Jobs
Lab 5. Node.js based Jenkins Job and Manual Approval
Lab 6. Create a Pipeline
Lab 7. Advanced Pipeline with Groovy DSL
Lab 8. Configure Jenkins Security
Lab 9. Optional - Ephemeral Build Agents with Docker