like for instance, I baked Apache HTTP client. It is very common or it's very used across multiple plugins. So if the plugin that I'm using, it depends on that particular library. I can upgrade it just for my plugin or it has an impact on remaining plugins. How? That's a very good question. So I think what you're asking is, what is the downstream impact if my plugin declares that it needs a newer version of one of its dependencies? Is that a fair way to say what you're asking? Yeah, okay, so let's take the specific example of the Git plugin. If it says it needs, it will require at least a certain version of promoted builds. Then what that means is when users install the new version of the Git plugin, if they don't have at least that minimum version of promoted builds, they will have to upgrade to it and Jenkins will offer the upgrade automatically to get that new version. So if I mandate a newer version of dependency, then when someone installs my new release with that mandatory newer version, they must have at least that version installed. They can have a newer version than that, but they must have at least that version. Did that help? Yep. Okay, so for me, that highlights one of the real benefits of the Bill of Materials. Before I implemented Bill of Materials in the Git plugin, for instance, I was terrified to update dependency version numbers because I worried that I was going to break someone. I worried that I was going to force them to upgrade to a newer version of a plugin. And I spent an unjustified amount of time worrying, oh, do I dare increase the dependency version number of, let's see, my examples were of the matrix plugin. Will I break someone because they depend on a very old version? Well, with my transition to the Bill of Materials, the decision is no longer in my hands. It's whatever's in the Bill of Materials. And what's happened is that's promoted the decision amongst many, many plugin developers that they will all bias towards depending on recent versions of plugins. So all of a sudden, the entire Jenkins community is getting the benefit of more frequent upgrades to plugins and getting more people on largely the same versions because of this Bill of Materials change. So for me, the Bill of Materials has been not just helpful to me as a developer, it's been helpful to the users because they're tending to get more of them on similar version numbers. So did that address the question, Marcel? Yeah, perfectly. Super, thank you. Other questions? I maybe can share my experience. Just a short. Yesterday, I have reverted my Jenkins installation to the previous LTS version. And about 20 plugins didn't match the version of the previous LTS release. So it wasn't possible to step back one LTS release. Maybe it will help someone in the future. Were you going from 289 back to 277 or from 277? Okay, so, and that has certainly been a big transition. Now, do you track or have you attempted to track your configuration with configuration as code? No, it's painful. I really like to use configuration as code, but we deployed Jenkins the old way, not in a container, but installing in the file system as a war file. And all the dependencies lay in the file system in Jenkins home. And there is no way to, you know, just to tell, okay, with this new version come this version of plugin because they are already there. Right, right. And it is impossible to apply configuration as code in such manner in container world. It is, I think it is easier because you start a new container. There's such a great feature that you can install all needed plugins for this particular Jenkins version inside this container and run it, but not if you install the old way, the file system way. And this is a problem right now for us. So I was living in exactly that kind of a world and I agree with you wholeheartedly. I installed from a war file, I was using in my case the Debian package, right? So I installed the Debian package onto my Debian or my Ubuntu, but I was able to find a path that let me eventually move towards that. And I wonder if it might be worth your considering one of the things that, okay, I don't wanna disturb my production instance, right? It, we're gonna continue managing exactly. But what I found was that if I took a copy of that instance and attempted to build myself a preview of it or a prototype of it in my case, I built it in a Docker image. So I ended up taking with R-Sync a copy of the plugins directory and the config.xml files for the jobs and various other config files and then one little file at a time, one piece at a time. My separate copy got a little bit of configuration as code in one segment and a little bit of configuration as code in another. And I spent months of slow progress getting there, but those months of progress ultimately ended up with, I was able to confidently replace my war-based slash deb file-based installation with one that runs from a Docker image on the same machine because I eventually got them synchronized well enough. So it's now, now if you say, oh, I don't need or want a test environment, then my technique may not help you. But if you're interested in it, I can paste into the chat a link to the thing that I use. So maybe my tooling would give you a little pointer. What we do is exactly what you have described. We use our sync to copy the whole Jenkins home directory to a new virtual machine. And we start a newer version of Jenkins and start the migration on this test machine. And if it's go right, then we make the same thing on the productive machine. But you brought me to the idea, we should not copy the whole Jenkins home. Maybe we should make it smaller pieces copy, not everything but parts of it. At least for me, it was a positive experience to incrementally start from wherever I was, right? With everything managed the way I was used to managing Jenkins with everything done from the user interface. And I clicked through web pages to make every change. But then that our sync and copy those contents into a repository was a great help. It turned out very, very useful to me and it's made my development better. All right, the embarrassing thing here is not just made my Jenkins installation better, but it's made my experience as a developer of Jenkins components better. Because I can now easily drop my test code into something that looks very, very much like my production environment. Yeah. So if you're interested in the technique, the incremental move towards configuration as code, I'm gonna put this into the chat. And now this is truly evolutionary embarrassment publicly displayed, all right? And if you look at the history of this particular repository, you will realize that Mark Waite hangs his head in shame at some of the mistakes I've made in going through these evolutionary transitions, right?  Well, but that works, oh, but that was bad. So you're welcome to that. In my case, the concepts were of incremental improvement were so valuable that my mistakes just didn't matter, right? It turns out that incremental improvement made it so that the end result is better even if I made a bunch of mistakes on the way. Yeah, we learned from our mistakes. Right. Yeah, cool, thank you very much. All right. Surely will help us or me. Well, and for me, it's a reminder that the other thing that that experience of having a readily available thing that I can stand up that looks really close to production is that it lets me very rapidly get into interactive testing of some change I'm making. So we were just doing a Google Summer of Code project and that Google Summer of Code project made an important change to the Get Client plugin and I needed to test it and it was minutes and I had that thing deployed into this environment that has thousands of jobs and has interesting configurations and is known to have problems in places that most people don't have. So for me it was, but it's been an investment, right? I mean, doing incremental transition from old to new has taken time. Yeah, sure. All right, so looking to it. Great, we've talked about we've talked about development and transitions for plugins. Are there other things around plugin transitions? Let's see, Jonathan, for instance, on yours, you mentioned that you've had to upgrade and find your way through how to bring an old plugin to be current and the plugins that are up for adoption commonly have that exact problem. They need to be updated and you've got to explore, okay, can I update it to depend on a modern Jenkins version and what will that do to the code? Okay. Yeah, thank you. Yeah, I think I'm going to use Marcel's idea and take a look at some of the plugins that my instant uses and see if some of those are in the up for adoption state. And I like that very, very much. That's a great way to be able to have a good conversation the other day with someone who worried, hey, but I can't give 40 hours a week to this kind of thing. And I think that plugin adoption is a place where you could give 30 minutes or an hour a week and do significant work, realizing that if a plugin has been placed for adoption, right now that means there aren't people working on it. So anytime you give to it is time that is net benefit. Now, if you'd like, we could look at Jenkins Pipeline. Do any of you have pipeline experience? Have you made the transition to pipeline or as much of what you're doing related to freestyle? My, I'm old fashioned. My stuff is all still freestyle, but. Okay. I have a little combination. I'm using pipeline, but also I'm using the library. So I'm provisioning common functions there through groovy mostly. And then I make uses of those from my pipelines. So, okay, so you're what I would call even in a relatively advanced thing, you're using pipeline shared libraries so that you can have simple expressions of pipeline in most pipeline files that call something a little more complex in the library behind it. Right, yeah. Also, yeah, since we have everything on top of Kubernetes, we are using a configuration as code and all of that. So we, at least that issue in which we have to replace a grade or downgrade, not that we haven't needed to downgrade, but yeah, that's something that you should look at for sure, Valentin. Yeah, that's made easier life. And now in your Kubernetes environment, are you managing things there with Helm files or with YAML directly? What's been your preferred way of, or are you using the Jenkins operator? Which, what's been your preferred way of deploying all the way to Kubernetes? No, so when I started to you implemented this on Kubernetes, I thought that the Kubernetes, the Jenkins operator, it was much sure enough. So I went to Helchar. At that time, it was hosted on the Kubernetes repo, but now it is, as we know, on the Jenkins IO Helchar. And that made easier things as well, because it is just matter of changing a YAML file a value, sorry, a value for the Helchar and then the whole thing roll over, pretty easy. Yeah, Hel, it sounds more a better approach than just using crawl YAML file. So now in your roll forward and roll back experience, have you found that there were unexpected barriers to things that you could share with us to say, hey, it would be better if we did this or our experience would have been better had this been in place instead? So one of the things that I have been thinking is that I need to improve the way that I am rolling out new grades because I have found in the past that I am just grading the LTE version, right? on the Helchar value. And then there is a dependency of that on plugins, specific versions. And then since I fail on read the migration process, my grade fails. So yeah, I have been thinking of having like a test environment just to see how the grade goes. And then if everything works fine, I could be moving that grade to production. And I've heard a number of people who use that kind of a staging technique that you're describing who evaluate something in staging. I think it aligns with the way Valentin was describing they're doing theirs. Your Kubernetes technique doesn't use our sink as I assume going from code. Now in your image definition, one of the things that we learned, I guess it was six or nine months ago was that many users are making the suboptimal choice of declaring their plugin versions in the definition of their thing, but not installing the plugin versions. So when their new Jenkins installation starts, they were downloading the plugins at startup time. And that's both expensive and slow to process and a risk to you because then if the Jenkins update site is down, your Jenkins is stopped waiting for it to upgrade. Do you know, are you using a separate Docker image to define your Jenkins with plugins or you're defining them? Okay, so you've got... That's another process that I need to improve. So yeah, I guess that the recommended way, I think that I read it on the wiki or somewhere else that I should build my own Docker image with the plugins that I need. Yeah, in terms of provisioning time, it will reduce the provisioning time. I found that that's a little risky just to install on the fly. Even though if you are not upgrading, if the pod just gets killed, you will be getting install all those plugins again. Oh, right, I had not even thought of that. The reality is on a pod restart, you get a reinstall of those plugin versions and that's expensive because during a pod restart, you want that thing back as quickly as you can. Yeah, although I should mention that the start, the bootstrap process, I will say that it doesn't take more than five minutes to be honest. Okay, so it's... But yeah, there are occasions in which a plugin could fail on that because instead of using a specific version that was long time ago, a specific version I used the latest version of the plugin, declared on the configuration as code. And then what happened is the controller was restarted and on the bootstrap process, the plugin was installed with a different version because I have instead of a fixed version, I have the latest. Right, right. So now you got an implicit upgrade even though you hadn't expected to get an upgrade at that moment. Yeah, yeah. So yeah, having the Docker image with all the plugins, that's for sure one of the thing that I want to do for the reason that we have said. May I ask a question? So if you have a new image with newest plugins, for example, six weeks past and there is a new Jenkins LTS version available, you built a new image with newest plugins and you want to bring it into your production or test environment, what you do is you have a volume somewhere on the file system bind to your image. And there is plugin information, there is for older versions of these plugins. Are you deleting this directory or how you approach this update scenario? So currently I am not doing anything in regard to the volume. Usually I believe that mostly it is being taken care by Jenkins itself. But what I've realized is that in sonocation when you grade the Jenkins, you can get a warning like saying, you have a null or legacy configuration related to those plugins, do you want to keep it or delete it? That's why I believe Jenkins is taking care of those, so you don't need to clean up. I guess that Mark, you have more information about that. But yeah, that's what I have seen. I have an experience related to the configuration. Yeah, there's one more problem with it. If you deleted a plugin from plugin TXT and built a new image and you start Jenkins with this new image and bound volume, you still have the old plugin installed in your Jenkins environment. Right. And you cannot get rid of it because it is in your file system that's bounding it to your image. Well, and so that was why, at least from my usage, I've preferred to have the Jenkins, the base Docker image includes the plugins in the image and it's not a separate volume, right? It's absolutely just part of it because what I wanted was I want the ability to know that the thing I described, I could go back in time if I had to and build it again. Now, this for me is actually a relatively recent thing because I spent the longest time doing exactly what Marcel was doing of using latest. I always want the latest plugins and so I wanna stay with latest. It turns out that this new tool called the plugin installation manager has some automation inside of it that will help me maintain the list of, okay, I was lazy. I didn't wanna maintain the list of exact plugin version numbers manually. That was just, I've got 150 plugins and tracking those version numbers was just unacceptable. I couldn't imagine tracking those numbers but the plugin installation manager tool is this Java program that will generate the exact list of plugin name version pairs and write it to the file for me. And so what I've got is this ability to say run one command that says, tell me the current version numbers, write it to a plugins.txt file as exact version numbers and another command that says, now go download exactly those versions from the update center. So I was using the exact technique Marcel's described of latest for the longest time for years and it worked just fine but it meant just the way Marcel described it, sometimes I would get silent upgrades of my plugins and I hadn't thought about that and didn't know how to go back if I wanted to go back. So, but for me, the magic there was the plugin installation manager tool and I found the set of arguments to pass to that thing to use it so that it would maintain the file for me because otherwise I would never have tolerated maintaining all those version numbers. I'd have never kept up to date. Yeah, it's almost impossible with 150 plugins. Now there is a different technique and there's a different technique that the Jenkins infrastructure team uses. The Jenkins infrastructure team uses a dependabot configuration that will watch the Jenkins update center and propose pull requests to their plugins.txt file for new versions. And so they're still tracking exact version numbers but if you're interested in that, I could probably paste you a link to that one if you say, oh, I wanna use dependabot to track these things. That was an interesting technique that the infra team found. If I understand this correctly, dependabot works only with GitHub. That's correct, yeah. So if you're using, if you're locally hosting or using a key or using BitBucket, then it won't help. Okay. Petey for us. Well, but that's where the plugin installation manager tool will work for you. And work just fine. Maybe you can post a link about plugin installation tool. You bet. Okay, cool. Yeah, so let me... Only tool I know is the Jenkins CLI jar. Sorry, go ahead, Marcel, what was that? I would be interesting to see how the infra team is using dependabot for that. Yeah, that's very interesting. Super. And to be honest, I am struggling with what you just mentioned. I need to go over every plugin version when I am grading. I think that there was a major grade on the LTE version some months ago. So I went through all of those. And also, especially because I grade it from JDK8211, that was another milestone on that LTE, yes, I believe. But yeah, I have to track all the individual version for plugins. Okay, so you're headed in that direction. You see that coming. Yeah. Okay, well, so let me... I'm gonna paste a link to this thing that I use to get available updates. And yes, so here we go. So in the chat session, whoops, where did I put it? Here is the Python code. Okay, so I'm a Python scripter. So Python script that calls the plugin installation manager tool to maintain the precise plugins.txt file. So there's that one. And then let me get the Jenkins info reference because I get those pull requests all the time upgrading LTS plugins. Upgrade LTS. See, maybe it's called plugin upgrade. Sorry, I'm having to look, have to look in trash. I may have thrown them away just a minute. Maybe the word is update. English is too fluid. It allows too many synonyms. Okay, I will have to take a separate action item. I'm not finding it in my search and I know I get them all the time. Plug in update. Jenkins, infra, plugin update. I am so sorry, I'm not finding it. I know that I get this message all the time. And so I'll, I will let me take an action item to gather that. And if you're willing to actually let me paste my email address. If you're willing to send your email address to mark.url.weight at gmail.com and I'll share the link to the Jenkins info repo. There we go. And I am feeling awkward now because I should be able to just find it. Let me look for it with a slightly different technique. It always happens when you're trying to do a demo live. Right. That's the price I pay. So I think it may have the word Docker in it. Ah, yes, there it is. Okay, good. I found it. Okay, so if we look at this one with Docker. Yes, I found it. Oh, I'm so proud. Okay, good. See the Jenkins infra LTS upgrade process. At this thing. And I'm going to go ahead and share my screen and let's take a look at it just so you can get a sense of how it operates. So here is the, you should see the Docker Jenkins LTS repository now. Do you see that? I do. I do. And in the .github directory, here is. So in the .github directory we have three workflows enabled. So it depend about is here that runs GitHub actions. And then in the workflows, we've got update.yaml, which does this operation. Let's see. So it generates the token and then it runs on the update plugins branch, this operation here. Oh, no, here it is. It's this one. It's this Jenkins infra UC. This tool is a thing that looks at plug-in lists and generates an update to them. And the result is written as one of these pull requests. So here it says chore dependencies, update plugins and what happened is it's proposing a change from warnings ng9.2.0 to 9.2.1 and from workflow CPS global live 2.20 to 2.21. And a human being didn't have to do it. It just did this on its own. This is gold for my eyes. Great, great. That's excellent. Thank you so much. Well, and for me it was, this is work that Gareth Evans did as part of Jenkins infrastructure and it's been absolutely wonderful for us. It helps us maintain things better and keeps us up to date. Mark, one more question. Does it update each plugin to the latest version or some particular version? So the thing it's proposing is it proposes the most recent version but it's a little more sophisticated than that because it's proposing the most recent version that is supported with that Jenkins version. Okay. So for example, it is perfectly legal for a Jenkins plugin to declare that it requires as its minimum version, version Jenkins 2.299. And when I try to install that from the latest LTS, which is 289, it will correctly say, no, you can't have that because it's too new. It requires a much newer Jenkins version and this tool will not offer that update because it's not supported with the Jenkins version that is trying to match. Okay. Yeah, so very good question. Very, very good. So there's Intel behind. There is and that same intelligence exists in that plugin installation manager tool that I was describing earlier. Right, it does the same thing in order to help, in order for it to make a recommendation you must tell it which Jenkins version you're targeting and it will then use that information to provide the list for you. Cool, cool, very cool. Yeah. In your case, Valentin, if you are not using GitHub, you should be able to look at the implementation. Yeah. Right. Of the GitHub action that Mar share. Yes. This is implemented in using Docker. Okay. It's a go application actually. So you should be able to use this implementation on your side as well, regardless you are using GitHub or not. Okay, okay. I will be looking into it. Well, and Marcel makes a very good point that most of these things are done exactly that way, right? Where this, let me share that screen again just to show because it's good to, so if we look at this update plugins pull request and we go look at the repository in the .github workflows, there's this entry that says Jenkins info slash UC. Well, guess what? That as Marcel correctly noted is just a Docker image. This is image. And if you say, oh well, where is that coming from? Well, guess what? It comes from a repository in Jenkins infra called UC. Yeah. This is what Marcel posted into the chat. Oh, oh, very good. Okay, great. Yes, so there it is. And this, yeah, it's perfect. Thank you. Oh, yes, there it is. Thank you very much. Thank you Marcel. Cool. Yeah, that's how I learn things. It's an occasion I look at the GitHub actions that people are using. Not that I'm using GitHub actions. We use Jenkins, right? But yeah, it's an occasion I learn how people are doing certain things and if it's not, yeah, if it doesn't fit on my infrastructure, I just adapt it. Excellent. Very, very good. Thank you. Thank you very much. Yeah, thank you. Are there other topics that we would like to touch on or other things that come to mind as a question? I think I'd like to add something. So, yes. So as a newcomer contributors, some of people would not know that how to go and check out all the available GitHub channels that Jenkins has. So I think if I paste the link for Jenkins ci.com on the chat, so people can look at it obviously those who are present in the meeting right now. So they can look at it and join the available GitHub channels that they like to be. That's excellent. Let me, I'm gonna go ahead and share the screen so we get a screenshot of it. So what this shows us is, or dear Raj, maybe you can describe what we're seeing here. Exactly. So these are the Gitter Chat channels, right? That are available to Jenkins users. So if you've got a question about configuration as code, there's the channel. If you've got a question about, let's see, what's a, oh, we've got lots more to go through. Let's look for the plugin installation manager tool. Yep, there it is. Or maybe you've got questions about the Jenkins Git plugin. Here's a group that focuses on that. And it looks like there are many, many, many chat channels all focused on different parts of using Jenkins. Thanks, dear Raj. Good suggestion. I might stop share ago. There we are. So I'd like to share one very small experience that I think might help someone who's, who's in the same position at me that has been new to contributing. So when I was learning about configuration as a code plugin, I was very, I still am very interested in it because it works like a magic to me because, so it's really cool. So I came across one technique that in order to configure the plugins using Jcast plugin, we need to know it's YAML syntax, right? So everyone does not know how to write the correct YAML syntax for configuring a particular plugin. So what they can do is go to, their own Jenkins instance and configure it and come back to the YAML file and then copy paste the code. So I know it will not make sense to someone who's new to this. The, I'm trying to guess that one on Girechana know that who, who is it me? And I assume that people would know this very easily. So the point I'm trying to make here is that there's always something that you can contribute from your end. And if it's not going to help everyone, it's going to help someone for sure. So you need to volunteer and bring the idea to the Gitter channel. And we can discuss more on that and we can put it and publish it if it helps anyone. So welcome for the contribution from that area as well. Excellent, well, and Dheeraj, Dheeraj you did a great blog post actually and a video on that configuration as code experience, right? And that blog post and that video were good highlights that, hey, the experience can be much simpler, much easier if you use these techniques. Exactly, and I will post myself by saying it has more than 400 views now. Congratulations, that's great. So your video, your video's being seen. That's very good, excellent. Yes, it feels good to know that people are finding it helpful. Now, I believe several of you had noted that you're on the way to pipeline. You've got a mix of freestyle jobs and pipeline jobs. If you're okay with it, I'd be happy to do a brief demo on some things that I think you ought to be aware of as pipeline capabilities so that you don't miss these capabilities as you're considering, should I try pipeline? Would you be okay watching a little demo, letting me go through and talk about pipeline a little bit and trying to sort of introduce the concepts and then show some demonstration of what you can do with pipeline and what many people may miss as capabilities that are available in pipeline that they didn't realize were there. Yeah, that'd be good. Okay, cool, so Marcel, any question from you or concern there? Yeah, I have to go now, sorry that I have another meeting but I would like to ask, so I believe someone mentioned you're gonna be a demo on this pipeline graph view plugin? Later today? I think that's later today during the, I believe the pipeline graph view plugin will be shown during the, oh dear, what's the title? During the Ignite talks and demos. Okay, that's an entry on the agenda, right? Although if you would just like, yes, it is an entry on the agenda. It's scheduled to start in about, let's see, we're at 10.30 now, so eight, nine, 10, 10.30. So it's scheduled to start in about 90 minutes but Marcel, I can also paste a link to you for you of an existing demonstration of pipeline graph view that we had a video of. That way you could even look at the video separately if for some reason you couldn't come back to attend the Ignite demo. Okay, yeah. Let me see if I can find that really quickly here because that should be pretty easy for me to find as a video, I posted it to colleagues at inside my company some time ago. Pipeline graph view. Am I, Dheeraj, am I getting the name right? Is it, it is pipeline graph view plugin, right? Yes, there you go. Pipeline graph view, yep. Right, okay, and now where is the video of it? Pipeline graph view for, pipeline is, okay, so I've got to look for it a slightly different way, youtube.com, Jenkins playlist because what it was was we had the author of the plugin presented it in a brief demonstration I'm getting feedback. Is anybody else getting feedback? Yeah. All right, so we'll continue. Yeah, sorry about that. I don't mean to be echoing. Okay, so let me see if I can find that just really quickly because it should be in the playlist. Yeah, we have, we are, we are using it. I intended, I intended to use it because I wanted to use it for a long time. I intended to ask questions about some limitation. Yeah, some limitation we just implemented a new pipeline and we found that the parallel execution of several stage they don't show properly even though on the classic view it is presented properly. Okay, so maybe this is a limitation or something so I intended to ask. Perfect, if you're already a user of it then this video I was going to link you to is no help. So about 90 minutes from now, join the ignite session and we will look for the demo there and you can ask your question there. Perfect, thank you so much. Thanks Marcel, thanks very much for joining us. Have a great day. Thank you. So I was going to go ahead and show some things relative to pipeline. Let's first give a brief, I guess a simplest way to say it is a brief look at some of the concepts around pipeline. And let me see if I can find my slide deck to share. Not that one, too many tabs. Ah, yes, here we go. Okay, so this was just a very beginning kind of thing. So the idea here is that Jenkins, whoops, copy the link in case you want the slides. There's a copy of them. These are no way polished enough to be claimed to be perfect but they're a beginning. So you're familiar, oh, present. With pipeline, with freestyle jobs, we configure them for the web browser. It's really easy to do. We store them inside Jenkins, makes them easy to change but it's not nearly as easy to see what's changed or why it was changed. And we don't get a lot of help from people. They just made a change and they went on. And it's strongly dependent on plugins. And if a job starts, if Jenkins stops, the freestyle job stops as well. There's no way of continuing it to run across a Jenkins restart. Jenkins pipeline jobs are configured from a source repo. So you configure them as code. They're right inside your source repo so the job definition is not embedded in Jenkins. Storing it in your source repo makes it easier to maintain, easier to see what's changed and gives you get comments from the people who made the changes. So it's using a pattern you're accustomed to and it puts the burden of the work predominantly in your build scripts instead of requiring that you find a wide set of Jenkins plugins. So they're also able to continue running across a Jenkins restart. They're able to run in parallel. They're able to run on multiple agents and they're able to run with multiple software configuration management systems in various interesting combinations. Very, very flexible and very capable. So there are two domain specific languages that are implemented in pipeline. One is declarative and the other is scripted. Declareative is the second generation of pipeline language, if you will. It's intentionally simplified, intentionally designed to be managed and read and implemented by people who may not be precise programmers. Scripted looks an awful lot like Groovy code. It's a DSL that's derived from Groovy. It is more difficult to read but it's got a larger feature set. And now for me, the cool thing about this is that these domain specific languages are dynamic. The keywords that are used in the languages, the steps or the tasks are defined by the set of plugins that you have installed. And that means the pipeline snippet generator and the directive generator can let you use exactly what's in your system. Now it's time to stop the slides and let's get to a real demo because this is where I think it matters the most. So let's look at my Jenkins installation. Whoops, wrong one. My Jenkins installation here. Okay, this is a real Jenkins installation. It's Jenkins 2.289 pre-release. It's got 30 or 40 agents connected to it. Some of them are dynamic from the cloud. Others are here and there and everywhere. So a real Jenkins. When I want to define a new plug, a new job and I want to put pipeline into that repository, I just click open blue ocean and click new pipeline. And now it asks me, which, where do I keep my code? And, okay, Bitbucket, Bitbucket server, GitHub Enterprise, GitHub or just Vanilla Git? And in my case, let's see, do you have a preference? I think I've got accounts on most of these. I don't have a GitHub Enterprise account, but the others we could, you want to use Git, would you like to use GitHub? So, Valentin, let me ask you, which repository management system are you using? I'm using Bitbucket. Okay, good. So let's use Bitbucket cloud. Okay, now I've got to get some username and passwords. So for this, I'm going to go to Bitbucket cloud. Let's see, and so Git, Bitbucket and I may have to turn off screen sharing briefly if it prompts me to enter a password. Let's try continue with, oh yeah, let's try this just to see if it's connected to my Atlassian account. That way I didn't, okay. Now I have to insert my security token.  Yes, okay, good. Here we go. All right, so now let's look at various repositories. So here's a repository. Now this one already has a Jenkins file in it. So it's already defined. We can just use that one and let's try that. Or if we would like, I could create a new repository that doesn't have, let's see, maybe we should, well, let's take that one. So I need to get a username and for this, I need to copy my password. Okay, now I'm going to temporarily suspend sharing in case it were to publish this password visibly. So just a minute, stop share. Okay, and I think I'm marked up URL.wait. Okay, and it did not show my password in plain text so I can start sharing again. We've got a new visitor, Abhishek. Thanks Abhishek for joining us. So now I'm going to share my screen again and let's look at, okay, so here let's try this connect. We'll see if I got the right password, et cetera. Connect, hmm, I'm not seeing what I wanted there. I wonder if maybe I gave it a bad password. Let's check my account here because it may be, Valentin, do you remember, does Bitbucket require that I use something other than my email address? Maybe I should check my profile, huh? I'm not sure, I think username and password is the thing that you need. Yeah, so okay, so let's see what I've got as my username. We're going to try a different username and if this doesn't work, we'll try, we'll switch to use GitHub. Okay, so there it says invalid username or password. At least a feedback. Yes, exactly, so we're going to switch. I'm going to use GitHub for this one, just for the moment. It's okay, yeah. This one, I know it already has my credentials in it. So here, if I use GitHub and say marquee wait, now it lets me choose one of the repositories and so for instance, I could choose the repository name Bin or I could choose some other one. Let's see, how about, let's go looking. Let's take Bin for now, Bin and create pipeline and it's going to tell me on this one, oh, I've already got a pipeline, I'm going to start using it. But then we're going to use this exact same set of tools to edit that pipeline and make some changes to it. So it found not just my master branch but also two other branches and ran work on those two other branches and here, one of them's already finished, the other one's finished and there we see it. This is all just part of Blue Ocean. And pipeline graph view, the one that Marcel was referencing gives a similar view to this with a much lighter weight, still very, very new environment. So here we've got this, notice in the top right-hand corner there's this little pencil icon. So I can click that pencil icon and it puts me into an editor that lets me edit my pipeline. So here is the build step that I defined and it has a message that says building and I'm going to say building the master branch because I'm on the master branch, I'm going to save and now I'm going to go back here. In the test, it says print the message testing, I'm going to say the master branch and it adds a warning badge and then I've got a deploy step where it says, oh, let's save the artifacts. All that I can do from this Jenkins Blue Ocean interface, it's that simple.  And here we are going to add a step that is print the message second test step in parallel. So there's test and maybe we should rename this one instead of test, let's call it first test. All of this directly from the Blue Ocean interface. So I am, here I am defining my build pipeline in a graphical experience that lets me just add things where I need to make comments, et cetera. Now I'm going to save it. And in this case, add a parallel test, change the messages. And I could commit it to a new branch or I could submit it right to master. Either is fine. Do you have a preference? Which would you like, master branch or a new branch? Master branch. Okay, a master branch it is. We're going to save it and run it. So now what we will see now is that if I look at the master branch, you look there's a run number one. And now as I go, oh, there it is. Build number two has started. If I look at number one, you see it's a linear flow, build, test, deploy. Now if I go back to bin two, there's my build, first test, second test and deploy. Now ultimately, most users may not even actually look at these views, right? They may say, look, all I want to know is that the thing finished and published a result somewhere. I don't care about the pretty view, but for me, I find it helpful to do my initial layout of what steps should be in my pipeline from this user interface so that I don't have to worry about exact placement of braces, exact where does everything go? This gives me, now, and if we look at my repository here, we'll see this as code. So let's look at, on my GitHub account, we're going to look at the bin repository. So let's grab one of these and we'll just rewrite it. And here are my commits. Add a parallel test, change the messages. And there it did all this changing for me without requiring that I go into a text editor and do it. So it feels as smooth and easy as a Jenkins freestyle job. And yet it's represented as code inside my repository. Cool. I have a question. Yes, go ahead. The question is, is it possible to run this configuration without pushing your changes to the Git server? Oh, that's a very good question. And the answer is yes. It's okay. So now that's, I would call that almost an advanced topic, but I'm going to go ahead and show it to you if that's okay. So let's use, you would say, well, what if I wanted to just experiment with something and not commit to the repository? Here's this replay facility that shows me, hey, here's step number two. And I realized I shouldn't call it master branch because when I'm on a pull request, it won't be correct. So building, testing, second test, let's see, first test. Yeah, so, and then deploying. Yeah, there we go. So I have changed it. I'm going to say run. Now what we'll see is it's going to do the checkout. It'll, okay, these, I have to admit the steps are all very, very fast, right? Because all they are saying messages. But now if I go open blue ocean and look at that thing, let's look at the message here, building. It didn't say building. So my change was there, and yet I never deployed it to the repository. So this replay button gives me the ability to do dynamic tweaks, to do rapid explorations. Okay, but you make these tweaks in a text editor and not in the blue ocean interface anymore. That's correct. I think so. And I've never tried to do a replay in blue ocean, but I don't think I can. So let me double check that because if I go back here, let's look at number two. And there is a see this rerun button. But when I click the rerun here in the top right hand corner, my recollection is all that does is rerun the job exactly as it was defined. So I'll look at three and here's three. And if we, and now guess what? Four will be available very soon. And there is four and four uses two. All right, so I rerun four and it rerun two and it did it as a new job, a new version, a new number four. So yeah, there is in a way in blue ocean to do that interactive rework and not save to the repository. Okay, cool. It's new for me. Now, there's another really what I think of as, okay, this is, so you remember we were here in replay. See this link at the bottom, this thing called pipeline syntax? That is magical. I'm gonna click that and we're gonna look to see just how magical that is. So in the pipeline syntax link, it opens up a snippet generator where I decide which step I wanna try. Oh, I need to run a Windows batch command. And I would like that to say echo hello world. And then I want it because it's Windows, I want it to say dir slash OD. And by advanced settings, I would like the output to come back as UTF-8. And I wanna know the return value of this thing. So I want the exit status, oops, UTF-8. And I want the return status. So I just with the user interface described what I want to do, right? Interactive clicking to describe what I want to do. I click this generate pipeline script and there it is. Now I can copy this. I can go back over here to replay. And now I have to do some additional things because I gotta be sure that I run on Windows. And now I'm going to insert in there that thing that I just did. So I have just taken code that it generated for me, pasted it into my script and now I'm gonna run it. And now let's watch it to see what happens. Let's see if I'm any good at writing Windows batch commands. So special thanks to my daughter who donated her computer to let me use it as an agent after it got old. Now you can tell that it's old because Nate, notice how long it's taking to clone this relatively small 60 megabyte repository. But this pipeline syntax generator lets me choose what I want to do and then it will generate the code for me. And now that one that I just did was actually relatively simple, right? Oh, okay, it's not hard to write a batch file. When you're doing a checkout and using all of the options of the Git plugin, it's really painful if you don't use the snippet generator. So we're definitely going to use it for this one. Let's, oh, we'll go after a public repository. We don't actually need to authenticate. So now there may be additional settings that I want to add like, oh, I need the advanced clone behavior to not fetch tags and to honor the initial ref spec. And I want to time out in three minutes if it doesn't finish on time. And I need to use a checkout to a specific local branch. I'm gonna name that branch master. All sorts of things like that. And I could keep adding those. And guess what? When I generate the pipeline script, there is all the magic that I needed to do that job. So now if we go back here, we should see, ah, notice, here's that your member, I gave it echo hello world and durr slash od. There it is. So, so pipeline snippet generator is a great way to make your life simpler. It just is. The same thing exists for declarative directives as well. This one where we say, I need to in declarative decide I only want to run on specifically labeled agents like one with the label windows. Generate that, and there it is. And now I could have pasted this into that same replay. Any questions so far? All right. So you have been very tolerant of almost three hours of this. Thank you very, very much. I would like to be able to attend the next session. And I believe it's scheduled to start in about five minutes because I want to talk about Java 11 with others. Any questions you've got in the last five minutes before we end? Hello, Mark. This is Sudesh over here once again. Yes, Sudesh. Hi. In the pipeline script, can you please help me know if there is a requirement for a restart? How can I implement that? So restart from a particular stage. So you want to do a programmatic restart from stage? Yes, that's right. So let's consider you have a build stage and the test stage, right? So in the build stage, like if let's consider that the build stage is successful and the test, there is some failure in the test phase. So how can I ensure that in my next run I don't build it once again, but I resume from the test. So that's a good question. Unfortunately, I'm not sure, Sudesh, that I know the answer because I'm used to using restart from stage at this level. And then now if I remember correctly, we may have to ask Darren Pope or some other friends with more pipeline experience. I suspect what you need to do is in preceding stages, you need to stash the results of that stage so that you can un-stash it, stash or archive the results of that stage so that you can un-stash it in the later stage. So let's try that, shall we? Should we do a little experiment? Thanks, Mark, yeah. So I'm gonna do a run of, oops, there we go. So with this number six, it's saying we restart from stage and it's still doing the get fetch. So I'm not sure how to guarantee you that the restart from stage does not perform the work. Oh, here it is, actually there we see it. Okay, it's showing it. It skipped the build stage and assumed it could run right into test. So restart from stage did do what we expect here. Let's look at it in blue ocean to see. Yes, okay, good. So it did do the skip. So the crucial thing for you Sudesh then is that what that means is you must assure that the build stage has archived its results either through a repository archive like to an artifact or a nexus or through a stash if the results are relatively small and then that you in the test phase un-stash and that's important also because it's possible for a build stage to run on one agent and this parallel test thing to run on two different agents and if you have a dependency on the build results in the test which most of us do you want to have saved it in the build and then un-stashed it or restored it in the test. So here let's try that and let's use our techniques here. So we're going to add a step which is a stash. Let's see, and is it called stash? Yes, stash some files to be used later in the build and the file we're gonna stash is readme.md. Although that one's already, no, what we need, we need to do something that's visibly not there. So how about we would, in this, we're going to create a file and we're going to do that with a shell script. S-C-P, readme.md to readme-new.md, okay? And get clean, before we do that we're gonna do a get clean minus X FFD. So we get rid of anything that might have already been there. So this file is the one we're going to stash. So we add a step to stash and we're gonna stash that file. Now in the test stage, we need to do an un-stash. Oops, maybe they call it restore. Yes, restore files previously stashed and we need to do that in second test phase as well. And I apologize, S-C-P, we're going to run out of time. I'm gonna have to, but let's just do this for fun. I think we should be able to see it and let's watch it. So just to assure that this, there we go. So we've got a stash and un-stash or a restore and a restore. So save that, stash of file in build, un-stash in test. Okay, and this will very shortly launch. So there's six branches. Oh yes, master is building. So there it restored the file and here it restored the file. So did that address your questions, Sidesh? Yes, thanks Mark, that was exactly what I was looking for. Thank you. All right, thank you very much to all of you. Thank you for being part of the Jenkins contributor summit today. I'm gonna drop off and the session recording will make sure it gets uploaded so that it's available. Thank you very much, Mr. S-C-P. Yeah, thank you very much. Thank you everyone. Thank you for joining Dheeraj. Thank you and have a good night's sleep. Thank you everyone. Aditya likewise, it's midnight your time or worse. You're both heroic, thank you so much. Thank you very much. Bye everybody. Bye. Bye bye. Thank you. Take care, bye.


