Cover
Copyright
About the Authors
Table of Contents
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Downloading the color images of this book
Errata
Piracy
Questions
1. Gettings Started with Jenkins
Introduction
Installing Jenkins 2 on Windows
Installing Jenkins 2 on CentOS
Installing Jenkins 2 on Azure
Installing Jenkins as a Service in Windows
Installing plugins in Jenkins
Uploading plugins in Jenkins
Configuring proxy in Jenkins
Configuring global settings in Jenkins
Configuring JENKINS_HOME
Understanding JENKINS_HOME directory
Using different ports for Jenkins
Configuring JAVA_HOME in Jenkins
Configuring Git in Jenkins
Configuring ANT_HOME in Jenkins
Configuring MAVEN_HOME in Jenkins
Configuring GRADLE_HOME in Jenkins
Creating a Freestyle job for Ant Project
Creating a Maven Job for Maven Project
2. Management and Monitoring of Jenkins
Understanding master/agent architecture
Managing Jenkins build jobs using Eclipse
Backing up and restoring Jenkins
Command-line options in Jenkins using Jenkins CLI
Modifying the Jenkins configuration from the command line
Managing disk usage
Shutdown Jenkins safely
Monitoring Jenkins with JavaMelody
Troubleshooting with JavaMelody - memory
Troubleshooting with JavaMelody - painful jobs
Monitoring a Jenkins Job using a Build Monitor View
Configuring mail notifications
Signaling the need to archive
3. Managing Security
Introduction
Improving security with Jenkins configuration
Configuring Authorization - Matrix-based security
Configuring a Project-based Matrix Authorization Strategy
Jenkins and OpenLDAP integration
Jenkins and Active Directory integration
Jenkins and OWASP Zed Attack Proxy integration
Testing for OWASP's top 10 security issues
Finding 500 errors and XSS attachs in Jenkins through fuzzing
Avoiding sign-up bots with JCaptcha
4. Improving Code Quality
Introduction
Integrating Jenkins with SonarQube
The updating center in SonarQube
Quality gates, quality profiles, and rules
Verifying HTML, CSS and JavaScript validity using SonarQube
Verifying Java code using SonarQube
Configuring SonarQube as a Windows service
5. Building Applications in Jenkins
Introduction
Configuring an Ant project for execution
Configuring a Maven project for execution
Configuring an Android project for execution
Manipulating environmental variables
Running Ant through Groovy in Maven
Failed Jenkins jobs based on JSP syntax errors
Different server types
Eclipse templates for JSP pages
Remotely triggering jobs through the Jenkins API
Running jobs from within Maven
Remotely generating jobs
6. Continuous Delivery
Introduction
Archiving artifacts
Copying an artifact from another build job
Integrating Jenkins with Artifactory
Deploying a WAR file from Jenkins to Tomcat
Deploying a WAR file from Jenkins to AWS Beanstalk
Deploying a WAR file from Jenkins to Azure App Services
Promoting builds
7. Continuous Testing
Getting started with continuous testing
Creating a Selenium test case using Eclipse
Integrating Jenkins and Selenium for functional testing
Jenkins and Cucumber test reports
Creating a load test in Apache JMeter
Executing a load test from Jenkins
Reporting JMeter performance metrics
Testing with FitNesse
8. Orchestration
Introduction
Understanding upstream and downstream jobs
Configuring upstream and downstream jobs
Configuring a build pipeline
Creating a pipeline job
Using a sample pipeline for execution
Configuring a pipeline job for end-to-end automation
Getting started with the Blue Ocean dashboard
9. Jenkins UI Customization
Introduction
Skinning Jenkins with the simple themes plugin
CSS 3
Included JavaScript library frameworks
Trust but verify
Skinning and provisioning Jenkins using a WAR overlay
Which types of content can you replace?
Generating a home page
Creating HTML reports
Efficient use of views
Saving screen space with Dashboard View plugin
Making noise with HTML5 browsers
An extreme view of reception areas
10. Processes that Improve Quality
Culture and collaboration
Fail early or fail faster
Data-driven testing
Learning from history
Considering test automation as a software project
Visualize, visualize, and visualize!
Conventions are good
Test frameworks and commericial choices are increasing
Offsetting work to Jenkins nodes
Starving QA/integration servers
Reading the change log of Jenkins
Avoiding human bottlenecks
Avoiding groupthink
Training and community
Visibly rewarding successful developers
Stability and code maintenance
Resources on quality assurance
And there's always more
Final comments