Course duration
- 3 days
Course Benefits
- Download and install Maven
- Build a project
- Work with Maven's directory structure, plugins, repositories, and more
- Understand the Project Object Model (POM)
- Build a complete web application using Maven
- Build and activate profiles
- Use Maven from Eclipse via the m2eclipse plugin
- Install and configure Jenkins in a servlet container
- Create Jenkins builds
- Configure and use Apache Ant and Apache Maven with Jenkins
- Use Jenkins to generate Java coding standards reports, code coverage reports, and change notices
- Use Jenkins to automatically deploy software into a testing environment.
- Configure Maven and Jenkins to deploy the generated artifacts to Artifactory
Course Outline
- Introduction to Continuous Integration, Continuous Depoloyment and Jenkins-CI
- Agile Development
- Agile Development (cont'd)
- What is Continuous Integration
- What is Continuous Integration (cont'd)
- What is Continous Integration (cont'd)
- Typical Setup for Continuous Integration
- Continuous Deployment
- Continuous Deployment (cont'd)
- DevOps and Continuous Deployment
- Continuous Deployment Challenges
- Jenkins Continuous Integration
- Jenkins Features
- Running Jenkins
- Summary
- Introduction to Apache Maven
- Build Tools for Java
- Build Tools for Java (cont'd)
- History of Build Tools
- Traditional Scripting
- 'make'
- Problems with Make
- Manual Build with JavaC
- ANT
- Pros and Cons of Ant
- Apache Maven
- Goals of Maven
- What is Apache Maven?
- What is Apache Maven (cont'd)
- Why Use Apache Maven?
- The Maven EcoSystem
- Consistent Easy-to-Understand Project Layout
- Convention Over Configuration
- Maven is Different
- Maven Projects have a Standardized Build
- Effect of Convention Over Configuration
- Importance of Plugins
- A Key Point on Maven!
- Summary – Key Features of Maven
- Installing and Running Apache Maven
- Downloading Maven
- Installing Maven
- Run From Command Line
- Running Inside an IDE
- Settings.xml
- Local Repository
- Summary
- 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
- Summary
- 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
- Storing Credentials (cont'd)
- Build Triggers
- Schedule Build Jobs
- Polling the SCM
- Maven Build Steps
- Summary
- Getting Started With Maven
- Terminology and Basic Concepts
- Artifacts
- Lifecycle
- Default Lifecycle
- Plugins
- Running Maven - the Story So Far
- Running Maven from an IDE
- Common Goals
- pom.xml
- Example
- Example (cont'd)
- Artifact Coordinates
- Standard Layout for Sources
- Summary
- A Web Application in Maven
- A More Complex Project
- Putting it Together With Maven
- Packaging the Target Artifact
- The Source Tree
- Dependencies
- Transitive Dependencies
- Dependency Scope
- Working With Servers
- Declaring and Configuring Plugins
- Running the Plugin
- Binding a Plugin Goal to the Lifecycle
- Archetypes
- Summary
- Commonly Used Plugins
- Maven Plugins
- Declaring and Configuring Plugins
- Running the Plugin
- Binding a Plugin Goal to the Lifecycle
- Maven Surefire Test Plugin
- Failsafe Plugin
- Site Plugin
- JavaDoc Plugin
- PMD Plugin
- Code Coverage – Cobertura
- Summary
- Multi-Module Builds
- Introduction
- The Reactor
- Reactor Sorting
- Multi-Module Build by Example
- Summary
- POM Projects
- Project Object Model (POM)
- The overall POM structure
- Storing POM
- Summary
- Writing Plugins (Maven)
- What is Maven Plugin
- Example of Using a Plugin
- Create a Custom Plugin
- Create a Custom Plugin (cont.)
- Plugin Management
- Summary
- Creating Archetypes
- Introduction to Maven Archetypes
- Introduction to Maven Archetypes (cont.)
- Using Interactive Mode to generate Goal
- Common Maven Archetypes
- Summary
- Repository Management
- Maven's Approach to Artifacts
- Publishing Artifacts
- Summary of Maven's Artifact Handling
- Repository
- Repository Manager
- Proxy Remote Repositories
- Types of Artifacts
- Release Artifacts
- Snapshot Artifacts
- Reasons to Use a Repository Manager
- Repository Coordinates
- Addressing Resources in a Repository
- Summary
- Release Management
- What is release Management?
- Release Management with Nexus
- Release Management with Maven
- Summary
- Jenkins Plugin
- Introduction
- Jenkins Plugins - SCM
- Jenkins Plugins – Build and Test
- Jenkins Plugins – Analyzers
- Jenkins for Teams
- Installing Jenkins Plugins
- Summary
- 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
- Conclusion
- Distributed Builds with Jenkins
- Distributed Builds - Overview
- Distributed Builds – How?
- Slave Machines
- Configure Jenkins Master
- Configure Projects
- Conclusion
- Continuous Deployment and the Jenkins Pipeline
- Continuous Deployment
- Continuous Deployment (cont'd)
- DevOps and Continuous Deployment
- Continuous Deployment Challenges
- Continuous Deployment 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
- Conclusion
- Best Practices for Jenkins
- Best Practices - Secure Jenkins
- Best Practices - Backups
- Best Practices - Reproducible Builds
- Best Practices - Testing and Reports
- Best Practices - Large Systems
- Best Practices - Distributed Jenkins
- Best Practices - Summary
Class Materials
Each student will receive a comprehensive set of materials, including course notes and all the class examples.
Experience in the following is required for this Jenkins class:
- Familiarity with Java development practices.
Instructor-led courses are offered via a live Web connection, at client sites throughout Europe, and at our Geneva Training Center.