Hi friends, welcome back to my channel and a very special welcome. If you're new here, my name is Jen. I'm a certified weight loss and nutrition coach and today, today we have a affordable clothing try-on haul while we're losing weight, while our body is changing. We don't wanna spend a lot of money on clothes but we still wanna be cute and stylish and have our closet full of pieces that we love. So today I am doing a try-on haul, first impression review from the online brand, She-In. Now we know that She-In is a really affordable clothing line and everything I've ever purchased from the line is really high quality, not to mention a fantastic price and really a staple when you're on a weight loss journey to keep your closet full of cute clothes. So I can't wait to share with you everything that I picked up from She-In and thank you to She-In for sponsoring today's video. I'm really excited to be working with them. I've purchased from She-In myself several times. I've actually have a couple other hauls here on my channel, I'll link those down below for you and I'm really excited to get into this try-on haul.  Subscribe if you're not because I upload five videos a week and I do a lot of try-on hauls of affordable clothing, sometimes dedicated videos, sometimes I share my outfit of the day with you so definitely subscribe and turn your bell on so you don't miss it. Check out that description box for all of the pieces that I'm sharing with you as well as a coupon code. Use the code GENCLAYTONFORTONEXTRA 15% off-site wide. So an extra 15% off the already super affordable prices, you can't beat it. So I'll put all of that information down below for you as well as nutrition coaching and my Facebook group, come join us there, we would love to have you. So let's jump into this She-In try-on haul. The thing you might be wondering is what is that really cute top that you're wearing? Yes, this is one of the things that I ordered from She-In and I love this top. It is so cute, it is so comfortable. She-In has a subsidiary brand called Emery Rose and I've ordered from She-In's website and purchased the products from Emery Rose before. They're a little bit more elevated, a little bit more high end from She-In but still the price is absolutely insane affordable. This top is the striped print halter top. It actually comes in four different colors. It is $6.99 in sizes small through extra large. I picked mine up in a size large and it fits me perfectly. I love the halter style. I feel like halter style tops are so flattering on everybody. It accentuates the shoulders. It's just very, very figure flattering and who would have ever thought I would wear a white tank top with stripes going horizontal? I never thought that I would but I actually really love this and I think even though it is white and it is striped it is very, very flattering and again it does come in four other colors as well. So I paired this cute little halter top with these shorts. I love denim shorts. They're so versatile. You can really wear them every single day. There's so many different washes of denim shorts. There's distress, there's not distress.  There's a little bit of something for everyone.  These are the ripped Rahim denim shorts. They're $12.49. They come in a light wash and a dark wash. I have mine in a size 32 which is a size 12. They're snug. I normally wear a 10 or a 12. I can even wear eights in some denim. These do not have any stretch at all.  I can wear them and especially after my plastic surgery when I get rid of the loose skin on my back that'll make my around a little bit smaller and I think that they'll fit perfectly but I will say that they are very comfortable. I like the length of them. They can seal my loose skin on my thighs a little bit and I love a good distressed denim short. I think that they're very, very flattering and they're really nice quality. So if you're between sizes because there's no stretch, I would definitely recommend sizing up. And we know that these sweater type of tank tops are all the rage this season and I've been really loving pink and purple. Those have been colors I've really gotten into. So when I saw this tank top, I fell in love with not only the color of it but the fact that it was this knit sweater vibe which like I said is super, super popular right now. The front of this is the most soft, luscious material and then the back of it is a little bit more of your cable knit sweater material. This is the Space Die Tank Knit Top. It is $9.99. It comes in about a dozen colors in sizes small through large. I picked mine up in hot pink and I did pick mine up in a size large. So I like the style of this because you can see and you saw in the try-on haul that the sides dip down a little bit further so they conceal your tummy area, your hip area if you carry some extra weight in your hips it's going to conceal that and it is so comfortable. I love how buttery soft the front of this is and I like that the back is that cable knit sweater. It's a little more stout. So for me it conceals a lot of the loose skin on my back and it's just really comfortable, very soft, very lightweight and even though it is a sweater material it's definitely a light enough fabric for summer and I decided what better to pair this cute little tank top with than a denim skirt. Now I actually don't own a denim skirt and I've always wanted a denim skirt. I just didn't feel comfortable wearing a denim skirt before I lost my weight and now that I've lost my weight I feel like it's time. It's time to really rock all the cute denim. This skirt does have some stretch in it. I love the length of it. It is not too short. It's not too long. It's literally the most perfect flattering link. It does have that tiny bit of distressed hem but no other distressing on the skirt itself. This is the high-waisted raw hem denim skirt. It's $14.49 comes in sizes extra small through large. I have mine in a size large. Like I said, they're stretch. So this would even fit you if you were an extra large. There's definitely some give and some stretch and I love the length of this. It is the perfect flattering length and I thought it was pretty cute with that sweater tank top. I can definitely see myself wearing this a lot when I just wanna be a little dressy but not overdressy during the summer. As soon as I saw this on the website I absolutely fell in love with this and it certainly did not disappoint. This is again kind of, I wanna show you up close like a waffle type of material. It's in this really pretty olive green. It has these scalloped batwing sleeves, a hood which I appreciate and then it has these cute tortoise buttons. This is the half button batwing sleeve hooded tee. It's $10.99. It actually comes in four different colors and sizes small through extra large. I picked mine up in a large. I definitely, definitely could a size down to a medium. It is an oversized fit but it is so cute and I have been wearing long-sleeved and short-sleeved tops to boot camp and I thought this would be perfect for boot camp. It would be perfect to wear as I walk to the gym on those days where it's not cold but not hot kind of right in the middle. This is perfect because it is short-sleeved and because it is that waffle material it allows some air to flow through. I love this. I think it's very, very flattering. I love the hood. I love that it has the cute little drawstrings. I never thought I would like a batwing top. I always thought that batwing would make me look big and boxy. This does not. This is so incredibly cute. I love the color of this. I definitely want to grab a few more of the colors. And then I had to pick up a pair of jeans from Sheehan. I haven't ever purchased jeans from the company and I wanted to know how do they fit? Are they true to size? Are they good quality? So I did decide to pick up a pair of jeans. I love the waist of these that there's the button waist with the zipper. These are a little bit more of a flare leg jean. They are a washed material so they do go from darker to lighter. There is no distressing on them really and they are so stretchy. These are the Slant Pocket Bootcut Leg Jeans. They're $12.48. They actually come in four different washes in sizes extra small through four X. So these are available in plus size as well. Sheehan has an amazing, amazing plus size section. Honestly, most of the pieces that I'm sharing with you, they're going to have them or something similar in the plus size section as well. So check that out if you do wear sizes that are larger than a traditional small through extra large. But I love these jeans. These are so flattering. I've always thought bootcut jeans were flattering but these are comfortable. The quality is very nice. These would be $50 or $60 jeans and they're $12.48. But to pick up a couple of the other washes just because they're so comfortable and so high quality. Now, speaking of jackets for bootcamp, like I said, I live in Arizona. It's hot here in the summer but right now the mornings when I work out at 5 a.m. and we do work out outside are usually between like 50 and 60 degrees. So it's still jacket weather but not heavy jacket weather. And I saw this jacket and I had to get this. This is so, so cute and perfect to go to bootcamp, to wear walking to the gym, to wear on those little bit cooler days. This is the Contrast Mesh Drawstring Hooded Sports Jacket. It's $12.49. It actually comes in black and white in sizes small through extra large. I picked mine up in a size large which is the US 8 to 10. I love this whole mesh vibe on the sleeve. There's a hood which I appreciate and it's just a very lightweight flowy jacket which is perfect for bootcamp. I always reach for a zip style of jacket because I don't wanna have to worry about pulling something off over my head in the middle of my workout. I can simply take this off. I can simply unzip this and take it off. I love this. I can actually see myself wearing this with jeans, denim shorts and just for that more athletic, comfortable style. This is adorable. I also think I'm going to pick it up in white. That's how much I love it. Like I mentioned, I've been loving purple. Purple and pink have kind of been my vibe lately and I saw this super cute tank. It's an eyelet design so you can see that. It is so soft. It's a really soft, silky material. I like that it's that muscle style of tank top. I find halter tops and these muscle style shirts are really, really flattering on most figures. This is the solid eyelet embroidery tank top, $7.49. It comes in nine different colors. I have mine in purple, sizes small through extra large, mine's in a large and I love it. It fits me perfectly. I feel like this is a day-to-day top that you could wear to the grocery store, on a girl's day, on a date night, but you could also wear this to the gym as well. So I feel like it's very, very versatile and I know that I will be wearing it a lot. I love the length of it. The quality is very nice and the material is nice and soft. How cute are these shorts? These are cargo shorts. I have always, always wanted a pair of cargo shorts and these ones, I love them because they have some elastic in the waist so they are very, very stretchy. These are the Icon Flap Pocket Cargo Shorts. They're $11.99 and they actually come in black, gray and a tan color in sizes extra small through 4XL. So this is another item that you can get in plus size. These are really, really cute. I love the cargo pockets on the side. Like I said, I love that it has this cute tortoise button and lots and lots of stretch, but from the front, you can see that the stretch is not on the main panel. So it looks really nice and dressy. They are a little bit on the shorter side. You know, I have quite a bit of loose skin on my thigh so I was a little nervous about these riding up or just showing that loose skin but honestly, they're very, very comfortable and I've worn them several times and really do like them. I would be happier if they were a bit longer. The quality of these also is very nice and I will say that they are a nice, lightweight material, perfect for summer. Sheen also has a lot of two-piece sets where you can get skirts in a top or pants in a top and you can buy everything together that matches and pairs nicely, which I appreciate. Sometimes it's hard to put clothing pieces together and make them look good until the fact that you can buy a pre-matched two-piece set I really appreciate. Along with purple, along with pink, you already know how much I love a bright orange and I saw this little two-piece set and thought, I need that in my life. I love the color, I love the style and let me just tell you, this is so cute and so comfortable. I feel like I'm wearing pajamas. It is that silky kind of rayon material. This is the DK Solid Knit Shoulder Top and Shorts. The two-piece set is $15.49. It actually comes in red, the orange color that I got and a pink color, in size is small through extra large, mine is in a size large and I love it. It is flowy, it is comfortable, it literally feels like pajamas. I love that the shorts have this kind of ruffled, stretchy waistband, nice and flowy with pockets and this knotted off the shoulder vibe of this shirt is so cute. This is definitely beach wedding vibes, date night, girls' day, out and about during the summer in town, going to the beach, it is so comfortable. I thought this would be great with your bathing suit underneath as well. I really, really love this and again, this is another thing I feel like I wanna grab a couple more colors in. Now speaking of date nights, girls' night out, girls' days out, beach weddings, summer weddings, I did decide to grab four more dressy pieces. I also wanted to test out Sheehan's quality in their dresses and the fit. Some of the dresses and rompers that I picked out have no stretch, so I was curious, are they true to size? That is something that I see questions a lot about Sheehan is do their pieces run small? So I wanted to test it out for myself. So first is this adorable polka dot dress. Again, the whole halter style vibe, you know how flattering I think this is. I love that this is black and white. It has this nice little ruffle around the waist and this double ruffle at the bottom. This is the polka dot frill trim ruffle hem halter dress for $13.99. It actually comes in black, a burgundy color and a green, insides is small through extra large. Now I picked mine up in an extra large because no stretch, this fits me great. I probably could have gotten into a large but I like that this is a little more comfortable, a little bit more flowy and knowing that there was no stretch, I decided to size up and I think that I made the right decision. So if you're between sizes, I would probably size up on this just due to the non-stretching material but I love how comfortable this is. The length of this is perfect. It is dressy but it is also cute and casual enough that you could wear just daily. And again, the halter style, I love that. There is a nice zip in the back. So it is definitely high quality material which I was pleasantly surprised at and I just love the whole style and vibe of this dress. Beautiful is this blue color. This is a cobalt blue. I fell in love with the color instantly and I liked how unique this piece was. This is actually a romper. There is a zip in the back. I appreciate the quality of this. Number one, the quality is really nice. It is like I said, a zippered back not just something that you pull over your head which elevates the piece a lot. It does have this fun panel on the top and a romper short with an additional panel. You'll see how this lays on the body in the try-on but this is the solid zipper back romper. It's $16.99, comes in five colors. I have royal blue in sizes extra small through large. Now I picked mine up in a large which is a US eight to 10. This is the size that I typically wear. This has no stretch. This was tight. This was tight in my hips, tight around. My belly, not tight around my legs and even tight around my upper body. It was a bit of a challenge for me to get it to zip up. I would 100% need to size up to an extra large which the biggest that this goes is the size large which is a little bit disappointed, disappointing that they don't have any larger sizes. However, it does fit me. It's still comfortable enough to wear. It's just a little bit on the snug side but I love the style of this. It's such a unique piece and I love that it comes in all these really fun summer colors and this blue color, this royal blue stole my heart instantly. I'm definitely going to be wearing this this summer and like I said, once that skins off my back it'll probably be even a little bit more comfortable but overall the quality, the style, everything about this I love but I would definitely size up. She's a gem. I absolutely love everything about this. I love the style. I love the pattern. I love the color. I love this panel in the middle that is this more crochet that you can see little pop of skin through. This also has adjustable spaghetti straps and the zip back. This is the VK floral print lace insert ruffle hem cammy dress. It's $14.99. It comes in this beautiful red color as well as a mustard yellow in sizes extra small through extra large. I have mine in a large and it fits me really nicely. Now it is a little snug around the under the boob area which it's supposed to be. That's where that crochet panels falls. I love that you can adjust the spaghetti straps because my shoulders are pretty small so I had to adjust it to have it lay nicely on my chest. I love the little ruffle detail at the bottom of the dress. It is so nice. It is such nice quality. Again, no stretch at all so make sure that you get your accurate size. If you're between sizes I would probably size up just to be on the safe side but I love this. This is beach wedding. This is date night. This is Jen would wear this every day. I really love this. And again, the fact that it comes in a mustard yellow I love a good mustard yellow. I may pick it up as well because this is kind of a quintessential summer dress. And then last but not least how fun is this little tie-dye romper? I love rompers. I live in rompers. I post a lot of pictures in my Facebook group on my Instagram and I'm pretty much in a dress, a romper or denim shorts. So when I saw this one I loved the style of this. It is the off the shoulder style romper. It does have a little drawstring waist. It's short and it is the kind of a tie-died pattern. This is the asymmetrical neck knot waist romper. It's $12.49. It comes in black and maroon in sizes extra small through extra large. I have mine in a size large and I would say that it fits me perfectly. It's loose, it's flowy. This also screams pajamas. It is so comfortable. It's like wearing pajamas but I love that the off the shoulder just elevates the romper a little bit. It is so comfortable. It's more of a knit material. I love the length of the shorts. Love that it is flowy but cinches in it the way so it brings in the smallest part of your body. Really, really, really love this. I could see myself getting the maroon one as well. I'm definitely, definitely going to be living in this this summer. So that is everything that I ordered from Sheehan. Everything that I received is really nice quality. Very affordable, perfect on a weight loss journey. I like that there's a variety of styles. I got a little more casual, a little more dressy. Everything I would say besides the royal blue romper that was a little snug on me and the shorts definitely fit true to size. If you're on the fence, there is a size guide on the Sheehan website. You can also read reviews to know whether or not the items fit true to size but I always like to share my personal experience and opinion with you in these try on videos and again, I will link everything I shared with you down below as well as the Sheehan website and don't forget you can use the code GEMCLATEN for an extra 15% off-site wide. Thank you again to Sheehan for sponsoring today's video. Let me know down in the comments what was your favorite piece and let me know if you're gonna order any of the things that I shared with you today and if you enjoyed the video, give it a big thumbs up. Again, subscribe if you're not. I would love to have you here and I'll see you in the next one. Bye.


