 Good morning. Good afternoon. Good evening wherever you're healing from welcome to another developer experience office hour My name is Chris short. I am host with the most and showrunner of redhead live streaming I am joined by Karthik and Serena from the future Serena You want to do a little introduction real quick? If you can find them you sure do. Yeah, sorry. Hi. My name is Serena Nichols I am considered Serena from the future as we're usually when I'm on here I'm talking about what's coming up in the Dev experience in the console and I'm in that product manager for OpenShift dev experience Handed off to Karthik Hello everyone, I'm Karthik jeer. I'm a front-end engineer working with Dev console UI team So previously I've worked on some of the pieces around OpenShift serverless and topology In last two releases. I mostly focused on OpenShift pipelines UI set of things Thanks Chris and Serena for having me here. Over to you No, that's it's great to have you Karthik really it is so Serena we're talking about Some new stuff pipeline wise. We are we are Yeah, so today we're going to do a deep dive into the features that are going to be available in 4.9 console when OpenShift pipelines operators installed We're going to go over the tecton hub integration as well as pipelines as code and then if we have some extra time We might do some more digging into some of the previous features But we're really happy to have Karthik join us here as he was one of the the lead for the pipeline work in the console So I think I'll just hand it right over to you Karthik Let me share my screen Okay, great Awesome, could you just increase the font a little bit? Yeah, or yeah, whatever I mean, I think one thing too We wanted to discuss is like why would users want tecton hub to be integrated into into this kind of experience and When you're using the pipeline builder, you're able to add tasks to your pipeline Currently or previous to 4.9. It was either tasks that are in your namespace or cluster tasks that were on your cluster So this integration with tecton hub allows you to grab anything that's in tecton.dev so all the community tasks essentially and And now I think I'll share it over to you. Yeah Before I get into the new look of the task adding mechanism So I'll talk a little bit more about you know the previous experience for adding tasks to a pipeline builder So previously we were having a simple drop-down if you click on add task it will show a drop-down that consists of all the task names and the badges in a drop-down and Apart from the name and the badge. We don't show any other information to the user so offer often using users will be able to you know, select the task which they Sometimes they might choose a wrong task and realize later on and Open the task and close it and again, they have to repeat the process to select the proper task again so the main goal of this tecton hub integration is to provide the use of the ability to actually search The task and read through more information About the task and then add it to the pipeline builder So let me click on this add task now. So it opens up a quick search model and User can actually type on the search term So the results are based on the best match found with against this search term So you can see all the tasks that are listed here so the cluster tasks which are already available in the cluster and We also have namespace tasks, which are also available in the cluster will be listed here Along with that we are pulling all the tasks from the tecton hub interface So the tecton hub library contains a lot of reusable tasks So we are making use of that. We are pulling all the tasks into the pipeline builder So user don't have to switch context between the open shift and tecton hub So as you can see the Badge here that differentiates between the tasks that are already in cluster and if you click on that you can see it is already installed and we can see the description of the task and the categories and the tags for that particular task and We can also see a badge here, which says that reddad provided and community provided So this will differentiate between the tecton hub and the reddad provided tasks So Let's take this task as an example. We haven't added this open shift client task into our namespace So the button here says install and add so We also show this version drop-down where in user can choose version and install it to their cluster So let me choose 0.1 and click on install and add So if you have noticed It showed loading decorator for a second. So it was installing the task to the Cluster so till that time you can't perform any other action on that task so a loading decorator will be shown there and Once the task is added to the pipeline builder, you can click on the task and add the parameters or the bin expressions input resources and all the configurable stuff and The question just a quick question on that When you're adding that when you're adding that task here, I you mentioned this but We don't have the capability of adding something to the cluster task, right? It's right now We only have the ability to add it in the current namespace Yes, correct. That is so okay. Once we once we install it. It's going to you know, add it to only this namespace Yeah, okay. Thank you And one more thing to highlight here is previously we were having the drop-down list So if user selects a wrong task, they have to click click it again, and they have to remove it from here and They need to change it But now if you hover on this task and it has this deli taken so you can click on that and quickly Change the structure of the task nice So one yeah, and one more thing I want to show here is We are showing this installed button here Badge here and Whatever is installed in the cluster will be pre-selected here and You click on it and the whatever is installed will have the check mark and If the user wants to upgrade the task So we'll show them a warning message Because by updating this task, this will replace all the references in this particular namespace So all the pipelines that are using this task will get updated. So we are showing this error message or warning to the user And once they hit on update Let me refresh. It's not a demo without something a little going on Yeah, it's not live TV unless something breaks, right? Yeah, exactly so Actually, we have the ability to update the task and add the task to the pipeline builder and One more thing I wanted to show here is so as we are composing this pipeline through this pipeline builder There is always a chance that you know the user wants to look at what is the underlying structure. So This model blocks the view of the underlying pipeline structure. So we are also added we have added this Drag capability so you can drag the model to a different Location in your screen and you can also resize based on the size of your window you if you want to see more information And you can resize this It's great. So question around when you do the search What are When you're doing this search, what are you actually matching to in the back, right? So we are matching to all the text that includes the description category tags and And And then the task mean itself. Okay, awesome. Yeah, and all the metadata will be matched against this so search term Excellent great. So that's it's actually interesting because we we Implemented the tecton hub integration, but in addition to that we really made the Experience for pipeline building so much better, right? Because there is a discovery mechanism for your tasks Whereas before like you were talking. We just had a drop-down if you didn't know what the name of that task did You're kind of In an in an unknown state, right? So that's great Awesome, okay I Guess one other question I would have is what would happen if you you installed a bunch of client here in this namespace Did virgin point to I think it was I remember right now if you go to another namespace and Want to reference? Open ship client what would happen? So if you yeah Okay, so I I have installed open ship client on the other namespace So if I try to do that here in the new namespace It will again show me install and add because this namespace doesn't have that Now is it possible on a cluster to have two different versions of the same task? Not in the name same namespace But in separate namespaces or are we I don't remember what happened with that Yeah, because we don't change the name of the task the name of the task is still the same and We are going to create it as a namespace task So the name will be unique so the versions get updated So we can't really have two different versions in the same Namespace that is a known limitation Right, but can you have to can I have v1 in namespace 1 and v2 in namespace 2 or am I constraint? Okay, awesome. Okay, great While we're here. Do you want to go over some of the the when I know we had talked originally about doing this later But while we're in the pipeline builder, do you want to kind of go over some of the when Expressions in the final tasks maybe as well. Yeah, sure so Let me compose a pipeline here. I'll choose a couple of tasks so So when expressions are a way to you know, actually guard a particular task So if you want this task to be executed on our condition then when expressions are Really helpful here So the moment I clicked on add when expression diamond symbol popped up here and that that says This task is guarded by a when expression and it also guides the user to you know fill out the form so if you if you open it and if you don't fill out the form and the create button in the pipeline builder will be disabled and The error decorator here will guide the user to actually fill this form section so here there are three fields that we need to fill one is input and the operators Nothing, but in or not in its equals or not equals kind of And values so input can be a parameter or the name of the pipeline or it could be any variable that is available in this particular Pipeline so we can also do dollar and a parentheses to open The another code assistance feature here. So this will help us to Fill in this form. So here. I've chosen context start pipeline run name. So and I can also use control plus space bar that opens up the same Code assistance feature and here it shows all the context of the pipeline. So if I have parameters, let's say So I'll have default value to stage And I want to run this task only on the stage environment. Then I can come here and click on control plus space bar. This will give me the programs That I can use. So I'll I'll click on that and I can choose in And the values I'll give Maybe product. So I need to run this task only on product. So Once I'm happy with the when expression I can now hit on create So the visualization also has that When expression decorator in front of that particular task Then I can start the pipeline and the parameters will be asked So user can say Broad. So let me first run it with the stage environment So this task expression will fail and this task should be skipped I like I like that like the way we've integrated this it makes it very easy to pull those environment variables in that's very handy So I love the other thing too is like that just Yeah, I was going to ask you if you go over the colors and the the symbols kind of the icons that are shown there Yeah, so this task is skipped. So it is grayed out and chase when expression was not met so if I try to Start the pipeline again with prod So this is executing the task because the expression is met The other thing I'm just going to mention is that in each one of those little bubbles for each of the tasks carthick We have like the underline Right, I think that represents the number of steps that are in that task Yes, so those steps are shown inside this tooltip Yes Okay, so for people who haven't seen it before just trying to give more More info there So there can be multiples And then those are also the lines underneath that colored As is the tooltip also indicates the status of each one of those steps meant in the tasks as you're doing it right So that's great so along with the param not only the parameters it can also Have variables like workspaces results context So if I have a workspace So this code assistance will Reference that as well And we have this code assistance feature in all the Parameters So even here if we want to change it we can hit control plus space bar that opens up this one And we can also add this Ben expression to finally tasks as well Exact same procedure So and just for an overview of the finally tasks Those those are kind of executed no matter what happens to the previous steps I'm previous tasks in the pipeline, right? So One might somebody use that like for cleanup possibly or or something like that Yeah, possibly, uh, you know Maybe at the end they need to clean up a workspace or send some notifications slack notification to some other subsystem or users so This finally tasks will run no matter what happens to the regular pipeline tasks So it's guaranteed to be executed But we can even guard that task with Ben expressions So we can conditionally run them Okay Um, that's great. Chris. Do you have any other? I think we're kind of ready to move on to pipelines as code. Okay, great. Um Yeah, so that was great. I think that was a great overview. Thanks, Karthik for sharing that I think the next piece that we wanted to go over was around pipelines as code, right? Um, which allows the ability to store delivery pipelines in a get repo as the source of truth and execute pipelines Um, from there Right and lots of people have been I know waiting for this feature and and it's already supported by open Pipelines. It's just something that we Are following up with integration into the console Question from chat. Can I go back and forth between the pipeline builder and the yaml view like it'll pick up the changes in yaml Yes, okay. So that's what I figured Yeah, I mean y'all okay, uh So I have already installed the pipeline as code in this cluster. So just for demo purpose and And uh, so this is the repository. Uh, you can uh, see the There is a walkthrough video created by yaml and those who wants to try it. They can watch this video and There is also an installation guide. I followed this one so So we can create this You know, we can install this pipeline as code using this yaml file And then it creates a bunch of resources into your pipelines as code or namespace And uh, we need to get the event listener So the pipeline as code Will have an event listener That is already exposed So we can use that url to configure the webhook in the github repository I want to share this github repo with everybody real quick Oh, you already did serena. Thank you So I have used this url and uh So I already created a github app That uh for testing pipeline as code So in that github app, I've uh Um added the webhook URLs Here and uh Also in my repository webhook So this is the repository i'm gonna use And uh in the settings, I have added the same url event listener url as a webhook here And if you look at the repository it has dot tecton folder that houses The pipeline that needs to be run on the This event So it has a pull request dot yaml file That is basically a pipeline run That that has embedded pipeline Spec is there So this pipeline has a simple three tasks just echoing out some values So fetch build and deploy So do you mind if I share do you mind if I share your your repo as well of your demo app? Is that okay? Yeah, I already copied it. Okay, great. Thanks In case people want to try it on their own sure And I've already created the secrets uh in this cluster So all I need to do here is create a repository In the namespace where I want to Create this pipeline run So in my case, I'll go to rsdev And click on pipelines and previously we were having only pipelines list But now once the pipeline as code is installed now you'll have a tab view And uh, this will contain pipelines and uh the list of repositories And the create button here will also let you create pipeline and uh repositories So I'll click on the repository I'll paste Repository cr So this repository cr actually ties The github repo and your namespace in the cluster And the branch and the event type So let me change the github URL and the namespace so And I'll leave this event type to pull request. So I want to trigger a pipeline run uh whenever a pull request is created Well hit on create This takes me to the repository details page It has the basic details about the repository And we can change the labels annotations And uh, it Gives you the link to the github repo And what branch and pull request or event type And it has the amal view and uh all the pipelines that are created Through this repository that will be linked here So now let me go back to my github repository and uh I create a New file okay, that's a patch three you've done those a few times I'm sorry Yeah Just do things So Yeah, this should take some time Yeah So now that pipeline run should become You should see a pipeline run automatically generated here Yeah Once the controller picks up those changes All right And I love to say this all the time clearly he did a demo prep twice and it worked the two times before so you We know it worked twice and we make it work a third time That was the one the demo god said not happy it seems Just on the console side hit the details or Something just to make the page. Yeah Yeah, okay cool Let's Anyone check failed That's your previous work Okay, this is oh it's in progress. Okay. It's progress. Yeah Well, Chris you said you said that people like to watch us have to resolve issues when we're demoing so Mm-hmm Karthik was doing a great job. Yeah, I think this is I mean this is all in the operator right like it's just got to pick up the changes We didn't write the wrong branch down or something. Did you just out of curiosity? So Wow, I don't know The deal is there So I think I tried it previously with the another It says a few seconds ago last round Oh Is that page? Yeah, there it is. There it is. Okay. So it just happened Ta-da. Oh, no, this is this previous. Oh, this is the different. This is a different project Yeah, yeah Let me try again. Okay. Let me see what what did you just watch that? Successful Okay, so if we want to debug then So pipeline says the code is the controller And this is the event listener Can view the logs And it says interceptor stop triggering process Hmm Let me see if it is creating in some other namespace Ah, see it got created here Oh Oh, yeah Where is here one minute So this happens if if the namespace is not matching so Oh So rhdev, maybe there was a hyphen in it or not a hyphen in it So jm and chat says the main branch in the github repo is named master Your pipeline is expecting a pr on main branch main here though. Is that master? It's just that's just the comment master. It is main there from master. It isn't me. So, yeah It should in theory work Yeah, it is creating the pipeline runs, but uh, not in this namespace This creating in now pipelines as code How about in the yaml for this? Did you have rhdev or did you have rh hyphen does? Oh, good point Oh, you have hyphen now Huh Weird very interesting. I wonder if that's Maybe a github symptom where it's like main or master It's confused, but it built just elsewhere, but it worked on the other one right and even when you Like you have it in your car thick project. It was working properly. Yeah, right. It was work It was working. Yes. Yeah Right Yeah, so if you go in there and go to pipeline runs, you can see those that were generated based on those So it's interesting something Dev preview folks Yeah Or there's a there's a typo somewhere that we just didn't catch may probably more Likely right exactly Yeah, reminds me to throw up the future stuff that we have. Oh, yeah Yeah so So can we talk a little bit about what the advantage of? um Pipelines as code would be rather than having pipeline quote-unquote resources created and using the pipeline builder in your Cluster Like what would the advantage of that be for somebody just because everything's got everything's in git So it's single source source of truth So you've got your pipeline definitions just stored in git Yeah Yeah And can you go again back to the pipelines nav item? If you have Pipelines as code created you'll see them They see those repositories here If you don't if you have pipelines that were generated either in the ammo or through the pipeline builder You'd find them in the pipelines tab Yes Yeah And then either way could you do a search and just show how You can look at all of your pipeline resources together like through the nav um And then maybe even add pipeline resources to To your I'm sorry. So if you click on search In the nav And then just look for pipeline resources peeler. Okay, and yeah Uh, the resource ones. Yeah the oh, I'm sorry the runs. Sorry. Yeah Yeah Okay, you want me to add it to the navigation? I was gonna have yeah add the pipeline runs to the nav Yeah nice because then If you just click on that and nav now it's easy to see all those pipeline runs quickly But those would also be showing. Yeah, and that would also be showing you pipeline runs that are associated with A pipeline that's from git or one that you built from pipeline builder Yeah, so can you clone a pipeline as a question from chat? Like so we can in the builder. Yeah Yeah, we can I mean cloning a pipeline. Okay So I think you would have to pull out the yaml and then re-extend you to someplace else. That'd be the Yeah, absolutely to do it. All right, like pull from the repo Um, but I see what you're saying. Do you want to be able to like reuse these in cluster without doing too much? Yeah, it would be interesting what the use cases is looking for because we have talked about should you be able to and I Think maybe this is what he's been saying. I'm not sure but start off with a new I want to create a new pipeline based off of one that exists today Exactly, right. So pull in and then I'm going to make some additions It'll be curious to know if that's what he's looking for because we do whatever. Yeah Yeah, yeah, because we do have that in the backlog. So Yeah, people are interested in that definitely do like plus one or something um Yeah, well, let us know your use case a little bit Maybe the kids bumped up. I don't know. I can't I'm not the dictator of that Well, it helps to know who's looking for what for sure, right? So, yeah, okay. So, yeah, he does sound like he's trying to clone something in the modify as needed. So, yeah Yeah And again, so karthik can you just do another quick? So we're saying this is an open shift 4.9 It will be coming out. What version of open shift pipelines would we have at that point? Do you remember? I don't remember off the top 1.6 will be the version Would be the version. Okay. Okay. So that's when we would get that Okay awesome So that I think that kind of does it for the kind of the deep dive in the ui piece around pipelines um I don't know. So while he said that is the use case for creating based on an existing one. Yeah, so perfect Okay, that's great. See where that sits in the backlog. Maybe yeah, I'll share that back with syamac too because syamac is um product manager for pipelines itself itself. So We coordinate as priorities and how to get things into the console But it's great to to know that somebody's looking for that somebody else is looking for that for sure I mean, I could definitely see that and organizations across the globe that being something right like that comes from like ansible I feel like you know like the ability to pull something and tweak it and then run it, you know, exactly. Yeah Perfect. Are there any other like other usability tests that I mean usability features that we could talk about? So I think we have covered all the Well everything for 49. Yeah The other thing that people have asked for that we don't have done yet is when you're looking at the pipeline logs There's been some requests around having that be colored Yeah, so Oh, like the output? Yeah. Yeah. Yeah, because right now everything's just a You know single color point, right? Um That would also be interesting for anybody to pipe in through the through the chat if that's something that they feel is Um, so this output was there in 3.11, uh, but uh Uh info dot x we don't have that so we already have a feature request and pattern fly team working on uh building this log viewer with uh support of ansi colors in it so Hopefully we can have that soon. Yeah. Yeah Yeah, and then I think I always appreciate colors and logs. So it's just me Yeah I think that the hope there would be that all of our logs in open shift Not only the pipeline log viewer would all be utilized in that same pattern fly component. Exactly A familiar pattern fly is the What do we want to call it the the template toolkit we use the open source design system? There you go open source design system, right? Yeah, think of it as Theme plus plus for your website if you used to like word plus a prana theme this that's basically the framework on top of which We build this ui Questions about analytics on pipeline Hi, we actually do have metrics today Nice. Okay, cool Now since this is probably not a long living cluster, I'm not sure how much we'll see here for metrics, but we can give you an idea Yeah, the metrics are there for uh The regular pipelines So not for pipelines as code Yeah, yeah, okay Maybe kick off a few right Right. Yeah, and then they're off with the pipes There we go, all right, let's wait a few cells here Takes a couple seconds. Yeah, it's a 30 second refresh too. So yeah There we go. There we go stuff's coming in. So yeah, you do have some analytical data there. I'm curious. Well, he uh So he well he'd responded for example to see if there are some abnormally slow Executions compared to previous executions, right? Like that's A good point. So that in the bottom left there is pipeline run duration. So that's for the entire pipeline run So you would be able to see that from a historical perspective, right? Like each one of those and it even brightens on which task. Yeah, that's cool. Yeah, and and you can You can I don't hide a task and see The legends. Yeah, that's really nice. It is. Yeah, I think you just focus on the problem And that's all if I'm not mistaken. These are all pattern fly components too. So You know, we should be having that same functionality in in any Chart that you're seeing throughout the console, which is great And so I'll eat it looks like It looks like this is the bottom left chart is giving you what you're looking for I think Yeah, that's for the entire pipeline and then each task has one. So that's good too. I think you're Hitting that nail twice basically We do notice one thing here on the left is just that maybe we don't go into enough granularity because it looks like we're saying zero minutes yet, right? But that's probably a nice enhancement on our side that we could work on Yeah, um, right because that's 30 seconds, but it's still saying minute minute minute minutes. Yeah. Yeah Yeah, it looks like this is what we're looking for. Yeah, right awesome. Awesome. That's great Good All right. Well, I think that's all we have today chris. Well, that's awesome I mean, this is good stuff like I can't wait for this to ga right like it's gonna make a lot of people's lives easier Definitely. So thank you serena for so much. Thank you car thick for the wonderful demo and thank you audience for watching Coming up next on the show on the channel. We have call for code for racial justice talking about the truth group truth loop project, uh, which is an open source project to make people aware of Legal ramifications and personal responsibilities that kind of thing So tune in for that and then Immediately after we will have red hat advanced cluster management presents And the title of this show is a little bit of everything because it literally is a little bit of everything from the Rackham team. So please stick around for the next couple hours and uh We'll see you on the next live stream Bye y'all. Bye. Bye