Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Title Page
Second Edition
Copyright
Learning Continuous Integration with Jenkins
Second Edition
Credits
About the Author
About the Reviewer
www.PacktPub.com
Why subscribe?
Customer Feedback
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
Concepts of Continuous Integration
Software Development Life Cycle
Requirement analysis
Design
Implementation
Testing
Evolution
Waterfall model of software development
Disadvantages of the Waterfall model
Advantages of the Waterfall model
Agile to the rescue
The twelve agile principles
How does the Agile software development process work?
Advantages of Agile software development process
The Scrum framework
Important terms used in the Scrum framework
How does Scrum work?
Sprint Planning
Sprint cycle
Daily Scrum meeting
Monitoring Sprint progress
Sprint Review
Sprint Retrospective
Continuous Integration
Agile runs on CI
Types of projects that benefit from CI
Elements of CI
Version control system
Branching strategy
GitFlow branching model
CI tool
Self-triggered builds
Code coverage
Code coverage tools
Static code analysis
Automated testing
Binary repository tools
Automated packaging
Benefits of using CI
Freedom from long integrations
Metrics
Catching issues faster
Rapid development
Spend more time adding features
Summary
Installing Jenkins
Running Jenkins inside a servlet container
Prerequisites
Installing Java
Installing Apache Tomcat
Enabling the firewall and port 8080
Configuring the Apache Tomcat server
Installing Jenkins on the Apache Tomcat server
Installing Jenkins alone on an Apache Tomcat server
Setting up the Jenkins home path
Installing a standalone Jenkins server on Windows
Prerequisites
Installing Java
Installing the latest stable version of Jenkins
Starting, stopping, and restarting Jenkins on Windows
Installing a standalone Jenkins server on Ubuntu
Prerequisites
Installing Java
Installing the latest version of Jenkins
Installing the latest stable version of Jenkins
Starting, stopping, and restarting Jenkins on Ubuntu
Installing a standalone Jenkins server on Red Hat Linux
Prerequisites
Installing Java
Installing the latest version of Jenkins
Installing the latest stable version of Jenkins
Starting, stopping, and restarting Jenkins on Red Hat Linux
Running Jenkins behind a reverse proxy
Prerequisites
Installing and configuring Nginx
Configuring the firewall on a Nginx server
Starting, stopping, and restarting the Nginx server
Securing Nginx using OpenSSL
Creating an SSL certificate
Creating strong encryption settings
Modifying the Nginx configuration
Enabling the changes and testing our Nginx setup
Configuring the Jenkins server
Adding reverse proxy settings to the Nginx configuration
Running Nginx and Jenkins on the same machine
Running Jenkins on Docker
Prerequisites
Setting up a Docker host
Setting up the repository
Installing Docker
Installing from a package
Running the Jenkins container
Running a Jenkins container using a data volume
Testing the data volume
Creating development and staging instances of Jenkins
Prerequisites
Creating an empty data volume
Copying data between data volumes
Creating the development and staging instances
Summary
The New Jenkins
The Jenkins setup wizard
Prerequisites
Unlocking Jenkins
Customizing Jenkins
Creating the first admin user
The new Jenkins pipeline job
Prerequisite
Creating a Jenkins pipeline job
The Global Tool Configuration page
Jenkins pipeline Stage View
Declarative Pipeline syntax
Basic structure of a Declarative Pipeline
The node block
The stage block
Directives
Steps
Jenkins pipeline syntax utility
Prerequisite
Installing the Pipeline Maven Integration Plugin
Creating a Jenkins pipeline using the pipeline syntax utility
Multibranch pipeline
Prerequisite
Adding GitHub credentials inside Jenkins
Configuring Webhooks on GitHub from Jenkins
Create a new repository on GitHub
Using a Jenkinsfile
Creating a Multibranch pipeline in Jenkins
Re-register the Webhooks
Jenkins Multibranch pipeline in action
Creating a new feature branch to test the multibranch pipeline
Jenkins Blue Ocean
Installing the Jenkins Blue Ocean plugin
View your regular Jenkins pipeline in Blue Ocean
Creating a pipeline in Blue Ocean
Summary
Configuring Jenkins
The Jenkins Plugin Manager
Updating Jenkins plugins
Installing a new Jenkins plugin
Uninstalling or downgrading a Jenkins plugin
Configuring proxy settings in Jenkins
Manually installing a Jenkins plugin
Jenkins backup and restore
Installing the Periodic Backup plugin
Configuring the Periodic Backup plugin
Creating a Jenkins backup
Restoring a Jenkins backup
Viewing the backup and restore logs
Upgrading Jenkins
Upgrading Jenkins running on Tomcat Server
Upgrading standalone Jenkins running on Windows
Upgrading standalone Jenkins running on Ubuntu
Upgrading Jenkins running on a Docker container
User administration
Enabling/disabling global security on Jenkins
Enabling/disabling computers to remember user credentials
Authentication methods
Delegating to a servlet container
Jenkins' own user database
LDAP
Unix user/group database
Creating new users inside Jenkins
People page
User information and settings in Jenkins
Authorization methods
Anyone can do anything
Legacy mode
Logged-in users can do anything
Matrix-based security
Project-based Matrix Authorization Strategy
Summary
Distributed Builds
Distributed build and test
The Jenkins Manage Nodes page
Adding Jenkins slaves – standalone Linux machine/VMs
Passing environment variables to Jenkins slaves
Passing tools' locations to Jenkins slaves
Launching a Jenkins slave via SSH
More about the active Jenkins slave
Adding Jenkins slaves – standalone Windows machine/VMs
Launching a Jenkins slave via Java Web Start
Adding Jenkins slaves – Docker containers
Prerequisites
Setting up a Docker server
Setting up the repository
Installing Docker using apt-get
Installing Docker using a .deb package
Enabling Docker remote API
Modifying the docker.conf file
Modifying the docker.service file
Installing the Docker plugin
Configuring the Docker plugin
Creating a Docker image – Jenkins slave
Adding Docker container credentials in Jenkins
Updating the Docker settings inside Jenkins
Summary
Installing SonarQube and Artifactory
Installing and configuring SonarQube
Installing Java
Downloading the SonarQube package
Running the SonarQube application
Resetting the default credentials and generating a token
Creating a project inside SonarQube
Installing the build breaker plugin for SonarQube
Creating quality gates
Updating the default quality profile
Installing the SonarQube plugin in Jenkins
Configuring the SonarQube plugin in Jenkins
Installing and configuring Artifactory
Installing Java
Downloading the Artifactory package
Running the Artifactory application
Resetting the default credentials and generating an API key
Creating a repository in Artifactory
Adding Artifactory credentials inside Jenkins
Installing the Artifactory plugin in Jenkins
Configuring the Artifactory Plugin
Summary
Continuous Integration Using Jenkins
Jenkins CI design
Branching strategy
The master branch
The integration branch
The feature branch
The CI pipeline
Toolset for CI
Creating the CI pipeline
Creating a new repository on GitHub
Using the SonarQube scanner for Maven
Writing the Jenkinsfile for CI
Spawning a Docker container – build agent
Downloading the latest source code from VCS
Pipeline code to perform the build and unit test
Pipeline code to perform static code analysis
Pipeline code to perform integration testing
Pipeline code to publish built artifacts to Artifactory
Combined CI pipeline code
Using a Jenkinsfile
Creating a Multibranch Pipeline in Jenkins
Re-registering the Webhooks
Continuous Integration in action
Viewing static code analysis in SonarQube
Accessing SonarQube analysis right from Jenkins
Viewing artifacts in Artifactory
Failing the build when quality gate criteria are not met
Summary
Continuous Delivery Using Jenkins
Jenkins CD design
Branching strategy
The release branch
CD pipeline
Toolset for CD
Creating a Docker image – performance testing
Adding Docker container credentials in Jenkins
Updating the Docker settings inside Jenkins
Creating a performance test using JMeter
Installing Java
Installing Apache JMeter
Starting JMeter
Creating a performance test case
Creating a thread group
Creating a sampler
Adding a listener
The CD pipeline
Writing the Jenkinsfile for CD
Revisiting the pipeline code for CI
Pipeline code to stash the build artifacts
Spawning a Docker container – performance testing
Pipeline code to start Apache Tomcat
Pipeline code to deploy build artifacts
Pipeline code to run performance testing
Pipeline code to promote build artifacts in Artifactory
Combined CD pipeline code
CD in action
Summary
Continuous Deployment Using Jenkins
What is Continuous Deployment?
How Continuous Deployment is different from Continuous Delivery
Who needs Continuous Deployment?
Creating a production server
Installing Vagrant
Installing VirtualBox
Creating a VM using Vagrant
Creating a Vagrantfile
Spawning a VM using Vagrant
Adding production server credentials inside Jenkins
Installing a Jenkins slave on a production server
Creating a Jenkins Continuous Deployment pipeline
A revisit to the pipeline code for CD
Pipeline code for a production Jenkins slave
Pipeline code to download binaries from Artifactory
Combined Continuous Deployment pipeline code
Update the Jenkinsfile
Continuous Delivery in action
Summary
Supporting Tools and Installation Guide
Exposing your localhost server to the internet
Installing Git on Windows/Linux
Installing Git on Windows
Installing Git on Linux
← Prev
Back
Next →
← Prev
Back
Next →