Jenkins Primer
Published by Pearson
Learn Continuous Integration/Development
Working as a software developer is a great job, especially when you are part of a team where different individuals are responsible for developing certain aspects of a software solution. In modern software development, any Agile team should use continuous integration (CI), continuous delivery/deployment (CD) systems as they help enforce the ideals of Agile development. CI is a practice in software development where software developers regularly incorporate their work into the project's Integration branch and create a build.
When using software sharing platforms such as Github or BitBucket, code incorporation, or integration, is the act of submitting your work (i.e. modified code) to the common work area (the potential software product being developed). Technically, this is performed by merging your private work (i.e. your branch) with the common work area (Integration branch). The process of continuously deploying production-ready features to the end user (or into the production environment) is known as continuous deployment (CD).
This training course is a hands-on introduction to Jenkins, a continuous build tool that enables teams to focus on their work by automating the build, artifact management, and deployment processes. This course will involve several real world use cases where Jenkins fits perfectly. This involves Java, Python and Dot Net development as well as using Jenkins with Docker.
What you’ll learn and how you can apply it
- Develop understanding of what continuous integration is, why it is important and how to use it to enhance software development
- Learn the many benefits of using continuous integration and continuous build systems
- Learn what Jenkins is, why it is powerful and what makes it the choice of many large companies and agencies such as Linkedin, NASA and Netflix
- Become familiar with installing and setting up Jenkins on different operating systems
- Learn how to manage Jenkins, add users, install plugins and so on
- Learn how to work with Jenkins for Java-based applications
- Learn how to work with Jenkins for Python-based applications
- Learn how to work with Jenkins and Docker
- Learn how to configure Jenkins and prepare it for production environment
- Become familiar with several tips and tricks that will save you a great deal of time and effort
This live event is for you because...
- You are familiar with software development and want to develop your skills with regards to working as part of a team
- You would like to learn how to correctly install and configure Jenkins (including running Jenkins off a docker container)
- You would like to learn Jenkins the right way from the ground up by learning the basics and developing gradually
- You would like to learn how to use Jenkins for Java-based applications and generate test reports
- You would like to learn how to use Jenkins for Python-based applications and generate test reports
- You would like to configure Jenkins so it can send you, or anyone else, notifications via email
- You would like to schedule events within Jenkins so it runs whatever you want it to run according to the time/date you set
- You would like to configure Jenkins so it runs a shell script automatically for you
- You would like to use triggers within Jenkins so it runs whatever you want it to run when you commit something to github (using web-hooks)
- You would like to use Jenkins to automatically create a Docker image for you and push it to Docker Hub so the rest of the world (i.e. your clients) can find and use it
Prerequisites
- Familiarity with Python and machine learning. Students should be relatively comfortable with Python coding practices and how ML algorithms work.
- Familiarity with basic machine learning in Python
Course Set-up
- Any operating system is fine
- Speedy internet connection
- Java 1.8 or later
- Download the Jenkins installer according to your operating system from: https://jenkins.io/download/ (it will be a .zip file, when you unzip it there will be a file called jenkins.war--that is the file we need for the course)
- Course file: https://docs.google.com/document/d/1j-9cujM5hIEhtYI8YrbGa6BeO9nyNcD-K8pJEvJ9bBg/edit
Recommended Preparation
- Video: Introduction to Docker and Containers: https://www.oreilly.com/live-training/courses/introduction-to-docker-and-containers/0636920407188/
- Book: Continuous Delivery in Java: https://www.oreilly.com/library/view/continuous-delivery-in/9781491986011/
- Book: Test-Driven Development with Python, 2nd Edition: https://www.oreilly.com/library/view/test-driven-development-with/9781491958698/
Recommended Follow-up
- Video: Jenkins for DevOps: https://www.oreilly.com/library/view/introduction-to-jenkins/9780136584148/
Schedule
The time frames are only estimates and may vary according to how the class is progressing.
Day 1
Part 1: Introduction and Jenkins Installation and Configuration (50 minutes)
- Introduction and overview of Jenkins
- Why use Jenkins?
- Installing Jenkins on different operating systems
- A quick overview of how to run Jenkins behind a reverse proxy
- Configure Jenkins for Building + Testing + Deployment
- How to install Jenkins plugins
- Downloading common tools for Jenkins
- Setting environment variables
- Create your first Jenkins Job
Q&A (5 minutes)
Break (5 minutes)
Part 2: Jenkins for Java-based Applications (50 minutes)
- Building a Java project (with Maven) from command line
- An overview of Freestyle Projects in Jenkins 2.0
- Creating and working with Freestyle Projects in Jenkins 2.0
- Building and Testing a Java+Maven Project as a Jenkins Freestyle Project
- An overview of Pipeline Projects in Jenkins 2.0
- Building and Testing a Java+Maven Project as a Jenkins Pipeline Project
- A quick overview of Cucumber reporting
- Creating a Freestyle and Pipeline project for building, testing and reporting using cucumber reports
- Working with stage view in Jenkins 2.0 (for pipeline project)
Q&A (5 minutes)
Break (5 minutes)
Part 3: Jenkins for Dot Net Applications and Configuring (40 minutes)
- Freestyle project for Dot Nen application using Jenkins 2.0 (Part A)
- Freestyle project for Dot Net application using Jenkins 2.0 (Part B)
- Running NUnit Selenium Test with Freestyle project using Jenkins 2.0
- Working with Pipeline project for .Net application
Q&A (10 minutes)
Break (10 minutes)
Day 2
Part 1: Advanced configuration for Jenkins (50 minutes)
- Configuring email using Docker container for Jenkins 2.0 (part 1)
- Configuring email using Docker container for Jenkins 2.0 (part 2)
- Configuring Jenkins to send email via GMail
- Configuring Build Agents for Jenkins 2.0
Q&A (5 minutes)
Break (5 minutes)
Part 2: Jenkins and Python-based Applications (50 minutes)
- Testing a Python project (with Unit test) from command line
- Testing a Python project (with Unit test) as a Jenkins Freestyle Project
- Testing a Python project (with Unit test) as a Jenkins Pipeline Project
- Interacting with Jenkins using Python (via its API)
Q&A (5 minutes)
Break (5 minutes)
Part 3: Some Advanced Jenkins Topics (45 minutes)
- Working with the Blue Ocean plugin for Jenkins
- Working with build triggers
- Working with Github Webhooks to trigger builds
- Full project: Configuring Jenkins to build/upload Docker images to Docker Hub
Q&A (10 minutes)
Course wrap up
Your Instructor
Noureddin Sadawi
Dr. Noureddin Sadawi is a consultant in machine/deep learning and data science. He has several years’ experience in various areas involving data manipulation and analysis. He received his PhD from the University of Birmingham, United Kingdom. He is the winner of two international scientific software development contests - at TREC2011 and CLEF2012.
Noureddin is an avid scientific software researcher and developer with a passion for learning and teaching new technologies. He is an experienced scientific software developer and data analyst; over the last few years he has been using Python as his preferred programming language. Also, he has been involved in several projects spanning a variety of fields such as bioinformatics, textual/image/video data analysis, drug discovery, omics data analysis and computer network security. He has taught at multiple universities in the UK and has worked as a software engineer in different roles. He is the founder of SoftLight LTD (https://www.softlight.tech/), a London-based company that specialises in data science and machine/deep learning. Recently, he has joined the University of Oxford as a part-time lecturer.