Hello and welcome in our virtual booth. Today we are going to show you how easily you can build your own NSM-compatible CNF. I am Miroslav Miklut from Pantheon Tech and I am here with my colleague Milan Lencho who will guide you over the second half of this demonstration. CNF stands for Cloud Native Network Function. You can think of it as any other network function like Router, Firewall or VPN but following the Cloud Native Architectural and Operational Principles. Including Lifecycle Management, Agility, Resiliency and Observability. The CNF is usually packaged in a container image, can be deployed in a Kubernetes environment and supports declarative configuration. Multiple CNFs can be chained or meshed to provide more advanced customer network service. What? A network function in a container? I am in. Where can I get one? There you go. This is the one of the fastest data planes in the world combined with a declarative intent-based control plane called Ligato. And it's for free, waiting for you to hit the cube control run command with the Ligato BPP agent image. That's it.  Now you can connect to the CLI by executing the BPP control command inside that container. And when you type show interface, uh oh, that doesn't seem right. There is only a local interface in this CNF. That might work for a shy CNF which only wants to talk to itself. We would probably want one or more interfaces to be connected to that CNF. There are multiple options how to provide layer 2 connection between containers. You can use projects like Conti VPP, Multus or Network Service Mesh. Now we will show you how to use Network Service Mesh or NSM. NSM is an official CNCF project. It's biggest advantage is that you can run it in any Kubernetes deployment alongside to your preferred CNI. It extends the Kubernetes network model and provides layer 2 and layer 3 service mesh for your CNFs. During our CNF journey we have figured out that NSM provides an imperative SDK for integration with your CNFs. So we have decided to implement an NSM plugin for Ligato which gives you a declarative way of configuring the NSM virtual virus between CNFs. But not only that, when you combine it with your simplest CNF you will get a declarative way to configure not only the virus between CNFs but also the configuration of the CNF. Now that's what we call inton-based networking. Long story short, the plugin sits inside the container where you run your simplest CNF and it is providing the translation in between the declarative configuration and the imperative NSM SDK. Now please welcome Milan Lenca, who will guide you through the demonstration. This example we have a simple chain topology to be deployed inside the Kubernetes cluster. Here on the left side we see the YAML file for the definition of the routing for NSM. So it's just two rules. One, the routing is defined such that the VPP web server is an endpoint for CNF not 44 and CNF not 44 is an endpoint for the client put. By the way, inside the repository with the demo there is a readme file which you can then follow to try it out for yourself. And actually first couple of steps tell you that you need to have Kubernetes deployed together with NSM but this has already been done before recording. But in the readme file you can find links to the documentation of Kubernetes and NSM to learn how to deploy each. Right, so now let's start deploying the ML files, there are a couple of them. So first we actually need to deploy CRD controller for our CNFs. So next once we have CRD controller we can start deploying our CNFs and POTS. So first we will deploy web server, actually inside of its YAML files you can see the declarative configuration which contains just that NSM endpoint and it is inside an instance of our CRD. Now once we deploy web server what happens you can see on the right side. So the pod is created, it includes the VPP which will be our HTTP server but also NSM agent that receives that configuration and based on that configuration it will advertise the endpoint to the NSM control plane. Next we deploy CNF NAT44 in its YAML definition you can see that there is a definition of the endpoint to which the client will connect, there is the NSM client that will connect to the web server and then there is now highlighted the NAT configuration and that NAT configuration references those interfaces by their logical names. So the same NAT configuration could be used regardless of what wiring technology we use but in this case it's NSM. So once this is deployed the NSM agent of NAT44 will request connection from the NSM control plane. The NSM control plane will look at the routing and will determine that it should connect to the web server both once MEMIF interface because they are VPP based and it will create those MEMIF interfaces that will connect to each other directly without even having to go through the NSM data plane so it's a very efficient connection in this case and we can use the VPP CLI to confirm that those interfaces have been already created on both ends. And finally we will deploy client pod with the call. So in its configuration there is just this NSM client definition that will connect to the CNF NAT44 and also there is a route for HTTP requests to be directed through that interface, basically through this data plane connection rather than going through the primary interface which is created by CNI. And so once we deploy the client the NSM agent of the client will request connection from the NSM control plane. The NSM control plane will determine that it should connect to NAT44 but since client is a Linux application, the Dacro is a Linux application, it wants tab interface and tab interface cannot be connected to MEMIF directly so both client and NAT44 will connect to NSM data plane and there they will be linked together using L2X Connect connection. And with that we have the chain ready. We can test it using the HTTP request sent from the client. As you can see we have received the HTTP response from the server. Thank you very much for your attention. We'll be glad to hear your feedback. You can find us on LinkedIn, Twitter or just leave us a note over CDNF IO webpage.


