
jenkins
jenkins
Jenkins Continuous Integration
Content
1.879 -> Hello this is Ali's Zaman and welcome to
this presentation on Jenkins Continuous Integration.
6.33 -> I'm going to talk about the
use cases for a development platform
9.55 -> I'm going to talk about the use cases for a development
10.05 -> platform called Jenkins and how it can help programmers create their projects more effectively.
13.62 -> On the agenda for today: we
will discuss the history of Jenkins, what
22.89 -> and where to use continuous integration,
first time set up, building and reporting,
27.599 -> the advantages it provides, and lastly
the mindset for using this platform.
34.7 -> Let's discuss a little bit about Jenkins
and its history.
39.48 -> Jenkins is the world leader in open source automation platforming.
43.2 -> It currently provides support for building automating and deploying any software development project.
46.559 -> Originally Jenkins started in
2004 under the name of the Hudson project.
57.01 -> It was later bought by Oracle
and evidently the name was changed.
57.51 -> Today Jenkins is used to test and build
software projects during the entire
61.109 -> lifecycle of development so that changes
made by developers are easier to verify
65.729 -> for functionality.
73.479 -> Before we dive deeper into what Jenkins offers I think it
73.979 -> is best to understand what continuous
integration is.
79.14 -> Most software developer teams today use a shared repository to upload code and new bug fixes.
84.75 -> These new uploads or revisions to pre-existing code and so they will need to be
88.08 -> verified via automated testing.
92.47 -> This is where continuous integration comes into play.
92.97 -> This is a development practice in which the developers are required to
98.1 -> commit changes to source code in a
shared repository several times a day or
102.479 -> even more frequently.
107.61 -> Every commit made in the repository is then built.
108.11 -> This allows the team to detect problems
earlier in the development lifecycle.
113.28 -> As seen in the image on the bottom of your screen there are five phases.
118.35 -> The version control phase is where the developers code is committed to a version control
122.31 -> system via software called
git.
127.77 -> Next is the build phase.
131.31 -> This is where developers create and build the project code and pass it through to the version control system.
135.95 -> After returning from the VCS version
136.45 -> control system the code gets compiled.
141.43 -> Unit and testing is where the code goes through a variety of tests to verify
functionality.
145.75 -> Developers must put a heavy emphasis on building quality tests to ensure that the code will be
149.53 -> functional upon deployment.
154.37 -> Once the code is passed through the tests its
154.87 -> next moved on to the staging process
where the project gets moved to servers
159.069 -> used for deployment.
163.64 -> Once the staging environment is tested
164.14 -> and the code is deployed it will be
delivered as an end product.
169.03 -> Stages will be repeated depending on failures during a deployment.
176.569 -> As we discussed more about
177.069 -> continuous integration it's easy to see
the benefits of using a deployment
181.09 -> strategy such as this.
186.01 -> Using CI development methodology the code you create will be more resilient,
190.06 -> meet customer needs, and be of a higher quality.
193.489 -> There will be increased transparency and visibility with
193.989 -> development team when creating the CI
pipeline, the development team will be
198.19 -> able to see all the builds as well as
all the test results, and make better
201.91 -> decisions based off previous iterations.
205.94 -> The developers will also have improved
206.44 -> testability and quality because the code
being written will be specifically
210.19 -> designed so that testing is accommodated for.
214.31 -> Meaning that each component that the
214.81 -> customer wants will be easier to test
and the code will be delivered at a
218.799 -> much more defined manner.
225.709 -> So what is Jenkins.
226.209 -> Jenkins is the most utilized
226.709 -> tool for continuous integration today
this open source integration server has
231.34 -> many built-in tools and interfaces to
support a successful development project.
237.06 -> Jenkins is used to build and test your
software projects continuously making it
241.989 -> easier for developers to integrate
changes to the project and make it
245.62 -> easier for users to obtain a fresh build.
250.4 -> It also allows you to continuously
250.9 -> deliver your software by integrating
with a large number of testing and
254.98 -> deployment technologies.
263.15 -> Using Jenkins developers can significantly speed up
263.65 -> the software development phase via
automation.
266.94 -> Jenkins has installable plugins for a
variety of DevOps tools and stages for
272.37 -> projects that would like to integrate
tools that are widely known such as
275.64 -> mavin github gitlab AWS and even more.
281.49 -> All you need to do is install a particular
281.99 -> plugin and have it linked to Jenkins.
285.37 -> Then during your development of software
285.87 -> you can use all tool kits via Jenkins to
deliver a reliable product.
291.36 -> Take a look at the image on your screen where a developer can add on a variety of DevOps
294.93 -> tools and utilize Jenkins to deliver a
solid product.
299.7 -> Each aspect of a development project is covered.
303.67 -> Building version control system, continuous monitoring, continuous testing,
304.17 -> configuration management, and continuous deployment.
308.58 -> All via different plugins that Jenkins can handle.
314.82 -> Some developers might be asking why Jenkins?
319.77 -> Well the main reason is because Jenkins is a free solution.
323.29 -> Developers alternative options do not offer the flexibility that Jenkins offers.
323.79 -> Either with its ease of use or open source installation
328.95 -> and plug-ins for various DevOps software
solutions as we shown it in the previous
332.76 -> slides.
335.86 -> Jenkins provides a powerful all-in-one
336.36 -> solution to developers looking to
increase performance and functionality
339.87 -> of their projects.
345.01 -> Alongside this Jenkins is a highly touted solution that has won
345.51 -> many awards from the development
community such as the following that you
348.33 -> see on the bottom of the screen:
DevOps Dozen 2017 and 2016 award for
355.05 -> best open source project solution, Bossie
awards for best open source application
359.46 -> and development tool and then the Geek Choice Award for best
363.63 -> and most dominant continuous integration server.
370.89 -> There have been recently emerging competitors to Jenkins such as: team city, bamboo, cruise control.
376.95 -> But none have gained the traction that Jenkins has over the continuous integration market.
381.11 -> Jenkins still monopolizes this industry
and will probably continue to do so as
386.43 -> the open source and free installation is
too highly touted for developers.
393.45 -> So who uses Jenkins?
397.24 -> As seen in the image below there are a number of companies
397.74 -> that use jenkins to provide software
needs.
404.399 -> Companies like linkedin Netflix Carfax eBay NASA
410.619 -> and even more all use Jenkins to do automation for
411.119 -> their projects.
417.699 -> So now that we know what Jenkins is and what CI can do for your development team
418.199 -> I believe it's best to understand how to get it setup.
422.449 -> Below are some questions that you should ask yourself as a developer when
427.379 -> deploying Jenkins.
432.179 -> Here are some criteria that will make your life a lot easier:
432.679 -> How Jenkins will connect to a version
control server such as github to
436.739 -> handle commits and store the repository
of new code?
441.219 -> How to handle the builds and tests for functionality?
441.719 -> Will there be automation in place to handle certain tasks via shell scripting?
445.829 -> What kind of testing environment will be used?
450.559 -> And lastly how events will be sent via email?
456.649 -> Once you have set up Jenkins properly
and a project has been created
460.919 -> successfully CI Jenkins full power becomes realized.
465.989 -> Jenkins uses an executor and
this is essentially a basic building
473.639 -> block for allowing you to run code on
the server.
480.089 -> This is where the developers code is run to verify all aspects of your code.
484.649 -> Once you do a commit for your entire build you send it to Jenkins server.
489.449 -> The Jenkins server will test the build, verify functionality on the test builds, and then send
494.189 -> you a report.
499.509 -> There are also options for a build slave - where you can build
500.009 -> multiple concurrent Jenkins servers to
verify functionality across platforms.
506.189 -> For example, let's say your project is to
be deployed on different OS's such as
512.039 -> Windows and Linux.
515.889 -> You'd want to verify the functionality of this build version
516.389 -> on different architectures and using a
master and a slave setup would be ideal in
521.069 -> this scenario.
526.209 -> So now that you have Jenkins setup and have figured out how
526.709 -> to integrate it in your entire software
development lifecycle -
530.129 -> you have a way to handle builds on a
server - you have a master or slave set up.
534.06 -> Now it is time to figure out how you will do reporting.
539.93 -> Jenkins has its own pre-built reporting
features that are a great way of keeping
544.32 -> track of the status of the builds the development team has created so far.
548.66 -> it'll allow for checks of success and
failures of the code and a specific term
553.83 -> called weathering that Jenkins uses.
558.339 -> Weathering is a forecast term Jenkins
558.839 -> uses to show the development team if the
builds are trending towards a successful
562.74 -> deployment or not.
567.88 -> There are also options to expand on these pre-built reporting
568.38 -> tools by installing plugins such as the
ones that you see at the bottom of the screen.
575.94 -> Spotlight, surefire, findbugs, PMD and reportinfo.
584.23 -> Here's a pause and think slide for some questions that I
584.73 -> believe are important to think about in regards to continuous integration and Jenkins
588.48 -> software.
592.33 -> Take a second to look over these questions and answer them in
592.83 -> regards to your own experience.
597.4 -> Understanding these concepts and how
597.9 -> they can be helpful with the work you've
done already may give you a deeper
601.26 -> appreciation to how Jenkins can be a
helpful tool in the future for you.
609.45 -> So to conclude using Jenkins with continuous integration is definitely a mindset.
615.21 -> When creating a development project it is
important to understand the shortcomings
618.66 -> of previous projects and know that
having a system in place such as Jenkins
622.98 -> is there to help you streamline and
automate all the processes.
627.69 -> Jenkins allows for broken code to be fixed immediately during any phase of the
631.05 -> product lifecycle - it automates code
deployment - and it ensures that high
635.25 -> quality tests are being used so that the
end product is resilient.
640.68 -> Using Jenkins for CI is a great way to ensure that the product your development team delivers
644.459 -> is a successful one.
Source: https://www.youtube.com/watch?v=BQNxcsUl5mw