title
Jenkins Tutorial – How to Deploy a Test Server with Docker + Linux (Full Course)
description
Learn about Jenkins by building a CI/CD pipeline for a web application. Jenkins is an open source automation server which makes it easier to build, test, and deploy software. In this course, you will learn how to build a full dev-ops pipeline using Jenkins, Linode Servers, and other tools.
🔗 Course Readme: https://github.com/gwenf/jenkins-fcc-readme
🔗 Sign up for Linode with a $100 credit: https://www.linode.com/students
✏️ Gwendolyn Faraday developed this course. Check out her channel: https://www.youtube.com/c/FaradayAcademy
🏗 Linode provided a grant that made this course possible.
⭐️ Contents ⭐️
⌨️ (00:00:00) Video Intro
⌨️ (00:01:33) Course Overview
⌨️ (00:02:36) What is Jenkins?
⌨️ (00:08:47) Terms & Definitions
⌨️ (00:11:58) Project Architecture
⌨️ (00:13:28) Linode Intro
⌨️ (00:20:18) Setting Up Jenkins
⌨️ (00:24:11) Tour of Jenkins Interface
⌨️ (00:30:33) Installing Plugins
⌨️ (00:33:39) Blue Ocean
⌨️ (00:34:55) Creating a Pipeline
⌨️ (00:42:37) Installing Git
⌨️ (00:45:15) Jenkinsfile
⌨️ (00:46:27) Updating a Pipeline
⌨️ (00:52:05) Jenkins with nom
⌨️ (00:56:36) Docker & Dockerhub
⌨️ (01:02:14) Closing Remarks
🎉 Thanks to our Champion and Sponsor supporters:
👾 Raymond Odero
👾 Agustín Kussrow
👾 aldo ferretti
👾 Otis Morgan
👾 DeezMaster
--
Learn to code for free and get a developer job: https://www.freecodecamp.org
Read hundreds of articles on programming: https://freecodecamp.org/news
detail
{'title': 'Jenkins Tutorial – How to Deploy a Test Server with Docker + Linux (Full Course)', 'heatmap': [{'end': 3782.511, 'start': 3751.386, 'weight': 1}], 'summary': 'This jenkins tutorial course covers jenkins for devops pipelines, ci-cd, continuous integration and delivery with jenkins and docker on linode, setting up jenkins and linodes, management and updates, github access token and jenkins pipeline setup, git installation and jenkins pipeline, and jenkins and docker deployment, emphasizing key features, drawbacks, and practical application examples.', 'chapters': [{'end': 326.466, 'segs': [{'end': 129.494, 'src': 'embed', 'start': 80.077, 'weight': 0, 'content': [{'end': 87.904, 'text': "Jenkins is a flexible tool that can be used to create custom DevOps pipelines, and that's what you're going to learn about in this course.", 'start': 80.077, 'duration': 7.827}, {'end': 93.122, 'text': 'So at the end, consider leaving a comment with something you learned in this course.', 'start': 88.86, 'duration': 4.262}, {'end': 95.063, 'text': 'Hi, everyone.', 'start': 94.383, 'duration': 0.68}, {'end': 96.204, 'text': 'My name is Gwen.', 'start': 95.403, 'duration': 0.801}, {'end': 103.147, 'text': "And in this course on Free Code Camp, I'm going to be building a full DevOps pipeline,", 'start': 96.684, 'duration': 6.463}, {'end': 110.871, 'text': 'using tools like Jenkins Linode servers for hosting our application as well as our Jenkins server.', 'start': 103.147, 'duration': 7.724}, {'end': 117.812, 'text': "We'll be using GitHub as our code repository, Docker and Docker Hub, and some related tools.", 'start': 111.471, 'duration': 6.341}, {'end': 127.574, 'text': 'Now to follow along with this tutorial, you can see the app that I will be using for deployments on my Faraday Academy GitHub organization.', 'start': 118.112, 'duration': 9.462}, {'end': 129.494, 'text': "It's called the Curriculum app.", 'start': 127.694, 'duration': 1.8}], 'summary': 'Learn to build a devops pipeline using jenkins, github, docker, and linode servers in this free code camp course.', 'duration': 49.417, 'max_score': 80.077, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA80077.jpg'}, {'end': 326.466, 'src': 'embed', 'start': 300.333, 'weight': 2, 'content': [{'end': 306.096, 'text': 'Many of them say that it improves their software delivery cycles by making them faster and more performant.', 'start': 300.333, 'duration': 5.763}, {'end': 317.721, 'text': 'What are some of the benefits of using Jenkins versus other alternatives? There are plenty of new tools in the CI CD pipeline space.', 'start': 307.376, 'duration': 10.345}, {'end': 321.263, 'text': 'You could choose Travis CI or Circle CI.', 'start': 318.702, 'duration': 2.561}, {'end': 322.824, 'text': "There's also GitHub Actions.", 'start': 321.323, 'duration': 1.501}, {'end': 326.466, 'text': "There's GitLab CI and many more.", 'start': 323.464, 'duration': 3.002}], 'summary': 'Using jenkins can improve software delivery cycles, offering speed and performance benefits over alternatives like travis ci, circle ci, github actions, and gitlab ci.', 'duration': 26.133, 'max_score': 300.333, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA300333.jpg'}], 'start': 0.069, 'title': 'Jenkins for devops pipelines', 'summary': 'Introduces jenkins, an open-source automation server with features like continuous integration and deployment pipelines, emphasizing its 20-year history and benefits in improving software delivery cycles for companies of all sizes.', 'chapters': [{'end': 79.256, 'start': 0.069, 'title': 'Jenkins for devops pipeline', 'summary': 'Introduces jenkins, an open-source automation server for building, testing, and deploying software, and discusses the importance of devops pipelines in automating software development processes, with a focus on improving efficiency and reliability.', 'duration': 79.187, 'highlights': ['Jenkins is an open-source automation server that facilitates building, testing, and deploying software, offering ease and efficiency in the software development process. Jenkins simplifies the software development process by providing automation for building, testing, and deploying software.', 'The course focuses on building a full DevOps pipeline using Jenkins, Linode servers, and other tools, with Gwynne Faraday as the instructor. The course emphasizes building a complete DevOps pipeline using Jenkins, Linode servers, and other tools, with Gwynne Faraday as the instructor.', 'DevOps pipelines automate the build, test, and deploy phases of the software development lifecycle, aiming to enhance the continuous delivery of software applications. DevOps pipelines automate the build, test, and deploy phases, striving for continuous delivery of software applications.', 'Jenkins helps developers automate their software development process, enhancing productivity and facilitating the acquisition of fresh builds for software projects. Jenkins aids developers in automating software development, boosting productivity, and streamlining access to fresh software builds.', 'DevOps pipelines aim to improve the efficiency and effectiveness of the software development process by automating tedious and manual tasks, ultimately speeding up development and ensuring reliability. DevOps pipelines strive to enhance software development efficiency by automating manual tasks, resulting in accelerated development and improved reliability.']}, {'end': 326.466, 'start': 80.077, 'title': 'Jenkins for devops pipelines', 'summary': 'Introduces jenkins, a 20-year-old open-source automation server commonly used in software development, with features like continuous integration, deployment pipelines, plugin architecture, and its benefits in improving software delivery cycles for companies of all sizes.', 'duration': 246.389, 'highlights': ['Jenkins is a 20-year-old open-source automation server commonly used in software development, offering features like continuous integration, deployment pipelines, plugin architecture, and a large community. Jenkins, which started in 2004, is an open-source automation server commonly used in software development, known for its continuous integration, deployment pipelines, plugin architecture, and large community support.', 'Jenkins can improve software delivery cycles, making them faster and more performant for companies of all sizes. Companies using Jenkins report improved software delivery cycles, making them faster and more performant, regardless of their size.', 'Jenkins allows automation for events in the code repository, including building code, running scripts, testing, and deploying apps based on test results. Jenkins allows automation for events in the code repository, including building code, running scripts, testing, and deploying apps based on the test results, providing logs for every step throughout the Jenkins pipeline.']}], 'duration': 326.397, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA69.jpg', 'highlights': ['Jenkins is an open-source automation server that facilitates building, testing, and deploying software, offering ease and efficiency in the software development process.', 'Jenkins helps developers automate their software development process, enhancing productivity and facilitating the acquisition of fresh builds for software projects.', 'DevOps pipelines automate the build, test, and deploy phases of the software development lifecycle, aiming to enhance the continuous delivery of software applications.', 'Jenkins allows automation for events in the code repository, including building code, running scripts, testing, and deploying apps based on test results.', 'Jenkins is a 20-year-old open-source automation server commonly used in software development, offering features like continuous integration, deployment pipelines, plugin architecture, and a large community.']}, {'end': 563.26, 'segs': [{'end': 361.131, 'src': 'embed', 'start': 327.876, 'weight': 1, 'content': [{'end': 333.077, 'text': 'Some of the differences are that Jenkins is open source, many of the other options are not.', 'start': 327.876, 'duration': 5.201}, {'end': 341.799, 'text': 'A big one is that you can self-host without paying for an enterprise plan and you have total control over configuration.', 'start': 333.897, 'duration': 7.902}, {'end': 352.041, 'text': "One thing that might be helpful if you're considering Jenkins as an option and comparing it to other alternatives is their Jenkins YouTube channel.", 'start': 342.839, 'duration': 9.202}, {'end': 361.131, 'text': 'They have a lot of information about Jenkins and they also have this playlist of real users of Jenkins,', 'start': 353.081, 'duration': 8.05}], 'summary': 'Jenkins is open source, allows self-hosting without paying, and offers a youtube channel with real user testimonials.', 'duration': 33.255, 'max_score': 327.876, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA327876.jpg'}, {'end': 510.342, 'src': 'embed', 'start': 484.24, 'weight': 0, 'content': [{'end': 492.97, 'text': 'Unless you are using a third-party solution to manage your Jenkins server, you will be the one installing Jenkins, keeping it up to date,', 'start': 484.24, 'duration': 8.73}, {'end': 502.156, 'text': 'managing the controller and agents and all the different aspects of the Jenkins pipeline, and also ensuring security,', 'start': 493.57, 'duration': 8.586}, {'end': 510.342, 'text': 'which can be tricky sometimes using a tool like Jenkins, where you need to install so many different plugins to use it.', 'start': 502.156, 'duration': 8.186}], 'summary': 'Installing, managing, and securing jenkins can be complex without third-party solutions.', 'duration': 26.102, 'max_score': 484.24, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA484240.jpg'}], 'start': 327.876, 'title': 'Jenkins for ci-cd', 'summary': 'Discusses the benefits of using jenkins for ci-cd, such as being open source, having a wide range of plugins, and a dedicated youtube channel, while also highlighting potential drawbacks like reliance on community-supported plugins and outdated user interface. it also introduces jenkins, highlighting its community support, self-hosting nature, and the importance of up-to-date documentation, and discusses the practice of continuous integration as defined by atlassian.', 'chapters': [{'end': 431.982, 'start': 327.876, 'title': 'Jenkins: pros, cons, and comparisons', 'summary': 'Discusses the benefits of using jenkins, such as being open source, having a wide range of plugins, and a dedicated youtube channel, while also highlighting potential drawbacks like reliance on community-supported plugins and outdated user interface.', 'duration': 104.106, 'highlights': ['Jenkins is open source, allowing self-hosting without paying for an enterprise plan and providing total configuration control.', 'Jenkins YouTube channel offers a playlist of real users and companies discussing why they chose Jenkins and its benefits.', 'Jenkins has hundreds of plugins covering various use cases, with the option to create custom plugins, but reliance on community-supported plugins may lead to outdated or poorly documented ones.', 'There can be confusing overlap between plugins since anyone can create their own Jenkins plugin.', 'A common drawback of Jenkins is its outdated UI, which can be improved with a newer interface available as a plugin.']}, {'end': 563.26, 'start': 431.982, 'title': 'Exploring jenkins for ci-cd', 'summary': 'Introduces jenkins, highlighting its community support, self-hosting nature, and the importance of up-to-date documentation. it also discusses the practice of continuous integration as defined by atlassian.', 'duration': 131.278, 'highlights': ['Jenkins is community supported, and its documentation or answers may be out of date due to its long existence.', 'Jenkins is completely self-hosted and maintained, requiring users to handle installation, updates, security, and plugin management.', 'Continuous integration is defined as the practice of automating the integration of coding changes from multiple contributors into a single software project.']}], 'duration': 235.384, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA327876.jpg', 'highlights': ['Jenkins is open source, allowing self-hosting without paying for an enterprise plan and providing total configuration control.', 'Jenkins YouTube channel offers a playlist of real users and companies discussing why they chose Jenkins and its benefits.', 'Jenkins has hundreds of plugins covering various use cases, with the option to create custom plugins, but reliance on community-supported plugins may lead to outdated or poorly documented ones.', 'Continuous integration is defined as the practice of automating the integration of coding changes from multiple contributors into a single software project.', 'Jenkins is completely self-hosted and maintained, requiring users to handle installation, updates, security, and plugin management.']}, {'end': 951.905, 'segs': [{'end': 591.783, 'src': 'embed', 'start': 564.241, 'weight': 3, 'content': [{'end': 572.743, 'text': 'Developers can frequently merge code changes into a central repository where it builds and then the tests run.', 'start': 564.241, 'duration': 8.502}, {'end': 578.524, 'text': 'Continuous integration is a precursor for continuous delivery.', 'start': 574.103, 'duration': 4.421}, {'end': 587.806, 'text': 'Continuous delivery is responsible for packaging the app and getting it ready to deploy using automated build tools.', 'start': 579.484, 'duration': 8.322}, {'end': 591.783, 'text': 'This whole process is known as a pipeline.', 'start': 589.161, 'duration': 2.622}], 'summary': 'Developers merge code changes into a central repository for continuous integration, a precursor for continuous delivery, responsible for packaging the app and deploying using automated build tools, known as a pipeline.', 'duration': 27.542, 'max_score': 564.241, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA564241.jpg'}, {'end': 697.675, 'src': 'embed', 'start': 664.366, 'weight': 0, 'content': [{'end': 676.771, 'text': "The Jenkins controller is responsible for configuration key management plugins and it's a centralized hub to manage all of the agents connecting to it.", 'start': 664.366, 'duration': 12.405}, {'end': 683.528, 'text': 'Agents are usually containerized environments that will run your pipeline steps.', 'start': 678.266, 'duration': 5.262}, {'end': 690.972, 'text': 'These steps are also called a job, which means some work that needs to be done.', 'start': 684.589, 'duration': 6.383}, {'end': 697.675, 'text': 'The Jenkins controller is responsible for assigning it to an agent,', 'start': 691.492, 'duration': 6.183}], 'summary': 'Jenkins controller manages agents and assigns jobs to them.', 'duration': 33.309, 'max_score': 664.366, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA664366.jpg'}, {'end': 765.767, 'src': 'embed', 'start': 734.977, 'weight': 1, 'content': [{'end': 743.882, 'text': 'This is a full stack JavaScript application used for the demo, and code is committed directly to a mono repo in GitHub.', 'start': 734.977, 'duration': 8.905}, {'end': 751.083, 'text': 'On the other side, we have a Linode account and two servers running in Linode.', 'start': 745.202, 'duration': 5.881}, {'end': 754.204, 'text': 'These are called Linodes in that interface.', 'start': 751.384, 'duration': 2.82}, {'end': 765.767, 'text': 'One of them is running Jenkins, also known as the Jenkins controller, and the other server is using Docker to run our application.', 'start': 755.124, 'duration': 10.643}], 'summary': 'Javascript application deployed to 2 linode servers with jenkins and docker.', 'duration': 30.79, 'max_score': 734.977, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA734977.jpg'}, {'end': 930.017, 'src': 'embed', 'start': 904.588, 'weight': 4, 'content': [{'end': 910.192, 'text': "The first server that I am going to create is one that's already set up with Jenkins.", 'start': 904.588, 'duration': 5.604}, {'end': 919.578, 'text': 'If you were installing Jenkins yourself, you would have a couple options to install directly or use their official Docker container.', 'start': 911.433, 'duration': 8.145}, {'end': 925.722, 'text': "The Linode marketplace option here just installs it directly on the server that we're going to spin up.", 'start': 920.619, 'duration': 5.103}, {'end': 930.017, 'text': "I'm going to scroll down to more options.", 'start': 926.653, 'duration': 3.364}], 'summary': 'Creating a jenkins server using linode marketplace option.', 'duration': 25.429, 'max_score': 904.588, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA904588.jpg'}], 'start': 564.241, 'title': 'Continuous integration and delivery with jenkins and docker on linode', 'summary': 'Covers the concept of a pipeline for automating building, testing, and deployment processes using a main jenkins controller and containerized agents. it also explains setting up jenkins and docker on linode, including utilizing a linode account with $50 credit for the first 60 days and the linode marketplace for one-click installs.', 'chapters': [{'end': 734.037, 'start': 564.241, 'title': 'Understanding continuous integration and delivery', 'summary': 'Explains the concept of a pipeline, which automates the building, testing, and deployment processes, utilizing a main jenkins controller and containerized agents, enabling developers to ensure the readiness of applications for production.', 'duration': 169.796, 'highlights': ['Continuous integration and delivery are facilitated through a pipeline, automating the building, testing, and deployment processes. The pipeline automates the building, testing, and deploying applications automatically, serving as a well-defined set of steps that take developers through continuous integration and continuous delivery processes.', "Jenkins controller manages configuration, key management plugins, and acts as a centralized hub to handle all connecting agents. The Jenkins controller is responsible for configuration key management plugins and it's a centralized hub to manage all of the agents connecting to it.", 'Agents, or containerized environments, execute pipeline steps and can be set to run continuously or spin up for each job. Agents are containerized environments that will run your pipeline steps, and can be set to run continuously or spin up for each job that you want to run.']}, {'end': 951.905, 'start': 734.977, 'title': 'Setting up jenkins and docker on linode', 'summary': 'Discusses setting up jenkins and docker on linode, using a linode account with $50 credit for the first 60 days, spinning up servers, and utilizing the linode marketplace for one-click installs.', 'duration': 216.928, 'highlights': ['When signing up for a Linode account for the first time, a $50 credit is provided for the first 60 days. New users of Linode receive a $50 credit for the first 60 days, providing ample resources to follow along with the tutorial.', 'The chapter discusses the process of spinning up servers and utilizing the Linode marketplace for one-click installs. The tutorial covers the process of spinning up servers and leveraging the Linode marketplace for one-click installs of various applications.', 'Setting up Jenkins and Docker on Linode is explained, with a specific focus on using the Linode marketplace for Jenkins installation. The tutorial provides insights into setting up Jenkins and Docker on Linode, particularly emphasizing the use of the Linode marketplace for Jenkins installation.']}], 'duration': 387.664, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA564241.jpg', 'highlights': ['Continuous integration and delivery are facilitated through a pipeline, automating the building, testing, and deployment processes.', 'Jenkins controller manages configuration, key management plugins, and acts as a centralized hub to handle all connecting agents.', 'Agents, or containerized environments, execute pipeline steps and can be set to run continuously or spin up for each job.', 'When signing up for a Linode account for the first time, a $50 credit is provided for the first 60 days.', 'The chapter discusses the process of spinning up servers and utilizing the Linode marketplace for one-click installs.', 'Setting up Jenkins and Docker on Linode is explained, with a specific focus on using the Linode marketplace for Jenkins installation.']}, {'end': 1250.334, 'segs': [{'end': 1019.001, 'src': 'embed', 'start': 981.308, 'weight': 0, 'content': [{'end': 991.634, 'text': "I'm just going to use the cheapest one, the Nano 1GB, which, if you look at the Jenkins documentation, is more than enough to run Jenkins.", 'start': 981.308, 'duration': 10.326}, {'end': 999.068, 'text': "So I'm going to choose this, scroll down, This is the name.", 'start': 992.895, 'duration': 6.173}, {'end': 1004.495, 'text': 'This Linode label is the name that you saw in that first table view.', 'start': 999.088, 'duration': 5.407}, {'end': 1013.266, 'text': "So I'm going to give it the name PreCodeCampJenkins.", 'start': 1005.656, 'duration': 7.61}, {'end': 1019.001, 'text': 'You can optionally add tags here about the type of servers,', 'start': 1014.795, 'duration': 4.206}], 'summary': 'Using the nano 1gb to run jenkins, naming it precodecampjenkins.', 'duration': 37.693, 'max_score': 981.308, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA981308.jpg'}], 'start': 951.905, 'title': 'Setting up jenkins and linodes', 'summary': 'Covers setting up a jenkins server on debian 10, selecting server configuration, and generating a root password for ssh access, using a 10-character password. it also describes setting up two linodes, the first with ssh key and the second with a password, provisioning and running jenkins on the servers.', 'chapters': [{'end': 1076.687, 'start': 951.905, 'title': 'Setting up jenkins server on debian 10', 'summary': 'Covers setting up a jenkins server on debian 10, selecting server configuration, and generating a root password for ssh access, using a 10-character password.', 'duration': 124.782, 'highlights': ['The chapter covers setting up a Jenkins server on Debian 10, selecting server configuration, and generating a root password for SSH access, using a 10-character password.', 'The tutorial uses the cheapest server option, the Nano 1GB, which is stated to be more than enough to run Jenkins.', 'The tutorial selects the region closest to the user in New Jersey, USA, for server deployment.']}, {'end': 1250.334, 'start': 1076.687, 'title': 'Setting up two linodes with passwords', 'summary': 'Describes setting up two linodes, the first with ssh key and the second with a password, provisioning and running jenkins on the servers.', 'duration': 173.647, 'highlights': ["The user sets up the first Linode with a password, named 'free code camp jenkins', and the second Linode with Docker already installed and set up.", "The user selects the latest Debian 11 region for the second Linode and names it 'free code camp application', generating and adding a password.", 'The user checks the running instance of Jenkins at the IP address of the first Linode, accessing it at port 8080 and entering a password for the first-time login.']}], 'duration': 298.429, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA951905.jpg', 'highlights': ['The tutorial uses the cheapest server option, the Nano 1GB, which is stated to be more than enough to run Jenkins.', "The user selects the latest Debian 11 region for the second Linode and names it 'free code camp application', generating and adding a password.", "The user sets up the first Linode with a password, named 'free code camp jenkins', and the second Linode with Docker already installed and set up.", 'The tutorial selects the region closest to the user in New Jersey, USA, for server deployment.', 'The chapter covers setting up a Jenkins server on Debian 10, selecting server configuration, and generating a root password for SSH access, using a 10-character password.', 'The user checks the running instance of Jenkins at the IP address of the first Linode, accessing it at port 8080 and entering a password for the first-time login.']}, {'end': 1562.996, 'segs': [{'end': 1398.677, 'src': 'embed', 'start': 1349.627, 'weight': 0, 'content': [{'end': 1353.93, 'text': 'And these suggested plugins just give you a good base to start with.', 'start': 1349.627, 'duration': 4.303}, {'end': 1355.591, 'text': "So I'm going to click on that.", 'start': 1354.65, 'duration': 0.941}, {'end': 1359.313, 'text': "It's installing.", 'start': 1358.453, 'duration': 0.86}, {'end': 1363.636, 'text': 'This takes a few minutes.', 'start': 1362.435, 'duration': 1.201}, {'end': 1367.238, 'text': 'Now I can create the first admin user.', 'start': 1365.036, 'duration': 2.202}, {'end': 1372.801, 'text': "I'm going to call this Jenkins FCC.", 'start': 1367.258, 'duration': 5.543}, {'end': 1375.202, 'text': 'And now I need a password.', 'start': 1374.042, 'duration': 1.16}, {'end': 1377.684, 'text': "I'll go ahead and generate this password.", 'start': 1376.043, 'duration': 1.641}, {'end': 1381.426, 'text': 'Just a short, simple password.', 'start': 1379.725, 'duration': 1.701}, {'end': 1383.287, 'text': 'Copy it.', 'start': 1382.867, 'duration': 0.42}, {'end': 1395.414, 'text': "I'm going to just use a dummy email address here.", 'start': 1392.932, 'duration': 2.482}, {'end': 1398.677, 'text': 'Jenkins FCC.', 'start': 1397.335, 'duration': 1.342}], 'summary': 'Installing suggested plugins, creating admin user, and generating password for jenkins fcc.', 'duration': 49.05, 'max_score': 1349.627, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA1349627.jpg'}, {'end': 1562.996, 'src': 'embed', 'start': 1478.295, 'weight': 1, 'content': [{'end': 1482.937, 'text': 'And I also can see any notifications or warnings or error messages.', 'start': 1478.295, 'duration': 4.642}, {'end': 1486.375, 'text': 'linked here because I clicked on it.', 'start': 1483.894, 'duration': 2.481}, {'end': 1487.995, 'text': 'It took me to my settings page.', 'start': 1486.455, 'duration': 1.54}, {'end': 1496.618, 'text': 'I am going to go back for now and come back here in a minute, go back to dashboard and starting from the top.', 'start': 1488.995, 'duration': 7.623}, {'end': 1505.96, 'text': 'If I click on new item, you can see this is a quick link to create a freestyle project or a pipeline.', 'start': 1497.578, 'duration': 8.382}, {'end': 1508.721, 'text': 'So if I want to create jobs, I can come here and do that.', 'start': 1506.08, 'duration': 2.641}, {'end': 1511.982, 'text': "I'll come back here to do that in a minute.", 'start': 1509.681, 'duration': 2.301}, {'end': 1522.506, 'text': 'notice whenever i go into one of these navigation items, you can see i get breadcrumbs here where i can navigate.', 'start': 1513.519, 'duration': 8.987}, {'end': 1529.791, 'text': 'back up this people navigation item just lets me manage any users that have access to this.', 'start': 1522.506, 'duration': 7.285}, {'end': 1534.394, 'text': 'jenkins, right now i just have the one admin user.', 'start': 1529.791, 'duration': 4.603}, {'end': 1548.209, 'text': 'but really you might have devops and developers and other people with different levels of access to this interface and you can actually give quite fine-grained permissions on what they can or cannot do.', 'start': 1534.394, 'duration': 13.815}, {'end': 1556.973, 'text': 'Build history will display information and feedback of the jobs that we run.', 'start': 1551.19, 'duration': 5.783}, {'end': 1560.115, 'text': "We'll be coming back to that later as well.", 'start': 1558.414, 'duration': 1.701}, {'end': 1562.996, 'text': "I'm going to skip down to views now.", 'start': 1561.115, 'duration': 1.881}], 'summary': 'Navigating through jenkins interface, creating jobs, managing users, and accessing build history.', 'duration': 84.701, 'max_score': 1478.295, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA1478295.jpg'}], 'start': 1250.974, 'title': 'Setting up jenkins, tour of interface, creating jobs, managing users', 'summary': 'Covers setting up jenkins server via ssh, retrieving password, installing plugins, touring the interface, creating projects, managing users, and permissions.', 'chapters': [{'end': 1398.677, 'start': 1250.974, 'title': 'Setting up jenkins server', 'summary': 'Details the process of accessing a server via ssh, retrieving and using a password, copying content from a file, pasting the password, and installing suggested plugins for jenkins.', 'duration': 147.703, 'highlights': ['Accessing the server via SSH and using password authentication to enter the server. Accessing server via SSH, using password authentication, entering the server.', "Printing out the contents of a file using 'cat' command and copying the password. Printing file contents, copying the password.", 'Installing suggested plugins for Jenkins, which provides a good base to start with. Installing suggested plugins, providing a good base to start with.']}, {'end': 1505.96, 'start': 1402.9, 'title': 'Setting up jenkins and tour of interface', 'summary': 'Covers setting up jenkins and giving a quick tour of the interface, including creating a freestyle project or a pipeline and accessing user profile and notifications.', 'duration': 103.06, 'highlights': ['Jenkins is ready to start using after saving the user and finishing the setup.', 'The interface includes top navigation, sidebar, user profile link, and access to notifications and error messages.', "The 'new item' option allows quick creation of a freestyle project or a pipeline."]}, {'end': 1562.996, 'start': 1506.08, 'title': 'Creating jobs and managing users in jenkins', 'summary': 'Introduces creating jobs and managing users in jenkins, including fine-grained permissions and viewing build history.', 'duration': 56.916, 'highlights': ['The chapter introduces creating jobs and managing users in Jenkins, including fine-grained permissions and viewing build history.', 'Users can be given fine-grained permissions on what they can or cannot do, such as managing users with different levels of access to the interface.', 'The build history feature displays information and feedback of the jobs that are run in Jenkins.']}], 'duration': 312.022, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA1250974.jpg', 'highlights': ['Installing suggested plugins, providing a good base to start with.', 'Accessing server via SSH, using password authentication, entering the server.', 'Printing file contents, copying the password.', "The 'new item' option allows quick creation of a freestyle project or a pipeline.", 'The chapter introduces creating jobs and managing users in Jenkins, including fine-grained permissions and viewing build history.', 'Users can be given fine-grained permissions on what they can or cannot do, such as managing users with different levels of access to the interface.', 'The build history feature displays information and feedback of the jobs that are run in Jenkins.', 'Jenkins is ready to start using after saving the user and finishing the setup.', 'The interface includes top navigation, sidebar, user profile link, and access to notifications and error messages.']}, {'end': 2107.004, 'segs': [{'end': 1877.415, 'src': 'embed', 'start': 1849.167, 'weight': 1, 'content': [{'end': 1859.551, 'text': 'So I could come and select plugins I want to update and click download now and it will install the update after I restart Jenkins, which,', 'start': 1849.167, 'duration': 10.384}, {'end': 1863.312, 'text': "as I'm downloading it, does give me the option if I want to go ahead and restart Jenkins.", 'start': 1859.551, 'duration': 3.761}, {'end': 1866.193, 'text': "I'm going to deselect these.", 'start': 1864.492, 'duration': 1.701}, {'end': 1874.494, 'text': 'Available is just a list of plugins that I can check off and install as well.', 'start': 1868.311, 'duration': 6.183}, {'end': 1877.415, 'text': "I'm going to come back to this.", 'start': 1876.215, 'duration': 1.2}], 'summary': 'Jenkins allows easy plugin updates and restart, simplifying maintenance.', 'duration': 28.248, 'max_score': 1849.167, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA1849167.jpg'}, {'end': 1939.971, 'src': 'embed', 'start': 1906.593, 'weight': 0, 'content': [{'end': 1909.954, 'text': "I'm going to say download now and install after restart.", 'start': 1906.593, 'duration': 3.361}, {'end': 1916.376, 'text': 'It is in the process of downloading and installing.', 'start': 1913.755, 'duration': 2.621}, {'end': 1920.397, 'text': "You can see and I'm going to check this box at the bottom.", 'start': 1917.276, 'duration': 3.121}, {'end': 1925.539, 'text': 'If you can see it says restart Jenkins when installation is complete.', 'start': 1920.537, 'duration': 5.002}, {'end': 1928.06, 'text': 'So now it says Jenkins is going to shut down.', 'start': 1926.059, 'duration': 2.001}, {'end': 1932.486, 'text': 'It will just take a minute for Jenkins to restart now.', 'start': 1929.944, 'duration': 2.542}, {'end': 1939.971, 'text': 'You can see that this restarting Jenkins is running.', 'start': 1937.269, 'duration': 2.702}], 'summary': 'Jenkins is being restarted after download and installation.', 'duration': 33.378, 'max_score': 1906.593, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA1906593.jpg'}, {'end': 2011.953, 'src': 'embed', 'start': 1986.249, 'weight': 4, 'content': [{'end': 1991.294, 'text': 'You can see that some of the plugins have dependencies of other plugins.', 'start': 1986.249, 'duration': 5.045}, {'end': 1992.175, 'text': 'Like I.', 'start': 1991.854, 'duration': 0.321}, {'end': 1997.219, 'text': 'just the only ones I selected were actually this Docker one and the Docker compose one,', 'start': 1992.175, 'duration': 5.044}, {'end': 2004.826, 'text': 'but because they have dependencies of Docker API and Docker commons, Jenkins is also installing those plugins.', 'start': 1997.219, 'duration': 7.607}, {'end': 2011.953, 'text': "So it will install the plugin you select as well as any dependent plugins if they aren't installed already.", 'start': 2005.447, 'duration': 6.506}], 'summary': 'Jenkins installs selected plugins and their dependencies automatically.', 'duration': 25.704, 'max_score': 1986.249, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA1986249.jpg'}, {'end': 2085.876, 'src': 'embed', 'start': 2051.54, 'weight': 5, 'content': [{'end': 2053.96, 'text': "It's still linked to the old interface.", 'start': 2051.54, 'duration': 2.42}, {'end': 2062.944, 'text': 'So if you click on some links here, like administration, you can see it takes you back to the old interface,', 'start': 2055.36, 'duration': 7.584}, {'end': 2066.245, 'text': "because blue ocean doesn't have a managed Jenkins section.", 'start': 2062.944, 'duration': 3.301}, {'end': 2068.831, 'text': 'Let me go back to Blue Ocean.', 'start': 2067.551, 'duration': 1.28}, {'end': 2077.994, 'text': 'You can also click this kind of exit icon and that takes you back to the regular Jenkins dashboard.', 'start': 2069.311, 'duration': 8.683}, {'end': 2085.876, 'text': 'Normally you would see a list of the pipelines you create here, but since there are no pipelines,', 'start': 2080.275, 'duration': 5.601}], 'summary': 'Old interface links to blue ocean, no pipelines created yet.', 'duration': 34.336, 'max_score': 2051.54, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA2051540.jpg'}], 'start': 1564.277, 'title': 'Jenkins management and updates', 'summary': 'Covers creating custom dashboards, managing configurations, updating jenkins, managing plugins, configuring nodes, and installing blue ocean and docker plugins. it provides insights into staying updated with new versions and the effects of updating and installing plugins.', 'chapters': [{'end': 1616.35, 'start': 1564.277, 'title': 'Jenkins dashboard and configuration', 'summary': 'Covers creating custom dashboards for jobs, managing jenkins configurations, and staying updated with new jenkins versions.', 'duration': 52.073, 'highlights': ['The chapter covers creating custom dashboards for viewing different kinds of jobs, or maybe for different users to see different information.', 'Managing Jenkins configurations and plugins key management is crucial for setting up pipelines and running jobs.', 'The page notifies about new Jenkins versions available, ensuring the system stays updated.']}, {'end': 2107.004, 'start': 1617.251, 'title': 'Updating jenkins and installing plugins', 'summary': 'Discusses the need to update an outdated version of jenkins, managing plugins, configuring nodes, adding credentials, and installing blue ocean and docker plugins, highlighting the process and effects of updating and installing plugins.', 'duration': 489.753, 'highlights': ['Updating Jenkins Version The chapter highlights the need to update an outdated version of Jenkins, which is approximately 25 minor versions behind the current version.', 'Managing Plugins The process of managing plugins is explained, including searching for, installing, updating, and removing plugins, with a focus on the installation of Blue Ocean and Docker plugins.', 'Configuring Nodes and Credentials The importance of configuring nodes for running jobs and adding credentials for node permissions is emphasized to ensure proper access and communication within the Jenkins environment.']}], 'duration': 542.727, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA1564277.jpg', 'highlights': ['The chapter covers creating custom dashboards for viewing different kinds of jobs, or maybe for different users to see different information.', 'Managing Jenkins configurations and plugins key management is crucial for setting up pipelines and running jobs.', 'The page notifies about new Jenkins versions available, ensuring the system stays updated.', 'Updating Jenkins Version The chapter highlights the need to update an outdated version of Jenkins, which is approximately 25 minor versions behind the current version.', 'Managing Plugins The process of managing plugins is explained, including searching for, installing, updating, and removing plugins, with a focus on the installation of Blue Ocean and Docker plugins.', 'Configuring Nodes and Credentials The importance of configuring nodes for running jobs and adding credentials for node permissions is emphasized to ensure proper access and communication within the Jenkins environment.']}, {'end': 2592.254, 'segs': [{'end': 2163.519, 'src': 'embed', 'start': 2131.743, 'weight': 2, 'content': [{'end': 2140.465, 'text': 'It will take me to my GitHub account and I can go straight to the page where I can create an access token.', 'start': 2131.743, 'duration': 8.722}, {'end': 2151.467, 'text': 'If you want to get here on your own, you can access this page through settings and developer settings, and then personal access tokens.', 'start': 2141.765, 'duration': 9.702}, {'end': 2163.519, 'text': "You can see that by clicking on the link, the necessary permissions that I'm going to need for Jenkins are already pre-populated and selected here.", 'start': 2153.214, 'duration': 10.305}], 'summary': 'Access github account, create access token with necessary permissions for jenkins.', 'duration': 31.776, 'max_score': 2131.743, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA2131743.jpg'}, {'end': 2419.196, 'src': 'embed', 'start': 2341.063, 'weight': 0, 'content': [{'end': 2349.847, 'text': "it's checked into Git and versioned and can be managed or rolled back just like any other file in Git.", 'start': 2341.063, 'duration': 8.784}, {'end': 2355.17, 'text': "Now, since the file doesn't already exist in our repository.", 'start': 2351.148, 'duration': 4.022}, {'end': 2362.073, 'text': 'when we create the pipeline in Blue Ocean and save for the first time,', 'start': 2355.17, 'duration': 6.903}, {'end': 2368.356, 'text': 'it will automatically create a new Jenkins file for us and commit it to the repository.', 'start': 2362.073, 'duration': 6.283}, {'end': 2372.971, 'text': "So let's go through that process now back in Jenkins.", 'start': 2369.989, 'duration': 2.982}, {'end': 2382.359, 'text': 'You can see the message down at the bottom here saying a stage is required.', 'start': 2376.895, 'duration': 5.464}, {'end': 2390.045, 'text': 'Basically, the pipeline is broken down into stages, which are like sections.', 'start': 2383.82, 'duration': 6.225}, {'end': 2394.829, 'text': 'Every stage has to have at least one step.', 'start': 2392.207, 'duration': 2.622}, {'end': 2409.311, 'text': 'And the steps are what contain the scripts, calls to Jenkins plugins, or other actionable tasks to be carried out in the pipeline.', 'start': 2396.565, 'duration': 12.746}, {'end': 2419.196, 'text': 'Both stages and steps can be run in parallel or one after the other.', 'start': 2410.792, 'duration': 8.404}], 'summary': 'Blue ocean in jenkins automatically creates and commits a new jenkins file when a pipeline is saved for the first time.', 'duration': 78.133, 'max_score': 2341.063, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA2341063.jpg'}, {'end': 2570.686, 'src': 'embed', 'start': 2526.888, 'weight': 3, 'content': [{'end': 2529.37, 'text': "It's saying that git does not exist.", 'start': 2526.888, 'duration': 2.482}, {'end': 2541.62, 'text': 'Basically I spun up this server using Jenkins from the Linode marketplace but that server does not have git pre-installed on it.', 'start': 2530.091, 'duration': 11.529}, {'end': 2546.85, 'text': 'So I will need to install that directly on my instance.', 'start': 2542.421, 'duration': 4.429}, {'end': 2554.385, 'text': "And since I don't have any kind of automated setup for the instance, I'm just going to SSH directly into it.", 'start': 2547.451, 'duration': 6.934}, {'end': 2570.686, 'text': "So, in Linode I'm going to go to my server and instead of using my own terminal this time I'm going to use the built-in one that they provide in Linode.", 'start': 2559.378, 'duration': 11.308}], 'summary': 'Jenkins server from linode marketplace lacks pre-installed git; manual installation and ssh access needed.', 'duration': 43.798, 'max_score': 2526.888, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA2526888.jpg'}], 'start': 2107.884, 'title': 'Github access token and jenkins pipeline setup', 'summary': 'Covers creating a github access token for jenkins and setting up a jenkins pipeline in blue ocean, detailing the processes involved and providing step-by-step instructions for token creation and pipeline setup.', 'chapters': [{'end': 2243.608, 'start': 2107.884, 'title': 'Creating github access token for jenkins', 'summary': 'Explains the process of creating a github access token for jenkins, including accessing the token creation page through settings and developer settings, selecting necessary permissions, giving a name, and generating the token.', 'duration': 135.724, 'highlights': ['Accessing the token creation page through settings and developer settings, and then personal access tokens.', 'Selecting necessary permissions for Jenkins which are pre-populated and selected.', 'Giving a name to the personal access token for identification purposes.', 'Generating the token and copying it for use in Jenkins.']}, {'end': 2592.254, 'start': 2243.608, 'title': 'Setting up jenkins pipeline in blue ocean', 'summary': 'Details the process of setting up a jenkins pipeline in blue ocean, including creating a jenkins file, defining stages and steps, and addressing issues with git installation and server access.', 'duration': 348.646, 'highlights': ['Creating a Jenkins file in Blue Ocean The process includes creating a Jenkins file automatically when saving the pipeline for the first time, committing it to the repository, and managing it like any other file in Git.', 'Defining stages and steps in the pipeline The pipeline is broken down into stages, each of which must have at least one step containing scripts or calls to Jenkins plugins, and can be run in parallel or sequentially.', 'Addressing git installation issue on the server Encountering a git installation issue on the server, the user plans to install git directly on the instance by SSHing into it, using the built-in Linode console.']}], 'duration': 484.37, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA2107884.jpg', 'highlights': ['Creating a Jenkins file in Blue Ocean with automatic file creation and Git repository management.', 'Defining stages and steps in the pipeline for sequential or parallel execution.', 'Accessing the token creation page through settings and developer settings for Jenkins access token.', 'Addressing git installation issue on the server by installing git directly on the instance.']}, {'end': 3289.602, 'segs': [{'end': 2655.726, 'src': 'embed', 'start': 2623.334, 'weight': 0, 'content': [{'end': 2633.477, 'text': "It's telling me that I can upgrade some of the packages I already have installed or they have new versions, but I'm not going to do that right now.", 'start': 2623.334, 'duration': 10.143}, {'end': 2637.638, 'text': "For now, I'm just going to do apt install git.", 'start': 2634.577, 'duration': 3.061}, {'end': 2644.223, 'text': "It's asking me if I want to continue installing 38.3 megabytes.", 'start': 2639.102, 'duration': 5.121}, {'end': 2647.884, 'text': 'And now I should have Git installed.', 'start': 2645.784, 'duration': 2.1}, {'end': 2650.245, 'text': 'So let me check again.', 'start': 2648.984, 'duration': 1.261}, {'end': 2655.726, 'text': 'And yes, I have Git version 2.20.', 'start': 2650.265, 'duration': 5.461}], 'summary': 'Installed git version 2.20, 38.3 megabytes installed.', 'duration': 32.392, 'max_score': 2623.334, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA2623334.jpg'}, {'end': 2713.691, 'src': 'embed', 'start': 2685.359, 'weight': 1, 'content': [{'end': 2690.602, 'text': "And there's also a yellow state for certain cases like test failure.", 'start': 2685.359, 'duration': 5.243}, {'end': 2693.158, 'text': 'then it can turn yellow.', 'start': 2692.017, 'duration': 1.141}, {'end': 2702.744, 'text': 'So everything is very visual here and you can see that now it passes since I have the correct dependencies installed on the server.', 'start': 2693.418, 'duration': 9.326}, {'end': 2710.789, 'text': 'So this is the most basic version of a pipeline to create in Jenkins.', 'start': 2703.945, 'duration': 6.844}, {'end': 2713.691, 'text': 'So let me add a few more steps now.', 'start': 2711.81, 'duration': 1.881}], 'summary': 'Basic jenkins pipeline with visual indicators for test results and dependencies, with plans to add more steps.', 'duration': 28.332, 'max_score': 2685.359, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA2685359.jpg'}, {'end': 2771.179, 'src': 'embed', 'start': 2740.952, 'weight': 2, 'content': [{'end': 2752.947, 'text': 'And you can see if we go into the Jenkins file, This is the stage that we created and the step to check out code with the GitHub plugin.', 'start': 2740.952, 'duration': 11.995}, {'end': 2762.036, 'text': 'Jenkins files are usually pretty easy to read because you can see well-named options, like which agent you are running,', 'start': 2753.688, 'duration': 8.348}, {'end': 2771.179, 'text': 'the pipeline on a list of stages and then the steps inside of each stage.', 'start': 2762.036, 'duration': 9.143}], 'summary': 'Jenkins file includes a stage to check out code with github plugin.', 'duration': 30.227, 'max_score': 2740.952, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA2740952.jpg'}, {'end': 2834.204, 'src': 'embed', 'start': 2804.025, 'weight': 3, 'content': [{'end': 2814.633, 'text': 'If I click on it, I can see the history of the jobs that have run and the ending state if they passed, failed, or are still running.', 'start': 2804.025, 'duration': 10.608}, {'end': 2827.781, 'text': "And if I go into one of them, I can see that it has all the information I don't have any changes yet and I don't have testing that really runs.", 'start': 2815.534, 'duration': 12.247}, {'end': 2834.204, 'text': 'And you can see the fourth tab is for any artifacts that are produced.', 'start': 2828.481, 'duration': 5.723}], 'summary': 'View job history, status, and artifacts in tabs.', 'duration': 30.179, 'max_score': 2804.025, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA2804025.jpg'}, {'end': 2945.419, 'src': 'embed', 'start': 2905.433, 'weight': 4, 'content': [{'end': 2907.173, 'text': 'I can add more stages.', 'start': 2905.433, 'duration': 1.74}, {'end': 2919.698, 'text': 'I can go back to the previous stage and add more steps, or I can add stages that run in parallel, depending on what I want to do.', 'start': 2907.193, 'duration': 12.505}, {'end': 2935.535, 'text': 'Now there are a lot of options for different types of things that I can do in a step.', 'start': 2929.212, 'duration': 6.323}, {'end': 2942.097, 'text': "Some of these like Docker and Git are from plugins that I've installed.", 'start': 2937.295, 'duration': 4.802}, {'end': 2945.419, 'text': "I'm just going to use the regular shell script here.", 'start': 2942.998, 'duration': 2.421}], 'summary': 'The user can add more stages and steps, including parallel stages and various options like docker and git.', 'duration': 39.986, 'max_score': 2905.433, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA2905433.jpg'}, {'end': 3136.336, 'src': 'embed', 'start': 3099.433, 'weight': 5, 'content': [{'end': 3109.496, 'text': "but you might have hit the limit with the GitHub API and then you'll either have to upgrade your account or wait until it resets.", 'start': 3099.433, 'duration': 10.063}, {'end': 3110.957, 'text': 'I think it resets every hour.', 'start': 3109.616, 'duration': 1.341}, {'end': 3116.181, 'text': 'So sometimes jobs fail because of a cap on API usage.', 'start': 3112.018, 'duration': 4.163}, {'end': 3119.643, 'text': 'But here it looks like everything went fine.', 'start': 3117.382, 'duration': 2.261}, {'end': 3131.732, 'text': 'So now I want to add another script to the pipeline.', 'start': 3128.09, 'duration': 3.642}, {'end': 3136.336, 'text': "I'm going to come to branches and click edit again.", 'start': 3133.754, 'duration': 2.582}], 'summary': 'Github api limit may cause job failures, resets hourly, but pipeline execution went fine.', 'duration': 36.903, 'max_score': 3099.433, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA3099433.jpg'}], 'start': 2592.274, 'title': 'Git installation and jenkins pipeline', 'summary': 'Covers installing git via ssh, resulting in version 2.20 installed, and demonstrates creating and modifying a jenkins pipeline with a focus on visual indicators, interface navigation, api usage, and issue resolution, including api usage limits.', 'chapters': [{'end': 2655.726, 'start': 2592.274, 'title': 'Installing git via ssh', 'summary': 'Details the process of installing git via ssh, including checking if git is installed, updating packages, and installing git, resulting in version 2.20 being successfully installed.', 'duration': 63.452, 'highlights': ['Git version 2.20 is successfully installed after a 38.3 megabyte download.', "The user checks if Git is installed using the 'git --version' command and finds it is not installed.", "Before installing Git, the user performs an 'apt update' to ensure the latest versions of packages are available."]}, {'end': 3289.602, 'start': 2655.726, 'title': 'Jenkins pipeline and interface', 'summary': 'Demonstrates the creation and modification of a jenkins pipeline, including visual indicators for status, stages and steps in a jenkins file, interface navigation, and the usage of apis, with a focus on modifying and adding stages and steps, as well as encountering and resolving issues like api usage limits.', 'duration': 633.876, 'highlights': ['The Jenkins interface provides visual indicators such as colors to represent the status of the pipeline, with blue indicating running, green for passing, red for failure, and yellow for specific cases like test failure. The visual indicators in the Jenkins interface use colors (blue, green, red, yellow) to represent the status of the pipeline, providing a clear visual representation for running, passing, failure, and specific cases like test failure.', 'Jenkins files are easy to read, containing well-named options, agents, stages, and steps, with clear configuration for plugins such as the GitHub plugin. Jenkins files are structured in a readable manner, with clear configuration for options, agents, stages, and steps, including usage of plugins like the GitHub plugin, facilitating ease of understanding and modification.', 'The interface of Jenkins allows for navigation through different aspects of the pipeline, including viewing the history of jobs, ending states, and artifacts produced, as well as enabling editing of the pipeline and accessing settings and branches for modification. The Jenkins interface facilitates navigation through the pipeline, allowing access to job history, ending states, and artifacts, as well as providing options for editing, accessing settings, and modifying branches to enhance the pipeline.', 'Modifying and adding stages and steps in the pipeline, as well as running jobs in parallel, are demonstrated, showcasing the flexibility and customization options within a Jenkins pipeline. The chapter demonstrates the flexibility of modifying and adding stages and steps in a Jenkins pipeline, along with the capability to run jobs in parallel, highlighting the customization and adaptability features.', 'Encountering and resolving issues related to API usage limits with services like GitHub is discussed, emphasizing the potential impact on job failures and the need for upgrading accounts or waiting for resets. The chapter addresses the challenges of encountering API usage limits with services like GitHub, highlighting the impact on job failures and the potential solutions such as upgrading accounts or waiting for resets.']}], 'duration': 697.328, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA2592274.jpg', 'highlights': ['Git version 2.20 is successfully installed after a 38.3 megabyte download.', 'The Jenkins interface provides visual indicators such as colors to represent the status of the pipeline.', 'Jenkins files are structured in a readable manner, with clear configuration for options, agents, stages, and steps.', 'The interface of Jenkins allows for navigation through different aspects of the pipeline, including viewing the history of jobs, ending states, and artifacts produced.', 'The chapter demonstrates the flexibility of modifying and adding stages and steps in a Jenkins pipeline, along with the capability to run jobs in parallel.', 'The chapter addresses the challenges of encountering API usage limits with services like GitHub, highlighting the impact on job failures and the potential solutions.']}, {'end': 3788.812, 'segs': [{'end': 3402.189, 'src': 'embed', 'start': 3289.622, 'weight': 2, 'content': [{'end': 3300.011, 'text': 'It says version 16, and let me check the NPM version because NPM comes with node and I have version eight of NPM.', 'start': 3289.622, 'duration': 10.389}, {'end': 3304.83, 'text': 'So that should be all I need here.', 'start': 3302.409, 'duration': 2.421}, {'end': 3310.013, 'text': 'Let me try to rerun this now.', 'start': 3308.452, 'duration': 1.561}, {'end': 3312.754, 'text': 'All the other steps passed.', 'start': 3311.274, 'duration': 1.48}, {'end': 3314.375, 'text': "This one's still going.", 'start': 3313.155, 'duration': 1.22}, {'end': 3318.958, 'text': "It hasn't failed yet, so that's a good sign.", 'start': 3316.957, 'duration': 2.001}, {'end': 3331.404, 'text': "While it's running, I'm going to switch over to GitHub and go to the Jenkins file.", 'start': 3324.18, 'duration': 7.224}, {'end': 3335.818, 'text': 'And you can see that now.', 'start': 3333.297, 'duration': 2.521}, {'end': 3349.841, 'text': 'it adds this parallel command and denotes that these two stages are running in parallel and gives it the title of the first stage for both.', 'start': 3335.818, 'duration': 14.023}, {'end': 3357.993, 'text': 'And then each stage in parallel has its own title and steps.', 'start': 3351.362, 'duration': 6.631}, {'end': 3363.777, 'text': 'Of course you could just put this in one stage and have two steps as well.', 'start': 3359.053, 'duration': 4.724}, {'end': 3369.661, 'text': 'But I just wanted to show how it works to run things in parallel in Jenkins.', 'start': 3364.817, 'duration': 4.844}, {'end': 3373.973, 'text': "This is taking a little while, so I'm going to fast forward.", 'start': 3370.871, 'duration': 3.102}, {'end': 3378.636, 'text': 'So I actually reran this because I closed that other screen.', 'start': 3375.014, 'duration': 3.622}, {'end': 3386.782, 'text': 'You can see that everything passed this time, including the new one for tests that I added.', 'start': 3379.657, 'duration': 7.125}, {'end': 3395.648, 'text': "Now that we have a couple basic scripts working, let's add some stages so that we can finally deploy the app to Docker Hub.", 'start': 3387.783, 'duration': 7.865}, {'end': 3402.189, 'text': "Now I'm going to add a build step to our pipeline.", 'start': 3399.505, 'duration': 2.684}], 'summary': 'Version 16 checked, npm version 8 used, jenkins file modified to run stages in parallel, all steps passed, app deployed to docker hub.', 'duration': 112.567, 'max_score': 3289.622, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA3289622.jpg'}, {'end': 3538.761, 'src': 'embed', 'start': 3463.366, 'weight': 0, 'content': [{'end': 3475.283, 'text': "i re-recorded this a few times so you can see the numbers skip around a little bit, but I'm still going through each step in the process.", 'start': 3463.366, 'duration': 11.917}, {'end': 3488.63, 'text': 'Now that the build passed, I need two more steps to be able to deploy this to Docker Hub.', 'start': 3482.347, 'duration': 6.283}, {'end': 3494.754, 'text': 'First, I need to log in with my Docker Hub credentials.', 'start': 3489.791, 'duration': 4.963}, {'end': 3503.23, 'text': "to make sure I'm authorized to push images to my Docker Hub account.", 'start': 3496.997, 'duration': 6.233}, {'end': 3516.931, 'text': 'To do that, I need to use the docker login command, and the default place that it points to is docker hub.', 'start': 3508.447, 'duration': 8.484}, {'end': 3519.672, 'text': "so I don't have to do anything special here.", 'start': 3516.931, 'duration': 2.741}, {'end': 3525.774, 'text': 'but I do need to use my credentials, like my username and password.', 'start': 3519.672, 'duration': 6.102}, {'end': 3538.761, 'text': "but of course I don't want to store my username and password for docker hub in the Jenkins file, so I am going to use variables in Jenkins.", 'start': 3525.774, 'duration': 12.987}], 'summary': 'The process involves logging in to docker hub using credentials and avoiding storing them in the jenkins file.', 'duration': 75.395, 'max_score': 3463.366, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA3463366.jpg'}, {'end': 3788.812, 'src': 'heatmap', 'start': 3751.386, 'weight': 5, 'content': [{'end': 3758.089, 'text': 'I hope you were also able to check out the follow along README that is linked in the description.', 'start': 3751.386, 'duration': 6.703}, {'end': 3766.167, 'text': 'It has all of the instructions for, of course, following along with every step in this video,', 'start': 3759.326, 'duration': 6.841}, {'end': 3773.469, 'text': 'as well as some notes that I took along the way about things that I learned in the process of creating this tutorial.', 'start': 3766.167, 'duration': 7.302}, {'end': 3782.511, 'text': 'I want to thank Linode once again for their grant to Free Code Camp and making educational content like this video possible.', 'start': 3774.389, 'duration': 8.122}, {'end': 3788.812, 'text': "I hope all of you have a great rest of your week and we'll see you in the next video.", 'start': 3783.391, 'duration': 5.421}], 'summary': 'Tutorial includes readme for step-by-step guidance, funded by linode, for free code camp. stay tuned for more.', 'duration': 14.423, 'max_score': 3751.386, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA3751386.jpg'}], 'start': 3289.622, 'title': 'Jenkins and docker deployment', 'summary': 'Covers setting up jenkins for parallel execution, including benefits and deploying an app to docker hub using jenkins pipeline, resulting in successful image deployment.', 'chapters': [{'end': 3369.661, 'start': 3289.622, 'title': 'Jenkins parallel execution', 'summary': 'Outlines the process of setting up jenkins for parallel execution, including checking versions, running steps in parallel, and explaining the benefits of parallel execution in jenkins.', 'duration': 80.039, 'highlights': ['The speaker checks the version of NPM and notes having version eight, while also mentioning version 16 for another component.', 'The speaker demonstrates adding parallel commands in the Jenkins file and explains the benefits of running things in parallel in Jenkins.', 'The speaker mentions that while certain steps have passed, one is still ongoing, indicating a positive sign.']}, {'end': 3788.812, 'start': 3370.871, 'title': 'Deploying app to docker hub', 'summary': 'Covers adding stages to a pipeline, building and pushing docker images to docker hub using jenkins, and managing credentials with environment variables, resulting in successful deployment to docker hub.', 'duration': 417.941, 'highlights': ['Successfully building and pushing Docker image to Docker Hub The speaker adds stages to the pipeline, creates a build stage, runs a Docker build command to build a Docker image, uses Docker login command with credentials stored in Jenkins environment variables, and pushes the updated image to Docker Hub, resulting in the successful deployment of the app to Docker Hub.', 'Managing credentials with environment variables The speaker uses Jenkins environment variables to manage Docker Hub credentials, ensuring that the username and password are not stored in the Jenkins file, thus enhancing security and preventing exposure of sensitive information.', 'Expressing gratitude to Linode for support The speaker expresses gratitude to Linode for their grant to Free Code Camp, enabling the creation of educational content, such as the video tutorial, and encourages viewers to check out the follow-along README linked in the description for comprehensive instructions and additional notes.']}], 'duration': 499.19, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/f4idgaq2VqA/pics/f4idgaq2VqA3289622.jpg', 'highlights': ['Successfully building and pushing Docker image to Docker Hub The speaker adds stages to the pipeline, creates a build stage, runs a Docker build command to build a Docker image, uses Docker login command with credentials stored in Jenkins environment variables, and pushes the updated image to Docker Hub, resulting in the successful deployment of the app to Docker Hub.', 'The speaker uses Jenkins environment variables to manage Docker Hub credentials, ensuring that the username and password are not stored in the Jenkins file, thus enhancing security and preventing exposure of sensitive information.', 'The speaker demonstrates adding parallel commands in the Jenkins file and explains the benefits of running things in parallel in Jenkins.', 'The speaker mentions that while certain steps have passed, one is still ongoing, indicating a positive sign.', 'The speaker checks the version of NPM and notes having version eight, while also mentioning version 16 for another component.', 'Expressing gratitude to Linode for support The speaker expresses gratitude to Linode for their grant to Free Code Camp, enabling the creation of educational content, such as the video tutorial, and encourages viewers to check out the follow-along README linked in the description for comprehensive instructions and additional notes.']}], 'highlights': ['Jenkins is an open-source automation server that facilitates building, testing, and deploying software, offering ease and efficiency in the software development process.', 'DevOps pipelines automate the build, test, and deploy phases of the software development lifecycle, aiming to enhance the continuous delivery of software applications.', 'Continuous integration and delivery are facilitated through a pipeline, automating the building, testing, and deployment processes.', 'Jenkins allows automation for events in the code repository, including building code, running scripts, testing, and deploying apps based on test results.', 'Jenkins is a 20-year-old open-source automation server commonly used in software development, offering features like continuous integration, deployment pipelines, plugin architecture, and a large community.', 'Jenkins is open source, allowing self-hosting without paying for an enterprise plan and providing total configuration control.', 'Continuous integration is defined as the practice of automating the integration of coding changes from multiple contributors into a single software project.', 'Jenkins controller manages configuration, key management plugins, and acts as a centralized hub to handle all connecting agents.', 'The tutorial uses the cheapest server option, the Nano 1GB, which is stated to be more than enough to run Jenkins.', "The 'new item' option allows quick creation of a freestyle project or a pipeline.", 'The chapter covers creating custom dashboards for viewing different kinds of jobs, or maybe for different users to see different information.', 'The Jenkins interface provides visual indicators such as colors to represent the status of the pipeline.', 'Successfully building and pushing Docker image to Docker Hub The speaker adds stages to the pipeline, creates a build stage, runs a Docker build command to build a Docker image, uses Docker login command with credentials stored in Jenkins environment variables, and pushes the updated image to Docker Hub, resulting in the successful deployment of the app to Docker Hub.', 'The speaker uses Jenkins environment variables to manage Docker Hub credentials, ensuring that the username and password are not stored in the Jenkins file, thus enhancing security and preventing exposure of sensitive information.', 'The speaker demonstrates adding parallel commands in the Jenkins file and explains the benefits of running things in parallel in Jenkins.', 'The speaker mentions that while certain steps have passed, one is still ongoing, indicating a positive sign.']}