DevOps Foundations for Java with Git, Jenkins, and Maven Training (DVO107)
Course Length: 3 days
Delivery Methods:
Available as private class only
Course Overview
This DevOps Foundations for Java with Git, Jenkins, and Maven training class covers the DevOps principles and tools required for end-to-end implementation of DevOps.
Course Benefits
- Learn what DevOps is.
- Learn version control with Git.
- Build Java projects with Maven.
- Learn continuous integration with Jenkins.
- Integrate Git with Jenkins.
- Implement Continuous Code Quality with SonarQube.
Course Outline
- DevOps Fundamentals
- Why DevOps
- What is DevOps?
- Collaborative, Matrixed and Cross-Functional Teams
- Key Components of Successful DevOps Teams
- DevOps-ification
- DevOps Vocabulary
- DevOps Goals
- Not DevOps - Crush Buzzwords
- Driving Business Outcomes with DevOps
- Technology-Enabled Business
- DevOps Key Enabler for Digital Transformation
- Core Values and Mission
- Core Values - Culture
- Core Values - Automation
- Core Values - Measurement
- Core Values - Sharing
- Communication
- Collaboration
- Value Stream Mapping
- Behavioral Patterns for Success
- DevOps Org Structures
- DevOps Team - Separate
- DevOps Merged Organization
- DevOps Overlapped Organization
- Organizational Structure Leadership
- What Does Continuous Delivery Mean?
- Deployment Pipelines
- Your Organization is Doing CD if Pipelining for CD
- Continuous Integration
- CI Pipeline
- CD & CI Methodologies
- Key Tool Categories for CI/CD
- Summary
- Introduction to Git
- What is Git
- Git's Design Goals
- Git's Design Goals (cont'd)
- Branching and Merging
- Branching and Merging (cont'd)
- Centralized Version Control
- Distributed Version Control
- Git Basics
- Git Basics (Cont'd)
- Git Basics (cont'd)
- Getting Git
- Git on the Server
- Git Repository Managers
- Git on Somebody Else's Server
- Summary
- Basic Git Operations
- Using Git
- Definitions
- Commit
- Commit (continued)
- How to Think About Commits
- Viewing History
- Configuring Git
- Configuration Scope
- User Identification
- GPG Signing
- Gnu Privacy Guard
- GPG Basics
- GPG and Git
- .gitignore
- Other Useful Configurations
- Summary
- Branching, Merging and Remotes
- Branching
- Branches in Git
- Merge
- Fast Forward Merge
- -no-ff
- More Than One Repository
- Working with Remotes
- Fetch and Pull
- Push
- Pull Requests
- Tagging a Commit
- Lightweight Tags
- Annotated Tags
- Sharing Tags
- Checking Out a Tag
- Summary
- Introduction to GitFlow
- What is GitFlow
- Benefits
- How GitFlow works?
- How GitFlow works? (Contd.)
- What is GitFlow? (Contd.)
- How GitFlow works? (Contd.)
- GitFlow Extension
- Initializing GitFlow
- Features
- Release
- Hotfixes
- Summary
- Continuous Code Quality
- Continuous Code Quality
- What is SonarQube
- SonarQube - Benefits
- SonarQube (Multilingual)
- Seven Axes of Quality
- Potential Bugs
- Tests
- Comments and Duplication
- Architecture and Design
- Complexity
- SonarQube Installation
- SonarQube Components
- Code Quality (LOC, Code Smells)
- Code Quality (Project Files)
- Code Quality (Code)
- Summary
- 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
- 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 on an Application Server
- The Jenkins Home Folder
- Installing Jenkins as a Windows Service
- Initial Configuration
- Configuration Wizard
- Configuring Tools
- Configuring Tools - Best Practices
- Logging in Jenkins
- Custom Log Recorders
- Summary
- Job Types in Jenkins
- Introduction
- Different types of Jenkins Items
- Configuring Source Code Management(SCM)
- Working with Subversion
- Working with Git
- Storing Credentials
- Service Accounts
- Build Triggers
- Schedule Build Jobs
- Polling the SCM
- Polling vs Triggers
- 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
- 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 Plugins
- 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
- Role Based Access Control
- Conclusion
- Distributed Builds with Jenkins
- Distributed Builds - Overview
- Distributed Builds – How?
- Agent Machines
- Configure Jenkins Master
- Configure Projects
- Conclusion
- Continuous Delivery and the Jenkins Pipeline
- Continuous Delivery
- DevOps and Continuous Delivery
- Continuous Delivery Challenges
- Continuous Delivery with Jenkins
- The Pipeline Plugin
- Defining a Pipeline
- A Pipeline Example
- Parallel Execution
- Creating a Pipeline
- Invoking the Pipeline
- Interacting with the Pipeline
- Pipeline vs Traditional Jobs
- Conclusion
- 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
Class Materials
Each student will receive a comprehensive set of materials, including course notes and all the class examples.
Class Prerequisites
Experience in the following would be useful for this DevOps class:
- Some knowledge of Java is beneficial.
Live Private Class
- Private Class for your Team
- Live training
- Online or On-location
- Customizable
- Expert Instructors