Shadongu kao mwaamu kwaumuniti Shibu, Sifenguementa ar�iningi umagata kumingshengi Ubaru Hmab Talking Na kwaumuniti Sifenguementsa, A PRU, Usmayan Ahmed Sia za hiwa kwaumuniti Yamaaji Maha Chimau Hathiru, Bungu Du, Hazana, Tehole was kidnapped along the Kaduna Abuja Highway in September. He spent 32 days in captivity before he was released. The Bungudu Emir is considered a higher rank than the traditional ruler of Ogeda. Attacks by terror groups and communities in Zamfara have become rampant with hundreds of people killed or kidnapped in 2021. Apart from Zamfara, other North West states that witness similar attacks are sokoto katsina and Kaduna. The attacks have continued despite the heavy deployment of security operatives to the area. According to reports, the traditional ruler Umarubawan Allah has since been buried according to Islamic rites. Well joining us live to discuss this is the Commissioner for Information Zamfara State Ibrahim Dosara. Also joining us with him is the security expert Dr. Kabir Adamu. Dr. Kabir Adamu is also the MD of Beacon Consultant Limited, a security outfit. Gentleman you're welcome to plus news now. Thank you Maureen. Peace and greetings. I wish you the same. Very sad thing happening in your state. Okay, I'm not from Zamfara State. In a neighbouring, I come from a neighbouring state, but yet very sad at the Nigerian. I feel really really bad about this development. So many things are happening in Zamfara, so many killings and kidnappings. How would you, what would you attribute this to?  But that's the issue. There is a constitutional mandate section 14 subsection 2 of the constitution mandates the government to protect the lives and property of every citizen and where there is a failure of that. I mean the responsibility lies dwelling on government and its government is a spectrum. It includes the federal, it includes the states and to an extent the local government. They have one primary responsibility which is to protect us and in this instance we are seeing the failure repeatedly. The issue in Zamfara started as far back as 2012 and we're in 2021, which is how the year is about to end. And frankly we haven't seen any major reduction in terms of the frequency of the fatality as well as the trend models. We are speaking about bandits that are raiding villages and that are killing people. Frankly with an impunity that I have not seen. Would you describe it as a case of a neglected crisis, Zamfara state? A case of a neglected crisis? I wouldn't really call it neglected in the sense that government has attempted to address the issue in particular this current government when it came in, it set up a committee. The committee submitted a report with fire reaching recommendation. I wish the commission was available to tell us Just hold your thought there. I think we've got him back online. Hello Mr. Commissioner, are you online now? Yes, I'm on the line. Good evening to you. Good evening to you and welcome to the news. Thank you so much. The security expert was just saying that he wished you were available to answer this question which I threw at him. Is Zamfara case, the situation in Zamfara case of a neglected crisis because it's been going on for some time. Can you come again? The situation, the insecurity in Zamfara state, so many people killed, so many people kidnapped and as he has said, a security expert that he is that not much has been done and I asked him, is it a case of neglected crisis? Do you share that? No, no, no, no. You know the issue of insecurity is inherited by this administration. And the issue of insecurity started back to 2011 where there was crisis between farmers and herders which falls into the crisis between Vigilantegru and Fulangif. And that degenerated also to the current situation. The government of the day when it came, it tried to make sure that there was reconciliation between the Polani and the answer case who are fighting each other. And at the initial stage the government succeeded. Zamfara stands over a year with total peace without anybody being kidnapped, anybody being killed or anybody being intimidated by the pandemic. But because of the conflict entrepreneurs, politicians and so forth tried as much as possible to engineer the stepping back of the peace process between the answer case and the Polani and that is what did the relationship to the present situation. It was the reason why His Excellency gave the budget an ultimatum for them to re-embrace the peace process and then continue. But unfortunately some of them did not and that was why the governor decided to introduce what we have as Zamfara model of state of emergency. Shutting down the telecommunications network preventing sending of fuel on Jerikan preventing of black marketing preventing of rural areas where bandits used to come to buy fuel ban such sending of fuel in those areas as well as transportation of food and livestock and also closing down the market. And I can tell you that those measures have helped very seriously and very significantly. And then this and then this so what does that speak of this success you're talking about from those measures? Because a monarch has been killed along with other people. I'm just trying to show you how the government of the day has been trying its best to make sure that the issue of in-security is a parasitic circle. And I can tell you the result has been yielded as a result of the series of steps being taken by the government in dealing with the situation. All right. And from the reports we've gotten this very attack the bandits spent hours robbing from one house to another undisturbed. Is there any form of organized assistance of security being provided to the people in these communities? No, that that wasn't the case. Obviously when the report was heard there was a team a combined team of military officers including air force with aircraft bombarding the area dispatching the hoodlands and also rescuing ten people including one-year-old baby who was kidnapped by the bandits. Unfortunately the house of the monarch was set ablaze and the monarch was killed along with two other people. Have any arrests been made? What presently the police and the other security agencies are making fancy efforts to ensure that they arrest the hoodlands and I am speaking to you now a team of the military combined with those of the police and the civil defense are in the forest combing the whole area trying to make arrests of those people that perpetrated the act. Okay, all right please stay on the line while we go back to Dr. Kabiru. Kabiru are you still there? Yes I am Maureen. All right but in recent times the north has been in the news insecurity almost on a daily and several hashtags have sprung up such as hashtag north is bleeding hashtag secure the north What do we have in our hands? From your position as a security expert what do we have in our hands in the northern part of Nigeria? In simple terms we have non-state actors specifically armed groups that are challenging the supremacy of the state both at the federal and at the state level and they've successfully challenged that supremacy like I said that of Zanfarah started in as far back as 2012 and almost eight years down the road it's still ongoing if you look at the north east it's been ongoing for almost 12 years we have a counter-terrorism operation that has been implemented there with a full-fledged army division in fact two army divisions in the north east that are trying to contain and eradicate that terrorism so and all of this are the same issue non-state actors challenging the supremacy of the state now the human index development index in the north is one key element poverty on illiteracy socio-economic grievances Commissioner Ibrahim Dhozara mentioned the relationship between Fulani's hadas and you know farmers Fulani's and houses and how that has contributed to the situation in Zanfarah there are several other factors including mining and its contribution the proximity of the state to Nijar and how that is allowing the influx of weapons across the border drug addiction and several other factors in the north shell these are the kind of psychomsances that have allowed the growth of these non-state actors and their ability by one factor that I forgot to mention which is critical is the existence of so-called ungoverned spaces these are forested areas that are huge and that so far we haven't been able to dominate and deny that they are used by these non-state actors this is where the hibernate this is where when they abduct people they take them to and this is where they are able to operate between states so they are able to move from Zanfarah to Kazina to Sokoto to Kebi and to as far as Nijar through these ungoverned spaces so yeah but that's the knot for you unfortunately yeah would you say that the government is overwhelmed with the situation in the north because you just identified these areas where they hibernate to where they keep their victims and you also mentioned the paucity of the you know the borders which has been a major problem borders are very porous would you say that the government of the day is overwhelmed or the government not even before this government why have we not been able to secure our borders all these years all these decades why are we finding ourselves in this situation today where we are suffering because our borders are so porous enemies are bringing stuff in and out to hurt Nigerians I think it's an element of lack of accountability or you know it's at a very low level where I mean think about it we are discussing the model of a traditional ruler that is well respected I will bet you and you know I'm willing to put some money in it nobody is going to be punished for that no government official is going to be accountable for this debt and that is the issue so I wouldn't use the word overwhelmed rather I think it's because the level of accountability is really really low we are not seeing because of the nature of the northern states where you know the media is not very active the level of relationship between government and the people is at a very low level I mean if this was to happen in a southern state I bet you there will be at least some level of accountability because the media will put bigger pressure the civil society organizations will take actions and so before you know it government will be forced to take that nation but it happened in the north day in day out and nobody is being punished for it so maybe not overwhelmed but the commissioner that lack of accountability commissioner for information yes please lack of accountability is your government guilty of that you see the issue of armed bungee tree and the insecurity generally in north western Nigeria is quite different from that of the north eastern Nigeria they have different peculiarities but one thing I can tell you this present demonstration of them for a state has been pushing so hard to make sure that this issue of bungee tree is over recently with excellence in the governor Abelo Muhammad Matualem Maradun was in Nigeria Republic to ensure that this issue you are talking about of the porosity of the border is tackled and it was at the result that the most notorious bungee tree was attacked his weep on stores his food stalls and all other areas bungee tree were destroyed by military operations that took place about two weeks ago so and if you come here with the present administration and the previous one the there is significant improvement in terms of killing because before the hardly a day passes without getting 200 100 people killed within the week but today we have reduced it to merely nappin and in some places attacking and killing right so um I can tell you that the government of them for a state under the leadership of ex-lancy Belomohamed Matoa Lamaradun has been doing everything possible to make sure that the protection of life and property has been giving priority in them for a state okay just because time is not on our side this issue of securing the borders you said you went to Niger to you know we regards to that what was achieved we having better borders now better secured so of course very well there was synergy between Nigerian government and the Nigerian government in terms of securing the border and that is why the military is getting it easy now to operate within the border side officially the forest that link Nigeria and Nigeria Republic which is the hideout of the major notorious kinting and they are gone all right many of them are now moving towards the other places like the thousand part of the country every day now in Zampara state you see the bandits parting with their animals and their families moving out of the state to other areas which is a sign that the synergy between Nigerian and Nigerian government is working perfectly all right time would not allow us to continue with this discussion but on a final note Dr. Kabir what would you suggest what advice would you give to the government well I talked about accountability I think that's something that needs to be looked at closely unfortunately it's beyond the state government to do that it's actually the mandate of the federal government because let's remember that security is still on the exclusive list so there's very little that the state government can do in terms of security votes vote yeah so that they can also emulate Lagos state and set up what I would call now Zampara state security trust fund just like Lagos has the Lagos state security trust fund so that there is a transparent system for managing security where all of these ones including the security vote is used in a very functional manner then they also need to involve the people in within the security architecture the people that don't feel protected and I say this with all sense of responsibility Ibrahim Duzara is my friend the best example of this is the number of protests that we are seeing in Zampara just earlier in the week somewhere near HFE there was a protest by residents mainly because they felt they had been attacked and the kind of response they wanted was not adequate so the it's very important that whatever security arrangement involves the people so that the people feel they are protected and then lastly there must be a framework by the federal government with the support and involvement of the all the state governments not just Zampara but all the state government that are affected so kutukibi Kaduna Naija Kazina must be part of that arrangement where the same measures that Ibrahim Duzara mentioned including Mijar and to an extent Kemeruna in chat in a cross border arrangement as well as a coordinated action against all of these ongoing cases well thank you so much thank you so much Dr. Kabeer Adamu Dr. Kabeer Adamu is the MD of Bikin Consultant Limited of Security Alpha thank you for your time and we also thank you commissioner for information Zampara state Ibrahim Duzara thank you thank you so much and we wish you the best as you tackle this challenge in your state thank you so much even though you did not ask me my advice as well well I had to ask the security expert to advise you the government and I thought that would suffice aspect also need advice because like in Zampara state there is a kid shortage of Mampara in the area of security we need more military men we need more police we need more civil defense officers who work in Zampara state and again there is shortage of lack of very much financial support to the government so the federal government needs to get a lot of finance the state government ensure that all the needed facilities of the military are being supplied without play okay well I hope that the government I believe the government is listening and we hope to see an improvement in that regard thank you so much for your time again hello hope you enjoyed the news please do subscribe to our youtube channel and don't forget to hit the notification button so you get notified about fresh news updates


My name is Jonathan Stilt, Lance Corporal. I actually got into the sport of boxing when I was eight years old. My father got me into it. I knew it would make me great because I was already very athletic and my determination just drove me to where I am right now. I just love the sport. I love the competition. A lot of my buddies that graduated from high school, they all thought I was crazy for going to the Marines. They were like, ah, you're crazy. You're psycho. I'm going to the Army. I'm going to the Air Force. It's easier.