Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Jenkins: The Definitive Guide
Foreword
Preface
Audience
Book Layout
Jenkins or Hudson?
Font Conventions
Command-Line Conventions
Contributors
The Review Team
Book Sponsors
Wakaleo Consulting
CloudBees
Odd-e
Using Code Examples
Safari® Books Online
How to Contact Us
Acknowledgments
1. Introducing Jenkins
Introduction
Continuous Integration Fundamentals
Introducing Jenkins (née Hudson)
From Hudson to Jenkins—A Short History
Should I Use Jenkins or Hudson?
Introducing Continuous Integration into Your Organization
Phase 1—No Build Server
Phase 2—Nightly Builds
Phase 3—Nightly Builds and Basic Automated Tests
Phase 4—Enter the Metrics
Phase 5—Getting More Serious About Testing
Phase 6—Automated Acceptance Tests and More Automated Deployment
Phase 7—Continuous Deployment
Where to Now?
2. Your First Steps with Jenkins
Introduction
Preparing Your Environment
Installing Java
Installing Git
Setting Up a GitHub Account
Configuring SSH Keys
Forking the Sample Repository
Starting Up Jenkins
Configuring the Tools
Configuring Your Maven Setup
Configuring the JDK
Notification
Setting Up Git
Your First Jenkins Build Job
Your First Build Job in Action
More Reporting—Displaying Javadocs
Adding Code Coverage and Other Metrics
Conclusion
3. Installing Jenkins
Introduction
Downloading and Installing Jenkins
Preparing a Build Server for Jenkins
The Jenkins Home Directory
Installing Jenkins on Debian or Ubuntu
Installing Jenkins on Redhat, Fedora, or CentOS
Installing Jenkins on SUSE or OpenSUSE
Running Jenkins as a Stand-Alone Application
Running Jenkins Behind an Apache Server
Running Jenkins on an Application Server
Memory Considerations
Installing Jenkins as a Windows Service
What’s in the Jenkins Home Directory
Backing Up Your Jenkins Data
Upgrading Your Jenkins Installation
Conclusion
4. Configuring Your Jenkins Server
Introduction
The Configuration Dashboard—The Manage Jenkins Screen
Configuring the System Environment
Configuring Global Properties
Configuring Your JDKs
Configuring Your Build Tools
Maven
Ant
Shell-Scripting Language
Configuring Your Version Control Tools
Configuring Subversion
Configuring CVS
Configuring the Mail Server
Configuring a Proxy
Conclusion
5. Setting Up Your Build Jobs
Introduction
Jenkins Build Jobs
Creating a Freestyle Build Job
General Options
Advanced Project Options
Configuring Source Code Management
Working with Subversion
Working with Git
Installing the plugin
System-wide configuration of the plugin
SSH key setup
Using the plugin
Advanced per-project source code management configuration
Branches to build
Excluded regions
Excluded users
Checkout/merge to local branch
Local subdirectory for repo
Merge before build
Prune remote branches before build
Clean after checkout
Recursively update submodules
Use commit author in changelog
Wipe out workspace
Choosing strategy
Git executable
Repository browser
Build triggers
Gerrit Trigger
Post-build actions
Push only if build succeeds
Merge results
Tags
Branches
GitHub plugin
Build Triggers
Triggering a Build Job Once Another Build Job Has Finished
Scheduled Build Jobs
Polling the SCM
Triggering Builds Remotely
Manual Build Jobs
Build Steps
Maven Build Steps
Ant Build Steps
Executing a Shell or Windows Batch Command
Using Jenkins Environment Variables in Your Builds
Running Groovy Scripts
Building Projects in Other Languages
Post-Build Actions
Reporting on Test Results
Archiving Build Results
Notifications
Building Other Projects
Running Your New Build Job
Working with Maven Build Jobs
Building Whenever a SNAPSHOT Dependency Is Built
Configuring the Maven Build
Post-Build Actions
Deploying to an Enterprise Repository Manager
Deploying to Commercial Enterprise Repository Managers
Managing Modules
Extra Build Steps in Your Maven Build Jobs
Using Jenkins with Other Languages
Building Projects with Grails
Building Projects with Gradle
The Gradle plugin for Jenkins
Incremental builds
Building Projects with Visual Studio MSBuild
Building Projects with NAnt
Building Projects with Ruby and Ruby on Rails
Conclusion
6. Automated Testing
Introduction
Automating Your Unit and Integration Tests
Configuring Test Reports in Jenkins
Displaying Test Results
Ignoring Tests
Code Coverage
Measuring Code Coverage with Cobertura
Integrating Cobertura with Maven
Integrating Cobertura with Ant
Installing the Cobertura code coverage plugin
Reporting on code coverage in your build
Interpreting code coverage metrics
Measuring Code Coverage with Clover
Automated Acceptance Tests
Automated Performance Tests with JMeter
Help! My Tests Are Too Slow!
Add More Hardware
Run Fewer Integration/Functional Tests
Run Your Tests in Parallel
Conclusion
7. Securing Jenkins
Introduction
Activating Security in Jenkins
Simple Security in Jenkins
Security Realms—Identifying Jenkins Users
Using Jenkins’s Built-in User Database
Using an LDAP Repository
Using Microsoft Active Directory
Using Unix Users and Groups
Delegating to the Servlet Container
Using Atlassian Crowd
Integrating with Other Systems
Authorization—Who Can Do What
Matrix-based Security
Setting up matrix-based security
Fine-tuning user permissions
Help! I’ve locked myself out!
Project-based Security
Role-based Security
Auditing—Keeping Track of User Actions
Conclusion
8. Notification
Introduction
Email Notification
More Advanced Email Notification
Claiming Builds
RSS Feeds
Build Radiators
Instant Messaging
IM Notification with Jabber
IM Notification using IRC
IRC Notification
Desktop Notifiers
Notification via Notifo
Mobile Notification
SMS Notification
Making Noise
Extreme Feedback Devices
Conclusion
9. Code Quality
Introduction
Code Quality in Your Build Process
Popular Java and Groovy Code Quality Analysis Tools
Checkstyle
PMD/CPD
FindBugs
CodeNarc
Reporting on Code Quality Issues with the Violations Plugin
Working with Freestyle Build Jobs
Working with Maven Build Jobs
Using the Checkstyle, PMD, and FindBugs Reports
Reporting on Code Complexity
Reporting on Open Tasks
Integrating with Sonar
Conclusion
10. Advanced Builds
Introduction
Parameterized Build Jobs
Creating a Parameterized Build Job
Adapting Your Builds to Work with Parameterized Build Scripts
More Advanced Parameter Types
Building from a Subversion Tag
Building from a Git Tag
Starting a Parameterized Build Job Remotely
Parameterized Build Job History
Parameterized Triggers
Multiconfiguration Build Jobs
Setting Up a Multiconfiguration Build
Configuring a Slave Axis
Configuring a JDK Axis
Custom Axis
Running a Multiconfiguration Build
Generating Your Maven Build Jobs Automatically
Configuring a Job
Reusing Job Configuration with Inheritance
Plugin Support
Freestyle Jobs
Coordinating Your Builds
Parallel Builds in Jenkins
Dependency Graphs
Joins
Locks and Latches
Build Pipelines and Promotions
Managing Maven Releases with the M2Release Plugin
Copying Artifacts
Build Promotions
Aggregating Test Results
Build Pipelines
Conclusion
11. Distributed Builds
Introduction
The Jenkins Distributed Build Architecture
Master/Slave Strategies in Jenkins
The Master Starts the Slave Agent Using SSH
Starting the Slave Agent Manually Using Java Web Start
Installing a Jenkins Slave as a Windows Service
Starting the Slave Node in Headless Mode
Starting a Windows Slave as a Remote Service
Associating a Build Job with a Slave or Group of Slaves
Node Monitoring
Cloud Computing
Using Amazon EC2
Setting up your Amazon EC2 build farm
Using EC2 instances as part of your build farm
Using dynamic instances
Using the CloudBees DEV@cloud Service
Conclusion
12. Automated Deployment and Continuous Delivery
Introduction
Implementing Automated and Continuous Deployment
The Deployment Script
Database Updates
Smoke Tests
Rolling Back Changes
Deploying to an Application Server
Deploying a Java Application
Using the Deploy plugin
Redeploying a specific version
Deploying a version from a previous Jenkins build
Deploying a version from a Maven repository
Deploying Scripting-based Applications Like Ruby and PHP
Conclusion
13. Maintaining Jenkins
Introduction
Monitoring Disk Space
Using the Disk Usage Plugin
Disk Usage and the Jenkins Maven Project Type
Monitoring the Server Load
Backing Up Your Configuration
Fundamentals of Jenkins Backups
Using the Backup Plugin
More Lightweight Automated Backups
Archiving Build Jobs
Migrating Build Jobs
Conclusion
A. Automating Your Unit and Integration Tests
Automating Your Tests with Maven
Automating Your Tests with Ant
Index
About the Author
Colophon
Copyright
← Prev
Back
Next →
← Prev
Back
Next →