 Welcome. This is the screenshot updates project meeting for Sheikot Africa Contributon, April 18th, 2022. Great to have you here. Attending, whoops, attending. We have Nafisa, and we have Soma and Mark. So first topic for me was, are there any questions that you have? Soma, I think you had asked some questions and maybe we can spend our time trying to be sure we get your answers to those questions. Oh, yeah, about trying to install a Pash Maven. Yes. Yeah, I saw your answer, but I haven't tried it yet. Okay, and so this is on macOS, right? Yeah. Very good. So, so the, the, there is probably a technique, let's see if we can find it. macOS, there may be an even better technique that talks about how to do it. Yeah, either of these are probably, yeah, so if you've already got brew. Yeah, then you could just do brew install Maven. We don't know what version that will give you. So that's, that's what is so let's go one alternative would be brew install Maven, right. However, that one has the downside that I'm not a brew user and I'm not a macOS user. So there's a risk that that's really silly. Another alternative and brew install Maven should just do it automatically for you and then you would do a Maven minus, oops, MVN minus version, and it should report the version number for you. And need, need at least Maven 3.8.3 the last time I checked and prefer 3.8.4. Okay. Another alternative is download the zip file from Apache from the Apache download site from the Maven download site. Let's make it very clear. You can unpack it unzip in a specific location in a location you prefer, and then add that location to your path in your shell. And that that's the technique I've used but you could use whatever technique works well for you. Okay, okay, well I'll try it out and let you know. Great. Thank you. All right. No, I see that you're here. That's great. Thank you. All right. Are there other questions that you have. No, no, not for now. Okay. Hi, everyone. Hi. I'm sorry I'm late. I got, I couldn't keep track of time. I got carried away with what I was doing. Very sorry. No problem. That's it's great that you're here. All right, so how is your progress getting started with Jenkins I think I've seen questions from both Miracle and from Soma. So, so any concerns there. Okay. I thought through the weekend I had, I was quite confused with what I was doing, but thank God today I was able to, you know, get to properly create a pipeline. So I moved on to the next step on the preparation guide. So that's that's where I am now. Yes, there's no questions yet regarding that one. Okay. All right, well so that's that's really good. Now, looking ahead looking forward to the looking further ahead. We could spend some time looking for screenshots. We could spend time together seeking screenshots that need to be updated. We're not ready to make any changes for those yet. But if we if we do that together I think it may give you a hint how to do it. When you start looking on your own. That's one thing we consider doing. We could spend time review we could review the startup steps in the document. We could review Jenkins concepts and capabilities if that helps you. Is there one of those three that you would think is more interesting to you than the others for one of those three. So I think we're getting lots of background noise I'm going to mute. Oh, nope. Nope, it was miracles. Okay. Nope, it was it's miracles. Okay, no. Hello. So ma. Okay, so it's hello. Hi. Okay, so it's the I'm getting an echo from myself. Yeah, I can hear it. Okay. There. All right, I guess we're all right for now. So. Right. And so maybe it was one of their devices that was giving the echo. So I think that's okay. When they need to when they need to speak all they need to do is unmute. Okay. Great. So. Is there are any of these three things interesting to you would you like to try them while we're while we've got our time together or is there something else you would prefer we do in the in the moments we've got together now. Well, I think we should look for screenshots, you know, so we could move forward, but then also reviewing Jenkins concepts. I think that's a really good idea too. Okay, good. Let's let's take those two. How about we'll spend what if we limit ourselves to not more than 20 minutes, looking. And on that one. And then we'll, we'll use the up to 30 minutes or up to yeah up to 30 minutes on Jenkins concepts and capabilities. That's a good idea. Okay, good. All right. So, in order to search for screenshots that might need updating the steps I'd take is I'd go to Jenkins.io. Well, actually, I guess there are two ways to approach it. One way is list the files that contain images in the source code. I could just do by going to, okay, I'm going to make my text bigger. Is that big enough to read soma. Yeah, it is. Good. Okay, so, so if I do a get grep minus L image colon. It tells me oh and then I want doc slash book let's limit ourselves just to the book for content slash doc slash book. Okay, so this already tells us a list of how many maybe 30 or 40, almost 40 files that have screenshots in them. And so these files seem like really good candidates. So, in order to make my life easier, I'm going to convert those things into URLs that we could then open. And so, let's see if I can do that with a little bit of. Okay, so take one sample we're going to go right here. And I want to look at blue ocean activity so if I look at some projects. Projects. No document documentation. How do I get to the blue ocean. Well, let's see. So how about, let's just search for blue ocean. Well was creating pipelines, creating a pipeline in blue ocean. Here we go. No, that's a tutorial well. Doc book, blue ocean documentation here blue ocean. Ah, it would help if I look there. Okay, good. So this gives me. And I want to see activity. There we go this one. Okay, so this is one. So I need to convert one form of text to the other. And sorry, I'm using some unique utilities because they're comfortable for me. Okay, that's the one that I want. So content doc book becomes. Okay, so it's giving me an approximation. And then is it that we just take off. Oh yes, good. Okay, so one more step. There we go. Okay, now let's test this just to see if it worked. It did good. Okay, so now what I've got is I've got a list of URLs we should check. So I'm going to paste them right in here. So the I'm adding them to this sheet that we've got. And then we'll work through that sheet together will do a few and you can do more you could use the same technique that I'm using to to find others I narrowed mind just to the list of documents are in doc book. Okay, so we have a controller isolation so here's some more. All right. Okay, so we have some URLs that are candidates. Let's go looking at them so we know. Let's look at activity view first. Okay that I happen to know this one didn't change I think the two of you have seen that picture already and seen that it hasn't changed in the version you're running. This one has no change needed. Oops wrong one. Okay, then creating pipelines. And again I think you've seen this one and no change needed there either right. Yes, yes. Good. Okay. I might recommend. One image other not replaced though. Okay, so if there's a if there's a place where a correction would be useful. Be sure you note that so so which one is it and I'll take a note of it here in this in the in the page. I'm using my phone. I can't see. Okay, no problem so one one image may need to be added is that okay if I say it that way. Yes, yes. All right. Sorry and with you on your phone that means you probably can't see my screen right so that makes it difficult but will you be able to view the recording later to see the technique. Yes. Great. Okay. And so on dashboard. Oh yes. Okay on dashboard this one definitely needs updates because I believe anyway that the health icons in the list will need to be updated. I think that those have changed. Okay, so let's look at getting started now. And it definitely needs an update because this screenshot of the plug in plug in manager is is showing the old plug in manager. This image that's on the screen right now is for the plug in manager from before from six months ago even. Okay, so this one definitely needs plug in manager screenshot. So two of you have seen this this one I think because you've used the plug in manager to install blue ocean already. Yes. Okay, then index let's look at it. Oops, index no such page. Here we go. Okay, this one. No change needed. Yeah. Okay. So this is a quick line editor. So is the process that I'm using reasonably comfortable for you you see what I'm doing I'm just looking at each page and making my own guess is there's a screen screenshot update needed. Yes, it is. Okay, very good. Now we're going to get to some more interesting ones here pretty quick. Oh, oh, this one. This one is still unchanged. Okay. The annotated screenshot there. Yes, that one's also unchanged. Okay. Okay, now set up wizard for tutorials. Okay, so this one is a separate file that we have to look at an install. It's for the tutorial so sorry this one is a little more complicated we have to look here. And we see a tutorial like this one that has. Now we should see a picture of the setup was there it is here. And that needs no change. Yeah, those are all okay good. Okay. Installing for windows may need a change because we certainly got a new windows installer. Oh, no, it's well. Okay, look at the version number on this screen it's 2.263.4. It would probably be really nice to have something much newer like 2.332.1 something that is less than two years old so this is a good one to update. And screenshots with the version info. 2.332.1 or newer. So and let's close the tabs to the right. Okay, so now, how about change system time zone. Okay, and this one is definitely outdated, or is it. And I have to look and you could use the same technique I'm using. If you go to weekly.ci.jenkins.io. And then you'll see on the user. Whoops. On the user drop down configure. And it shows us time zone. Okay, so so there is, there is a difference here. When I select the time zone, for instance, in my case, I'm America slash Denver, where is that. That's an awful lot. Denver. Okay. But so what we see is there is a difference here that is probably worth highlighting. So it's a relatively small difference. So let's call that one low priority to update. Now let's take the next one managing CLI. And this one definitely needs an update because this image that's taken here is for the old way of doing things so if I went to, if I go here to configure. You'll see that the UI is different on SSH public keys. The text is different. There's different different icons. So that one needs an update. And, and then this process just continues. So here we have managing plugins where that's definitely needs changes. You may even need need better phrasing. So you may need me want to suggest text creation corrections not just picture corrections. If you're only comfortable doing pictures that's fine too but they're, they're both quite valid. So script approval. Here we go. So this says, and I don't know if I've got permission here to do script approval I probably don't. I do. Okay. You won't, but I do. So if we check this one has script approval is where it is is. Now it should be in the script. No, it's not the script console script approval may not be installed here just a minute while I try another Jenkins installation. Okay. Sometimes one of the problems you'll encounter is that the Jenkins installation that you're looking at doesn't have a plugin installed that's needed in order to show the yes. Okay, so here it is this is my installation and it has in process script approval. Now let's see if how the so first the opening screenshot is incorrect it's a very different look so that one needs needs an update. And it's Jenkins screenshot. Okay, so we've almost reached the end of the 20 minutes that I wanted to allocate to this task. Any questions about the way I was doing that or, or things that you find perplexing. Um, you said, you said we wouldn't have permission to assess the script approval. Correct. So how do we like get this screenshot. So, so I was using weekly dot ci dot Jenkins that you will have permission to access it on your own Jenkins installation. Okay. Does that does that. Thanks. Thanks a good question that you that's, that's, let me make a note here, maybe I should put it here that so see the list mark created in the, in the sheet, and then can use that one weekly to see some of them. Use your own installation to see others to see all of them. Okay, this does that help. Yes, it does. Okay, great. All right, so then, then what what you're doing is working through each of these rows, trying to identify. Okay, do I need does this one need a change so you I themes I would expect will need a major change. Maybe not actually that's not. Yeah, that's a little out of date. But this one will need that you install a plugin you probably don't yet have this neo to plugin, or some other plugin that shows the theme so, so this one definitely needs an update. All right, and that's the that's the technique that you'll use as you work through it. This one definitely needs update. So any questions so far on on that technique. No no questions from me. Okay, great so let's let's have a question mark. Yes. Okay, while we are we are still running going through these steps for preparation. We expected to kind of already starts these finding the images. Always see we are done with the whole preparation. You can you can wait until you're done with the whole preparation. I would have to start this process this this thing that I've been showing here is something I assumed you would probably not start until we officially start the project. So, so for me it was let's get you through the setup steps first. That way you're, you're more comfortable with Jenkins, and aware of how to navigate it. And then you could start doing, doing this, this process but really let's get you through the setup steps first. Thank you very much. Thank you. Hello. Yes. I'm not like I'm working on the project actually does I just need to clarify something the Jenkins that they are setting up on their system. Is it the updated version like does it have the updated view of what they are supposed to compare because I was wondering how they know which one needs changing on which one does not. Jenkins David that's a very good question. So your question was has is the Jenkins they installed the one they should use is the reference for comparison. Yeah, so let's. So, which I'm going to ask it a little differently which Jenkins version, should we use for comparison. Right. And, and that's Jenkins 2.343. The most recent weekly actually and let's call it that the most recent weekly, and that will change every week. And that change right now it's currently Jenkins 2.343 tomorrow. It will be Jenkins 2.344. One week from tomorrow. It will be Jenkins 2.345. That's a great number. So, I'm sorry, I'm, I'm guessing you understand how the update thing will go like by next week you know how to get to 2.345 and things like that. That's well so this, this one that we maintain weekly dot ci dot Jenkins that I was upgraded every time every week. But your version that you're running locally. Download install and install each week to get the most recent. Okay. So that's one of the reasons why this install process this initial setup is is actually quite important because you're going to do it multiple times. So this is not a one time thing that you'll oh I'm going to download it install it and I'm done it's every week when release a new version you're going to need to go get that new version. Good question very good. Any other questions. Okay, so then, how about let's spend some time now on Jenkins concepts and capabilities. And, and we'll do some question and answer there about what are what are key concepts and how do we learn more about those key concepts. So first, first key concept is the notion of what is Jenkins. All right so that's let's look at what is it already at the top level it is an automation server. The first step is to automate things. It automates all sorts of things, and it does that by using plugins that can be optionally installed to solve different needs. So for instance, if I need to do something with windows installer I might choose tools that will let me a plugin that will let me do more work with a windows installer. If I need to do work with a J unit test system, I may use the J unit plugin. Those are the kinds of things where so plugins are very important to Jenkins in its role as an automation server. Now, big concepts involved in Jenkins Jenkins has a few job types where a job is does work for people. The primary job type right now is the pipeline job type. And what pipeline job type is is it tells it lets me in my source code define what steps Jenkins should execute. So I can specify with this source code, I want first to check out the code, then I want to compile it, then I want to run its tests. If the test pass I want to deploy it. All those steps can be described in a pipeline. All those pipeline steps can be sophisticated or relatively simple. They're all part of part of the bigger picture of here's here's a nice sample. Let's take this example. It says we're going to do a build first, then we're going to a test, then we're going to do a deploy, and we put our steps into each of those things. I think you've already seen most of this in your experience so far with Jenkins because you've both defined pipelines, right? Well, I'm just getting started on that step defining pipeline. Okay, good. Well, so then you'll see this. So pipeline is the most important concept for you. So that's where you should be thinking and spending time. So here, Jenkins provides other job types like a freestyle job type. And let's see if I can just show you what that would look like on, on, let's look on my Jenkins server that I have it at my house, and I've got freestyle job types that do all sorts of things like I have a freestyle. freestyle job type that does things like installs windows tools for me. Oh no, I think this one actually is pipeline I've converted many of them to pipeline, but I've got freestyle jobs that will do things like, like these various cleanup things or checkers or all sorts of little things like that. And what they do is they do, they perform some operation for me and tell me if that thing is well behaved. And it's that simple, they're just a little job that I configure here. And I tell it how to run I tell it what to run here it's running a little, a little shell script. And that's a freestyle job. So pipeline and freestyle are the two major job types. Your focus will probably be mostly on pipeline, but be aware that there is such a thing as freestyle. Any questions so far. No questions now. Okay, great. All right, so then, because pipeline is so fundamental to what happens here. So here is this user interface blue ocean that gives us an easy way to see what's going on in the pipeline, and the blue ocean UI lets us visualize pipelines. So for example, it lets me see that this is how the get plug in one example of how it's built, and it's most recent build looks like, oh, something went wrong here let's look at this. So blue ocean here lets me visualize what happened in this build and you see here that I did a checkout. I did a build, and then archive the result. And I did that on Linux, and I did that on Windows. And blue ocean lets me see okay what were the tests that ran. Okay, were there any changes from the previous build. Did it generate any outputs that might be useful for me later, some artifacts, all those things that are just part of part of the pipeline, and come to me from blue ocean, or I can actually see the same things here in the in the classic user interface. So I get I can see test results. I can actually see various compiler warnings. I can see I can see coverage reports. So for instance, if we if we took a look at one of my other plugins that I have to be maintaining. It has coverage reporting in it. This one right here that lets me see. Hey, how is the code coverage doing on this thing. And these kinds of things help me understand how well or poorly the test automation is configured for this for this particular piece of Java code that I'm building. So these kind of concepts are just a natural part of what Jenkins does it wants to build your build your code the way you asked you to build it. And then it'll show you the results and it shows the results in various interesting ways. And this particular coverage report is one way. There are other ways like this one, where if we look at CI Jenkins.io it has a coverage report that is really quite an elegant reporting system showing how well or poorly, this particular piece of code is being covered. And it'll let me look at individual files. It's a very nice thing to see as I try to understand how well tested I am. All part of Jenkins and its plugins. Any questions so far. For me. For me the. But I guess I'll get to understand them better as we go to the project. So I don't, I don't exactly have any particular question. No problem. No problem at all. So other other facilities that are are available in addition to the concept of pipeline jobs. So pipeline jobs define the job with code, right they use the developer says what they how they want the pipeline to run. And in this case, the pipeline jobs define the jobs by clicking on the user interface. Now pipeline jobs have an even better way of doing things that's available called a multi branch pipeline job. These jobs are created and deleted automatically as pull requests are proposed and merged. So let's look at an example here. Let's look at the, let's look at the get client plugin as one example. So it has a number of pull requests that have been proposed. And as we look at those pull requests. In this hub, I can see these pull requests. Here's a pull request from Russia cash, who's suggesting. Hey, I'd like to make these additions to improve the automated testing. And we can see what happens here with those changes. By looking at the Jenkins output, and it will take me right back to CI dot Jenkins that IO, where here is the build from Russia cash is changes. Now this job was created automatically when he submitted the pull request. And when I merge the pull request. The pull request will be deleted automatically. And I didn't have to do anything to either create it or delete it. So a new pull request arrives a new job gets created it builds that pull request. If the pull request is closed the job gets deleted. If the pull request is merged the job gets deleted. In either case when the work is done. The job is automatically destroyed deleted. And, and I didn't have to do anything about it. The pull requests submitted changes this morning to some other places and their pull requests immediately came into into the CI dot Jenkins IO and created new jobs for me that I could use. This is from that concept of a multi branch pipeline job. Now you can read more about that. And certainly as you're going through doing screenshot updates you're going to see this page eventually anyway. So if we look at pipeline multi branch. Oh no we want to see this one. That's just the details of that specific page or that specific keyword we want a better version. Multi branch, come on, creating a multi branch pipeline. And so and this is one actually that will need a screenshot update. So we're in a good place. These, the pictures you see here are out of date. But this describes how you would do a multi branch pipeline that let's let your Jenkins automatically create and delete branches for you, rather than you having to worry about them. Any questions there. Okay, all right. Now there are certainly plenty of other concepts for instance, Jenkins uses the concept of an agent to do its work. So the agent is is a worker that runs on another computer typically or may run on your own computer in a different user account it's intentionally separated from the Jenkins controller. The agent is what allows me to run builds on a system 390 mainframe as 64 bit arm raspberry Pi, a Windows computer and a Linux computer because I have agents on each of those, and you'll read about agents in this page. They do the work and and are commonly configured. They could be automatically started and stopped by either things like a an AWS cloud instance or Azure or Google cloud platform or Oracle cloud or several other cloud providers that provide ways that you can start and stop agents on demand, or you can have agents that stick around for a long time and do their work for you. I think I've about reached the point where I'd call for a pause any other questions before we conclude for today. Well, for my side, not really. Sorry, so my go ahead. For my side not really I don't really understand everything, but I want to get started with pipelines first so maybe I'll have questions as I go. Great. And that sounds reasonable miracle how about you. It's same for me like I will say earlier, the concepts are still here, but I guess we'll get better as we go. Yes, certainly, certainly you're having time to get started is very important, and, and we'll go ahead with that. So, now do we want to meet again this week, or would you like to. So we'd be like one more session this week, or would we like to just plan to only meet next week same day. I think we could do a more session this week thinking am I really doing so good. Okay. So how about what if we said, let me bring up my work calendar just a minute. Would Thursday at this or no would Wednesday at this time work for you, or would Friday at this time work for you, either of those two would work for me. I'm thinking Friday. What do you think. Friday's okay. Okay, so I will schedule a session for us on Friday what I'm just going to do is I'm going to edit this, this calendar entry and change it so that we'll meet twice a week. Oh, whoops, I'm in the wrong. Sorry. I'm going to edit the calendar entry from the place where I have permission to edit the calendar entry. And we're going to change it so not just on on weekly on Monday but let's plan to we meet weekly on Monday and on Friday. Now, if I did this right, it will magically updated on your calendar. Yes, exactly. So adding a Friday meeting. All right. And so you should see on your calendar for Friday the 22nd. At the same time. I see it online. Great. Before we go ahead. Yeah, I just did. Yes, I just saw it. Excellent. All right. So we will, we will, we can certainly talk by slack anytime between now and then, but we will meet on Friday as well. Thanks everybody. Okay, I'll post a link to the recording. It should be available within the next 24 hours. Thanks very much. Have a great day.