Lab 12: Azure DevOps using Azure Pipeline

Azure Step by Step Training Lab 12: Azure DevOps using Azure Pipeline
1 hour 19 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$69.99
List Price:  $99.99
You save:  $30
€67.24
List Price:  €96.07
You save:  €28.82
£55.68
List Price:  £79.55
You save:  £23.86
CA$100.66
List Price:  CA$143.82
You save:  CA$43.15
A$111.82
List Price:  A$159.75
You save:  A$47.93
S$94.88
List Price:  S$135.55
You save:  S$40.66
HK$543.79
List Price:  HK$776.87
You save:  HK$233.08
CHF 62.67
List Price:  CHF 89.54
You save:  CHF 26.86
NOK kr792.28
List Price:  NOK kr1,131.89
You save:  NOK kr339.60
DKK kr501.55
List Price:  DKK kr716.53
You save:  DKK kr214.98
NZ$123.71
List Price:  NZ$176.74
You save:  NZ$53.02
د.إ257.07
List Price:  د.إ367.25
You save:  د.إ110.18
৳8,328.16
List Price:  ৳11,897.89
You save:  ৳3,569.72
₹5,958.01
List Price:  ₹8,511.81
You save:  ₹2,553.80
RM314.25
List Price:  RM448.95
You save:  RM134.70
₦108,236.03
List Price:  ₦154,629.53
You save:  ₦46,393.50
₨19,398.69
List Price:  ₨27,713.60
You save:  ₨8,314.91
฿2,394.21
List Price:  ฿3,420.45
You save:  ฿1,026.24
₺2,465.01
List Price:  ₺3,521.60
You save:  ₺1,056.58
B$426.13
List Price:  B$608.79
You save:  B$182.65
R1,290
List Price:  R1,842.93
You save:  R552.93
Лв131.30
List Price:  Лв187.58
You save:  Лв56.28
₩101,582.03
List Price:  ₩145,123.41
You save:  ₩43,541.37
₪254.54
List Price:  ₪363.65
You save:  ₪109.10
₱4,098.92
List Price:  ₱5,855.86
You save:  ₱1,756.93
¥10,967.38
List Price:  ¥15,668.35
You save:  ¥4,700.97
MX$1,406.50
List Price:  MX$2,009.38
You save:  MX$602.87
QR254.06
List Price:  QR362.96
You save:  QR108.89
P963.25
List Price:  P1,376.14
You save:  P412.88
KSh9,053.20
List Price:  KSh12,933.70
You save:  KSh3,880.50
E£3,568.78
List Price:  E£5,098.48
You save:  E£1,529.69
ብር8,687.63
List Price:  ብር12,411.43
You save:  ብር3,723.80
Kz64,250.82
List Price:  Kz91,790.82
You save:  Kz27,540
CLP$69,297.02
List Price:  CLP$99,000
You save:  CLP$29,702.97
CN¥510.87
List Price:  CN¥729.84
You save:  CN¥218.97
RD$4,243.89
List Price:  RD$6,062.96
You save:  RD$1,819.07
DA9,435.69
List Price:  DA13,480.14
You save:  DA4,044.44
FJ$162.05
List Price:  FJ$231.51
You save:  FJ$69.46
Q536.99
List Price:  Q767.16
You save:  Q230.17
GY$14,580.66
List Price:  GY$20,830.41
You save:  GY$6,249.74
ISK kr9,757.30
List Price:  ISK kr13,939.60
You save:  ISK kr4,182.30
DH701.41
List Price:  DH1,002.06
You save:  DH300.64
L1,291.33
List Price:  L1,844.84
You save:  L553.50
ден4,135.36
List Price:  ден5,907.91
You save:  ден1,772.55
MOP$557.92
List Price:  MOP$797.07
You save:  MOP$239.14
N$1,283.07
List Price:  N$1,833.03
You save:  N$549.96
C$2,564.57
List Price:  C$3,663.83
You save:  C$1,099.26
रु9,479.94
List Price:  रु13,543.35
You save:  रु4,063.41
S/259.51
List Price:  S/370.75
You save:  S/111.23
K282.61
List Price:  K403.75
You save:  K121.13
SAR262.99
List Price:  SAR375.71
You save:  SAR112.72
ZK1,928.73
List Price:  ZK2,755.44
You save:  ZK826.71
L334.62
List Price:  L478.06
You save:  L143.43
Kč1,690.23
List Price:  Kč2,414.72
You save:  Kč724.49
Ft27,882.67
List Price:  Ft39,834.10
You save:  Ft11,951.42
SEK kr772.23
List Price:  SEK kr1,103.23
You save:  SEK kr331
ARS$71,547.27
List Price:  ARS$102,214.77
You save:  ARS$30,667.50
Bs481.59
List Price:  Bs688.02
You save:  Bs206.42
COP$305,890.51
List Price:  COP$437,005.17
You save:  COP$131,114.66
₡35,162.35
List Price:  ₡50,234.08
You save:  ₡15,071.73
L1,769.11
List Price:  L2,527.41
You save:  L758.30
₲543,432.39
List Price:  ₲776,365.26
You save:  ₲232,932.87
$U3,131.93
List Price:  $U4,474.38
You save:  $U1,342.44
zł286.59
List Price:  zł409.44
You save:  zł122.84
Already have an account? Log In

Transcript

Welcome to lap 12, implementing DevOps using as your pipeline. Now this is like approximately a one and a half hour of session. Now, I'm not sure this video can become one hour or one and a half hour, but that's approximation which I'm looking forward. And in this lab, you know, I plan to have all these chapters. So you can see we have 23 chapters around here. And all these 23 chapters, you know, will help us to understand that how we can implement a complete DevOps automation using the Azure pipeline.

So let's not waste too much time and let us get started with what exactly is DevOps. So let's first start with the word itself. This DevOps is a six letter word, and this six letter word is formed from two acronyms, Dev and Ops. So the dev stands for software developer and OB stands for operations and admin. So in order to understand, you know, why do we need DevOps you know, let us understand what happens in a typical software development process or I'll say, what happens you know, that when you say that you want to deliver an enterprise level software to an end customer, what kind of process takes place or you know, who are the important parties, you know, who who participate in the delivery of the software. So, at you know, the first is, you know, you have an end customer you know, who is demanding, who pays for everything, right.

So, he demands you know, that changes should be delivered faster, he demands you know, the launches should happen faster, he demands, you know, that, you know, whenever the delivery happens, the software should be stable, and so on. Right, it should not have bugs and so on. Right. At the other end, we have our developers, you know, who actually try to deliver the software. So basically the plan, the code, the build the test, they do a release and so on, right and normally the end of price level software, you know, where you have a lot of installations and you know, you have a lot of configuration and the software is complex, you always also have an operations team and who takes care of it. So, when the developer actually gives out the final release to the operation team, the operation team also has a certain process, you know, so, they also go ahead, they also take the release, they deploy it, they configure it, you know, as for the environment, they operated, they monitor the health end customer, you know, to understand, you know, what the changes are, right.

And normally, what happens is, you know, that is a kind of friction or I'll say a blame game in which happens between the developers and the operations department. So, the operation says, you know, that does that, you know, we have to do a lot of configurations, you know, to take it live. The build is very complex, you know, so it takes time to take it to the end user. You know, there are issues in deployment you know, which leads to an unstable system. So, there are some complaints you know, of the operations team. When it comes to delivering this software to the end user, and at the other end, you know, developers say that, you know, okay, it was working at my and, you know, and Ops, you know, does not give me any feedback.

So when, when such events happen, they don't even give us any kind of feedback. And they tell us after a month and so on, right. So this DevOps, you know, you can think about, it is trying, it is trying to improve the relationship between the developers and operations. We can also say that DevOps is a kind of a philosophy, this kind of a concept. It's kind of, you know, a software development phrase, please understand, it is not a process really, there is no process in DevOps. So it's kind of a kind of a concept, or I'll say, rather, you know, must be the word which I like is, it is it is a working culture, you know, to make the relationship between the developers and the operations department more agile.

And once you know, the relationship between the developers and operations department becomes a giant And, and better, right, you can deliver faster, you can deliver a stable product and so on, right? So DevOps is is nothing but it is trying to improve the working culture between the dev and the operation departments to make the relationship better so that we can have, you know, a better delivery, a stable delivery and a faster delivery. So, in order to implement DevOps, the first thing is the mindset, the working culture, we need to all agree that we are all humans. So humans work in the dev department, and the ops department and humans always have problem in when it comes to collaborations. So there are egos You know, there are that is so called as the office politics and blame game and so on. Right?

So definitely no humans are working. So first thing is, we need to accept as humans that the dev and the ops department have issues and we need to resolve it. We need to work as one team so that we deliver the application in a Way to the end customer. So first is the mindset. First is the working culture. That's important, right?

Once we all decide, yes, you know, we want to work in a collaborative manner now comes the process part right and now comes, you know how we can work in a better way. So the second step now is automation. So a lot of people feel you know that DevOps means automation. So automation is a byproduct. The first thing is, you need to agree that you want to follow DevOps. That's the first thing.

So let me also talk about some of the myths of DevOps, a lot of people feel DevOps is a position. I've seen that in job portals, I've seen that some people put that I need a devop. Like, I don't know from where you get a person called is DevOps, right? So there is no position as DevOps, there is no department as DevOps. DevOps is not a team. It is not saying that Okay, take the dev team and ops team and put them into one room and they will start working collaborative, right?

No, DevOps is not about tool sets. DevOps is not about automation. DevOps is not dev loves Ops, right? So DevOps is first is a working culture we agreed on, right. But now the next thing is, so we need to work collaboratively, we need to work continuously. I think this word continuous is important.

So you can see that you know, that slide, which I had here, that slide now, I have actually made the process in more of what we call a continuous kind of cycle. So you can see the first thing at the left hand side we have all those tasks with the dev team will do at the right hand side, we have all those tasks with the ops team will do. So the dev will do the plan, the code, the build and the test right and then he will release it to the operations the operation will take up this release, deployed, operated and instantly give the feedback saying that Okay, there is a issue in the on the floor right and he will, he will give instantly feedback to the team. The team takes his does this as a part of the plan, and again, starts doing its work right now in this whole process.

Know what we really want is if you want to deliver faster, then we need automation tools, how I'm using the word automation out here, but as I've said that the automation is a byproduct. First is that the working culture, right? So we need like, yes, you know, if I check in the code, I want that the build should happen automatically. Right? So I don't want that somebody should go and say, Okay, now let's go and file the bill, let us go and do the configuration. So, the bill should happen automatically.

And then the test cases, I would love to see that a lot of test cases you know, they 8080 or 80 or 85%, you know, is done automated. So, you wrote the unit test case, and the unit test case starts firing on the new build. Once that is done, then you give the final release, again, this release, the release and the deploy, if possible, you know, it should be again automated, right? So it just goes and puts puts the deployment into a QA server, or into a UAE server. And from the UAE, the operations and the end user starts to testing it right? And if there are issues, you know, you again, give back, right?

So remember that, you know, at least I feel that DevOps does not say that if you are 100% automation, you cannot replace humans, you can't say that I will check in the code, and then the bill will start automatically the deploy will happen, the test will happen, there is no interference of anyone. No, we haven't we know, nothing can replace humans, you know, whatever you build today, at the end of the day, humans are important, right? The only thing what we are saying in DevOps is that try to automate whatever you can so that you can deliver faster. So, yeah, the build is automated hundred percent, let us say, must be the test cases 80% are automated, and 20%. No, some manual testing will be done. The release and the deploy is automated for you.

It must be but again like you know, when you say I want to go final go live, the ops will say no, I will go final go live. But we have a lot of manual configurations, which is very difficult to automate, right? And so on. So basically, DevOps is all about working culture and the maximum automation, what we can do now to implement DevOps, you know, we have hundreds of tools out there. Every tool is very specific sometimes to a single phase, or probably it can also automate multiple phases. For example, when you say you want you want to do planning, you have Slack, you have Trello, you have office, you can also use simple Google Drive, if you wish, you know, for Bill, you have coordinates.

You know, in the same way, you know, for every phase, for example, cucumber is one of the famous ones. Jenkins, we have, we have the Amazon cloud, we have the Google Cloud as well, we have the zero cloud as well, right. So a lot of people are offering different tool sets out there. So think about it, you want to go and do DevOps, and you then have to get into the integration, the technical integration of all of these tools, you know, which can become very complex, and which can become very tiresome. And that's where we have as your DevOps as your DevOps says that you don't have to do anything. Just come to my office, your cloud and create an account.

Start your code. check in and I have created an pipeline. So basically what as your has for as your DevOps as is it has a pipeline, you know where you can go and you can build this complete flow with just a click of a button right. So, my goal in this video would be that I will go ahead I will first go ahead and do a bit of a planning for that planning I will go and I will do the code check in for that code check in I will create an automatic build and then I will go and I will deploy this bill automatically into a virtual machine right life and then we will also see that how we can give feedback back to the plan right. So this full cycle I will demonstrate now by using as your DevOps. So let us get started.

So there you can see I am on the portal of as yours so let's go to search and type as your DevOps right. So I would go and click on as your DevOps. Once I click on Azure DevOps, it says that you have to go and you have to create an organization. So you can see here it says my as your DevOps organization, so I'm going to go and click on this. Because at the end of the day, when you say you want to go and do DevOps, it's for an organization, right? So I'm going to go and create an organization here called as must be questpond.

Right? So I'll say yes, continue, you will be I'll give this name as questions correspond company. questpond.com. Right? Where would you like to host your projects? So I'll say okay, let me select the same South India is already taken, is it I never knew that.

So questpond questpond company that is taken No. And I'll, I'll select South India. So looks to me that it has automatically suggested that so I'm going to go and say continue. So this will actually go and create an Azure DevOps organization for your organization. And in this, you know, you can go and you can check in your code, you can check out your code, you can do the build the CI CD, you know, all that things, you can actually go and do it out here, right? So, there it is, you can see it says now, okay, so, it has created the company it has created the organization.

Now it says that okay inside an organization you can have a lot of projects. So go ahead and create a project. So it gives you two options, you can either create a project public out, you can either go and create it private, you know, so private means it will be only accessible inside your company, you know, with the people whom you give access to only those can access it, right. So this public is specifically if you want to go and create an open source project and so on. So I'll go and I'll say okay, this is some project so I'm going to go and create some project, I will keep it as private and I'll say create project. So, there you can see it is it has created the project and it is giving me some kind of small overview and you know, kind of a dashboard I can see I can see overview out here and inside this sub project now I can go and I can I can create a repository and so on.

So the first part is the planning part. So you can see that on you know, when you move your mouse On the boards, you know, there is something called as a work item. So let me go ahead and create a small plan here. So I'm going to go and create a new work item. And must be this is an task, you can see there is something called as an epic as well. So I'll click on epic.

At the end of the day, it's either epic, it's either epic, or it's either task or it either bug. Finally, it's a work item, right? So work item has different types. So this is just one of those types. So I'll say, Okay, first build, first check in, right? task.

So this is a task, you know, where I'm saying to the developer, please go ahead and check in the first baseline code right. And what I will do is I will allocate this task, you know, to, so let us also go and put some comments, please upload the source code, right? With the basic structure, right. So this is the first task I'm creating where I'm saying that please. So to do and, and you See, we can people can also discuss down below and so on. Fine, I want to actually assign it to Well, no, I know entities found Is it right?

Let me go and save. We do have one user who is allocated to it. So I'm not sure why there is no users. So actually, I wanted to go and allow allocate this task to someone. But I don't know why I'm not seeing any users right? At this moment, at least as you see one user right, fine.

But I have a task out here saying first check in the task. So basically, I want that somebody should go ahead and check in the task. And to check the code, you need to have repos. So you can see there is something called as repositories out here. So if you click on the repository, it says that, you know, you have on GitHub repository at this moment. Remember that when I created the project, it asked me that do you want to use the GitHub repository or the visuals, the old one, the TFS repository, right?

So I said I wanted the get repository. So that's why it has given me this right and I will take this I will actually go to my Visual Studio. And let us go ahead and open this project, right open this clone this project. So basically, if you see here, you can also go and click on this clone with Visual Studio, it will open up the Visual Studio. But I would suggest that you can start from here as well save file, open file, clone, I'm sorry, clone or check out the code. So I'm going to say okay, I want to go and clone.

So I will say that I want to clone this repository. So clone means you want to get whatever is there online and just get in sync with it right. And I don't want to create a local repository, I want to go and connect directly to the Azure DevOps. If I create a local repository that will also work, you know, then I have to give a connection to the online but I would like to go directly and say, Okay, I want to go and connect to as your repository as your DevOps repository. You can see at this moment, I am signed in in case you are not signed in, you need to go and add an account from here. So I am signed in here and it should show me all the repository You know where I'm connected to.

So you can see this questpond company, this sub project, so I'm going to go and connect to it. And what I will do is I'll say, okay, browse, let us go ahead and create a proper directory. This is very important, you know, don't just create the source code anywhere else, creating a proper directory. So I'm going to go and create a folder here called as questpond repositories, right? And everything what I will do I will do in this D drive correspond repositories. So I'm going to go back again and I will say that, let's do all check in checkouts over here and I'll say, clone it.

So that as you can see now I have cloned and it is cloning the repository. And it will ask you for signing up so I'm going to say yes, sign your sign up. So I already had put the credentials in my history. So you can see that it is actually signing up and we can see I'm connected to my my team Explorer. To my questpond company some project and also now I can go and I can start creating the project right out here. So let's go ahead and create an simple MVC project.

And let us let us go ahead and check in against the against a work item which I have created. Remember, I had created one work item over here, or come work item ID one. So I'm going to go and create a project and what this project should be a part of this local folder d questpond repos, because I have cloned it cloned the online repository out over there, right? So I'll say File, New Project and let me select console. asp dotnet core web application, right? I'll say next.

And we need to have that as the repository. So let me go back here. Okay, and we will create it inside this folder quest found repos because inside this, all the gate and the vs configurations are now there. So I'll save file, new project and ASP dotnet core application. And the location in a way you should create is this one, you know, so we'll say 123, right? And I will say create.

It will ask me that you want to create an MVC web application. Yes, whatever it is, we'll go ahead and create it. So now we have a web application created inside that repository folder. And if everything is good, you should be able to see those lock signs out here, which indicates that you know things are in control right. Now, I'm going to go out here and let us try to go ahead and check in the code right so let's first click on this changes out here. Before that before that we don't want to check in we really don't want to check in this.vs folder, you know, it has a lot of files, you know, which are related to the Visual Studio configuration, right?

So we don't have to Check in everything right? We just want to check into solution and the relevant source code. So let me just go back to Settings out here. And let me just ensure that I will go to repository settings. And I'll say, let's create a get ignore file, you know, which will actually ignore any kind of code, you know, which is irrelevant. So in other words, it will now not check in.

So if you go to the folder in File Explorer, it will not check in the.vs files, you know, so it will not checking.vs files or dot gate files, and so on. Right. Good. So we are all set you can see over here, and this is the home where you see everything of the TFS. This is a solution explorer where you see the source code. So this is actually our source code.

This is actually related to the online as you're in a very want to connect you want to check in and so on. So if I click on the work items at this moment, we are unable to because it is configured for user shift Do you are trying to connect via anonymous? Okay, so you can see that I am not able to view the work items must be, I should actually try to connect right. So this is the questpond company and let me try to connect out here that I'm connected. Not sure why it is not showing me. Let me try to see assigned to me Yeah, oh that was not assigned to me right?

So can't I go and show Okay, so looks like but I'm not getting those errors now you know so I feel that I should be able to I can see that now I'm not getting that error where it was saying you are not connected right. So we will see one work item is created you know that work item at this moment is not assigned to me. So probably it is not showing out to me out here right? following or must be okay know that I mentioned also that's what it is, you know, so this over here I've said my activity And that is something you know, okay, fine. We'll, we'll check that later on. So let's go back, and let's try to do a check in.

So I'm going to go and check in this code. So let's again, go back to the home, and we'll see what are the changes? So these are the changes. Yes, the whole application, I want to go and add online. Also, can I just quickly check before I go online? You know, how about going and checking just the settings and the repository settings?

So I just want to check you know, if in the remote I'm connected to questpond company, as you're right, you know, that's what it was. So can I go and just check in my repository? It was one company as your some project was one company as your some project very good. You know, just because sometimes, you know, what happens is your order your source code will get checked into some other branch. And that can be a problem, right? So changes Yes.

Do you want to go and check in? Yes, I want to go and check in this. So let's enter some comments. If you don't enter a comment. This is all disabled out here. So I'll say this is the final Fresh structure, right?

So initial initial code right. Now you can say, a commit and staged it will just go and not actually commit into the main branch. Or you can say commit stage and push in also it will actually go and push on the server. And if you say commit staged and sync You know, it will not only push to the server, but if there are any changes on the main as your repos, you will also get latest that right? Suppose we I can just do a commit staged and a push for now, or I can say even sync let me do a sync, right. And there it is it is unable to sync because the current branch does not track the remote branch, you know, that's really bad.

So, the current branch does not track the remote branch. You know, that is really, really bad. What is happening out here. Let me do a sink out here. Let's let's let me try to check in this code. Let's see initial code.

So that's what I want to check in. Right and sync So push, let's try to push I'm trying to push the branch Yeah, successfully done right, you know, so I was not sure why the sink was not working. So you can see that there are two sections out here, incoming commits and outgoing commits. So when I said committed committed to my local, and then I said, Okay, sync it online. So it looks to me that it has gone online, let us go ahead and check. So let me go and do a refresh.

And I feel that my repositories are online, you can see that it has committed but get ignore, but for some reason, he has still not committed my changes. So I'm going to go and say that, okay, these changes are still not committed. I don't know why. So please commit the initial code. Right. And I will say, commit all if I just say it will just commit to my local, right, which I don't want.

You can see if I say commit all it just commit locally, but when I say sync, it will actually sync it to the server right? So I'm going to go ahead and say push all these changes to the server. So pushing the current branch, so writing those 75 objects, looks like the changes are checked in so that it is web application web 123. Is that right? Okay, so good in our code is checked in. Right?

And so if I go and make some changes out here, for example, if I say, added some more code, right, you can see as soon as I change something out here, this becomes red. I can again go and say commit. And I can either commit locally or so these are new changes, right? And I would say that I want to go and commit against that work item. Remember, we had created one work item one. So I'll just say I want to commit against you know, that one, you know, saying that this is the fresh commit, right?

So you can see now we have planned it. We have the code here, and the code is getting checked in against the plan. Right. So remember our, our big picture of DevOps, you know, we have a plan. We have a code for that plan. And so I can go and I can checking that code for that plan, you know, which I've created.

So we can see DevOps is all coming into action. Now, again, I will say commit and also sync it. So I don't want to just commit local. So everything is done. And if I go and see online, I should see startup.cs you know, just now it has been modified. And if I go and see I can see the changes are happening.

Good. So we created a plan. For that plan, we are now able to go and commit the changes as well. Now the next step is we want to go and create a build. So as soon as I go and change something in the code and a check in right, it should automatically go and create a build. So now we have a we have created a plan against this plan.

We have checked in the code the repositories right now it is time to go ahead and create the pipeline. At the end of the day when you look at DevOps, DevOps is nothing but it is series of workflow. It is a pipeline in a very First the chicken happens, you know, then the build happens, you know, then the goal life happens and so on. Right? So as your has given a thought saying that, okay, at the end of the day, we visualize it as a pipeline. So I'll say Yes, go ahead create a pipeline.

And the first thing the pipeline says, is that okay, where is your code, right? Because everything revolves around the code. Now, at this moment, our code is in as your repos, right? So we have actually checked into as your repos. But if your code is into Bitbucket, or some other source of like GitHub, right, no issues you know, you can go ahead and configure even those now to create a pipeline you know, they use a language called as why a ml so yet another markup language. So I'm going to go and say that yes.

Here is a markup language and I will say okay, select this sub project. So he says that okay, what what is your language you know, because, depending on the language, you know, we have some basic pipeline templates. So I'll say yes, my at this moment, my language My project is all ASP dotnet And it is basically ASP dotnet core, isn't it? So I'll say yes, it is ASP dotnet core. And you can see that's basically the YAML what we have at this moment and if you close this see the Yama language the Yama language is as follows. You don't have to know too much you know, but let me just try to give you a brief out here.

So first is if you want to go and create a variable in yamo, you have to give a main section at the top for example, you can see this is variables. And then he has said okay, solution file is SLM. Right? And the build platform is any CPU, right? So, you can see that these are all the variables. So to declare a variable, you have to give the variable name colon, and then the value right.

And then these variables are used down below. So for example, you know, if you look at dotnet core, the first thing for dotnet core is you need to go and get all the all the What do you call the references right? So for that, you know, it's firing a task, you can see this word here task, so it's This task, you know, go ahead and fire the nugget command. And for the nugget command, the input is at the rates, the dollar solution, the solution is nothing but it is this one. So it will actually go to the SLN file, it will take all the things and it will try to do and get latest right. And then you can see there is a vs bill.

So again, there are variables to it. So you can see there are task and for the task, you know, there are variables and the variables are defined at the top. So, when you talk about the YAML file, you know, it's it's a very simple file, in a way you can go ahead and you can write your code. Now, at this moment, you know, do not try to go too much into YAML. Whatever it is that at this moment, you know, we will just try to save and run it you know, so I'm going to go and say Save and run it. So you can see here.

So what is the name of this pipeline? So I'll just say that this is my some project, build a pipeline, right? And it says that commit this Well yambol file at this moment into the same branch out here. So I'm gonna go and commit this. So, that it is you know, this is the, the Yama file which is created at this moment right. And if I go to my pipelines at this moment, I see this sub project, okay.

And you can see that by default I have set run. So, it has started running it, when the pipeline is running, it actually shows this blue icon out here. And you know, it says that this is running once the running is complete, this will actually show it as a green sign. So after some time, you know this should actually show it as green. So pipeline blind by blind, right. Okay.

All right. Let's let me refresh it sometimes. Right. So there it is, it is still running and after some time, it will show me a green sign. So very quickly, so at this moment, triggered manually, I will show also how to go ahead and trigger it automatically. Right.

So we went ahead, we use this boards to create the work items, we use the repositories to do the commit. And now we are create we have created a pipeline, which is actually doing a build. So let's hope that this becomes a green as app. So that it is it is green now. So very nice. That means our pipeline is built.

If you go and see if you want, you can go and you can also see in detail, you know how the build happened. So you can really go to this build, and you can see that what exactly happened, you know, for example, let me go back to the pipeline, just to show you something, you can always go and say, for example, look at the run so these are the runs here. So in the runs, you can go and you can see how exactly is that's a job right so let's see the job so you can see here. It also gives you a very internal snapshot out here say that saying that? Okay, what happened in the first thing these days variables were created the job parameters were created then it initialized the job right afterwards afterwards it did a check out so basically it used the get commands the local commands it did a gate then it installed nugget if it was not installed then then it actually use the nugget command and it used the ch proj file remember when you say nugget should use the CH proc file to do the get latest it even did that then it did vs bail and it built the project you know into into a directory so the directory is d at this moment if you see down below somewhere you know there will be a directory where the build must have happened.

So copying files final final directory. So somewhere here you can see that he has created a web app dot zip into this folder called as d A one a okay whatever site so you can also go and see you know, internally you know how that job has run and where it has got stuck and so on. Right. So quite. You know it's quite neat you know as far as I saw But now one of the important things, what do you want to do is this you triggered manually, you want to go ahead and trigger this automatically. So you can see at the right hand side this small thing out here.

So I can go to this sub project, you can see at the right hand side, this this, this dot dot over here, I can go and I can say, in the settings, I can say that sorry, in the sheduled runs, so I can say sheduled runs. Where is the setting? I want to say that this Okay, so I want to say settings triggers I'm so sorry, guys again, sometimes, you know, forget those menus out there. I hope as a developer, you understand the frustration. So what I have to do is I have to actually go and edit edit this YAML so I actually have to go and edit this yamo out here, and then I have to go and click on the sign out here and say triggers. So if I click on this triggers out here, over here, it will actually give me that setting saying that okay, when do you want to trigger the belt Do you want to trigger the belt manually.

Do you want to go ahead and trigger the build automatically? So right the YAML integration from here, and I will say enable continuous integration, right? So in other words, basically I want to go ahead and shedule the building as soon as the code is checked in, right. So I will go and I will save this. So this is here, and that's what is what I've done. So basically now I have made this build as automatic.

Okay, let me check again. This menu sometimes No, you have not, I want to save the changes. Where is the Save? Save? Yeah, so I'll just say save. I don't want to queue it.

I will just say save at this moment. Made the bid. Automatic, right. Let's see if this. Okay, so let me look at my pipelines. So I just want to make sure that if this pipeline is automatic, so I'm going to go to the settings and just Check.

So new runs, is that right? That is good. Okay. And sheduled runs, sorry, not scheduled runs. settings. So it is enabled, you know.

So I've enabled the CI over here, right. So now let's go ahead and let's see if this works or not. So remember guys, you will edit the YAML. Again, you know, in case you are getting confused, don't get confused, you will actually edit the YAML file, right? So you will actually go ahead and edit this yamo file, you will go to the settings out here you will go to triggers and you will say that this will trigger in continuous integration. If you say disable continuous integration, then you have to do it manually, right.

So now let me go back here. Let's go to pipelines. And let's see if automatically things update or not. So I'm going to go back here. I will go to my solution explorer, and let me go and add some changes. So I added some more code, right and I will go ahead And I will check in.

So I'm going to go and say check in this code, right click Commit. And new changes, no changes, right. And I will say not only commit, I'll just say commit and sync it online. Right. So there it is. It has gone online.

Let us go to your repositories. First I'll go to your repositories. And I can see in my web app let's see in my web app first thing, this is just now committed, you can see just now so that is good. Now I should see automatically the pipeline getting fired, where is the pipeline getting fired, so you can see recently runs let's look at run so there it is. You can see it has started automatic, you know, the build, right and I can go and I can see the build at that time itself. I can go inside the job and see that how it is running so you can see the nugget command is running at this moment.

This is the blue sign out here. Then the vs build will run then the vs test will run. At this moment. We don't have we have not created yet. test you know, but must be I will try to show you the unit testing as well you know how it works right. So, so this is how the automatic build as your pipeline helps you can see now the vs build is running right then the vs test will run and then after that you know he will go and put that whole zip file into a folder.

So, there it is. Right so so now you can see automatic ci has been enabled. And once this Okay, so there it is it has finished right, good. But now what about going and taking this deployment and putting it right away into a server and making it online, right. So this is good that we can now create a plan by using the tool by using the boats. We can go and check in and check out and do all the collaboration by using the repositories.

Then we have this nice pipeline out here where I went ahead and I created an in what are called input pipeline, right. So this is the input pipeline. And I created a build pipeline, I will say rather, now I need to go and create a release pipeline, you know, wherein I want to take this build and deploy it to some kind of virtual machine. So let's see how we can do that. But now logical thinking, if I want to go ahead and push this build, to go live or to UAE server, right, I need a server, isn't it, I need a place or a URL in a where my application will load, right? So I'm going to go again, back to as your and I would like to go and create a virtual machine must be but a virtual machine would be too much, right?

I know that my application at this moment is ASP dotnet. It is SQL Server, you know, so I can go and create an app service. That's what the app service is all about. I would suggest to go and watch you know, our basic tutorials right from the start, where we explained how to create an app service. So I'm gonna go and create an app service because I have a dotnet application and you know, back end is very fixed. So if you have a Java application or an old application and PHP and Python, this app service has like, ready made template with everything.

So I'm going to go and say create out here, create the app service. So there it is, it is getting created. And let me let me pick up a very cheap virtual machine for now. So let me first thing you know, remember, we have to create a resource group. So I'm gonna go and say, some resource one resource one. And let's give some name here, you know, questpond live.as, your website's dotnet.

Is it a source code or a Docker? No, it's not a Docker. It's actually a source code. What is your runtime? Is it ASP dotnet? Is it Java?

Is it node? Is it PHP? It is Ruby, right? Mine one is dotnet core 3.0. Right. That's what it is.

And where do you want to host it I'll just host it on a central us server. What kind of machine you want. Let me go and change the size. It is you can see that he has taken One standard but I would like to go and you know check if there is something more cheaper than this flexion so that it is you can see it is s one that is 4800 INR Indian rupees. So looks to me that this one is a better choice, I'll just go and say Apply. I think it shows the same thing for me.

And I'll see you next year. Go ahead. Yes, I want to do you have to have an application insight? No, for now, I don't want to really know that this application. Let me keep the application insight. okay for now.

And I'll just say review and create it right. So there it is, it is getting created. The virtual machine is getting created right out here. It is validating and also in my notification it should show me the tracks so okay. Right. So yeah, I'll refresh why it is not showing anything in my notification.

Okay, okay, create, I've still not created it, it was a review, right? Okay, fine, I'll say create. And once I do a create, you can see initializing deployment. So I think this will take some time for deploying and creating the virtual machine, it will go ahead and also create a portal for me. So that you can see if everything runs good, you know, I will get an URL. And I should be able to go and host my application on it.

So if you see at this moment in my app services, I can also go to the resources. So we can go to the source group out here, this one. And as you can see, it's deploying. So once it is deployed, I should I think I should get my URL right out here. So let's wait for some time. But until then, you know, how about going back to our as your pipeline and creating an output build, you know, that's also going to take time, isn't it?

So let's go back here and let's create a release pipeline. Please note, previously in a week created a build pipeline. So this was a build pipeline, right. And this one here is a release pipeline. So I'm going to go and click on this release pipeline out here. So I'll say new pipeline.

Let's get started. Now, when you say a bill, it needs two things. One is it needs the artifact you can see at the left hand side, this small workflow here, it needs the artifact, you know, that zip file, which was there, you know, while the build happens, so it needs that artifact. And it needs you know, where it you have to get hosted. So this is the stage one where you know, I'm saying that it should be hosted on this server, you know, which I'm creating right now out here, right? So for now, I'll just say okay, let's first go ahead with artifact.

So first thing, select a template. What is this, you know, this is a zero service deployment. Remember, you know that that was already selected, so I'm just going to apply it so that I get something which is ready made out here. Also, let's go and select the artifact. There are five artifacts out here, but my build is this some project And inside that, you know, whatever is the latest artifact didn't just take it you know, so I'm gonna go and say add out here. So you can see this some project is added.

And also you can see there is a small trigger button button out here saying continuous deployment. So I'm going to go and click on this and I will enable continuous deployment. So, previously we had a continuous build. Now this is an continuous deployment right? So you need to go and enable it. Please note that in case you are working in development, please go and have this because you will get billed for every build what is done out here because the time you start utilizing the CPU right as your will start billing you so please ensure that you choose this all very carefully, right.

But yeah, okay, I have enabled it. This is good. So continuous deployment trigger is that okay, now Where is of server I hope our server is now running, it's still there. It's taking time, no problem. It's deploying will wait for some time. So what we need to give now here is we need to give where the server What is right?

So what is my as your subscription as your subscription? Is that one, pay as you go authorize it? Yes, let's go ahead and authorize it. Because it's possible that you are an organization. But at the end of the day, your pay as you go account can be different. So you can see it is authorizing.

So once it authorizes, the next thing is what is this? This is actually web app on Windows. Absolutely. So this is web application, which I want to run on Windows. So that is good. Let's, let's wait for the authorizing to happen.

Also, let's ensure that this go live happens out here. One succeeded. Wow. So questpond live, where is my URL? Where is my URL? Okay, that's one home.

I want my URL. So that's application insight. I should get My URL somewhere here, why am I not getting it? I think this is the app service, it should be right out here. Sometimes, oh, it pulls in also from somewhere. So you can see, this is the questpond live.as, your website's dotnet.

This is at this moment, my homepage out here. And I expect you know that so that, you know, when I go ahead and I check in the code, it should automatically go and build, it should automatically go and do the release. And that really should go and deploy into this server out here, right. Now the next thing is I also have to give the server name out here, the app service name. So you can see correspond like this is the one which we have just created. So I'm going to go and save this out here.

Save, right? So we have continuous deployment CD. I'll save this this is great, right? So everything is configured. deployment is configured. Our website is running now, let's see If all the things will run or not right, so I'm going to go back here.

Now let's say we go ahead and be checking the code first thing. So let's go back and let's see the whole cycle, now it is running or not. So removed some code. So I'm going to go and remove some code out from here. And then I will see her commit, let us see how it works commit. And I will say, go live.

So new changes, right? new changes, right. And I will say, commit and sync so that both of them happen in one go, so that it is committing and sinking. And this will actually now trigger our build, isn't it the first thing is our pipeline will get triggered. And you can see new changes you know, which I just checked in, that will get triggered and this will then trigger once this finishes, it should actually go and trigger my release. That means this one here so at this moment, you can see this is my real Least pipeline which I've created just now, we should actually give a good name to this, you know, it is not a good name, let's How about giving some good name here saying that this is the go live pipeline?

I know. So under save this, you know, so that right? So change name, right? And so this is our go live pipeline, right? So I expect you know, my goal life should not fire automatically right. So let's first Wait You know, for that pipeline to finish.

So let's look at the runs it is still there in blue. And once this becomes green, then we will see that the release is getting kicked off, you know, so let's wait for some time. So that it is it is green now. So let's go to the releases out here. Oh, there you can see the release one has been triggered automatically. So our continuous deployment is also working.

Okay, welcome to the summary page and so on. I'm not interested at this moment. So there it is. This is it is it has done the content As deployment has started, it has picked up I think, the rar file from here and it is actually waiting for the Azure pipelines. So, it's basically waiting here right. So queued for the agent automatic trigger has happened, let us see what happens right.

So, we are all waiting and what should happen is you know, the final output is that when I do a refresh, my site should go live, isn't it? Okay. But, but guys, you know, before this, this whole thing completes one very important thing is at the end of the day, everything cannot be automatic. I believe in that you know, that humans cannot be replaced issues are very different. So, the point here is that you know, try to automate you know, whatever is possible, but if you feel that, you know, some of the things cannot be automated, or it is it is it is taking too much time must be you know, those kind of things, you can do it manually, isn't it? Okay, so, that's so for one minute, I'm ready to wait for one minute by clients releases pipeline, oh, there is an error here, you can see that as an error, I'll just go and click on this error out here.

And it says that he does not find the zip file. Remember I said the zip file, the rar file which gets loaded, he is not finding it. So that means, you know, we need to go and fix certain things. So I googled around. And what I found is that, you know, one of the code snippets of yamo is missing. So I googled, with this error, you know, what I had got out here, and if you go and search it, the full stack overflow link comes in.

So it says that, you know, when your build is done, so in other words, when your pipeline is created when the build is done, so basically in this build out here, so I'm gonna go and edit this pipeline, it says that it it does not it does not have a published task out here. So that is so sad. So I'm gonna go and create a published task out here. I'm just going to go and copy that. So this is remember that lots of tasks out there, you know, task VST s this is running the test. Fast This is running the build, you can see at the right hand side, you can add more task out here, you know, so must be if I say publish must be there should be a publish artifact out there you can see.

So it looks to me that this publish task is the same thing if I go and say, publish this, right. And I just added, you can see Oh, that's a dotnet code. But I think you know, this publish artifact task is, I think the build is already done. I'm so sorry, the build is done right? So we don't need this, this is going to leave this. So this we don't need.

So this is the published as soon as we can go and guys find it out. That's about this task is out here. But the point is that if you do not have an idea, you can go ahead and you can use, you can add it from here. I just copied it from the URL out there, right. So I'm going to go and save this. So updated the as your YAML file, right and updated it with the Publish command.

So that's the issue. So now, you don't have to really learn Yamal, I would suggest, because I feel you know, you should concentrate and focus more on the delivery part. So if you have some issues around just google around and you can search your favorite task, do some small amount of PLC, I think you should be good with it right? Now, let us see if things will work or not. So I'm gonna go again back and trigger I don't have a trigger from here. Now, I will just go ahead and trigger from the releases.

So how about going out here and saying, Let me trigger this manually. So can I trigger this manually? I think I can. So let me go to the release out here. And let me try to deploy. Okay, cool pipeline, where is the menu of saying now execute this right.

So okay, so create a release? Yes. And this is a manual one. So I'm going to go and say select this. Okay, for that. So I have to go and create a new release.

Right? So this is the pipeline, I have to say, okay, manual release. Okay. And I'm going to go and see. Okay, created right. So there it is, it is now staging out that Oh, but this won't really work right again.

Why? Because that build pipeline itself is a problem isn't it? I'm so horrible. Yeah. So you have to first go ahead and do that right. So I'm going to go and abandon this.

I'm so sorry for this. So basically, I need to go ahead and trigger the build pipeline because the problem is in the bill, the build did not copy the zip file, right? So let us go ahead and again, try to manually run this so I'm gonna go and say run this pipeline. And yes, run it just run it right. So there it is. Manually run by ship at this moment, this is not automatic.

So manually run by ship out here, right just now. And sweet Seeing my pipelines I should see that one manual running taking place that's the blue sign out there and once this will go and publish that rar file into that D one one and slash one folder whatever it is right? I think it should fix up the release right so let's let's wait for some time. And let's see if we get out here six This is abandoned I think he has already started this release three also so that's good to see all that it is it is it is deploying now. So it looks like it has got the bill. So this left hand side you know to get the bill has been done and it is now trying to deploy this code into the online virtual machine which I've hosted so I I feel after some time I should see my MVC core application running let it is so that you can see my MVC core application is running everything is automatic.

So nice to see that right. Okay. Looks to me that I have to refresh. I think it is succeeded. The refreshing slope, right? So great, you know, we can just watch once again, the whole ci pipeline, the whole CD pipeline, all that DevOps and so on.

So let's go ahead and do that. So I'm going to go here and say, so rather than doing it out here, how about going to the homepage, so I'm going to go to the homepage out here. And I would like to change something in the homepage, so that I can see that in the live right. So I'll say welcome to, to as your DevOps, right. So I will go and I will check in this HTML file, the CSS HTML file to be very specific. So I'm going to go and say commit.

So this is change to index page, right? And I will just say commit and all sync. So you can see that this is all going online and publishing, sinking and everything. That's good. Let's go back to our pipeline. So automatically, the pipeline will fire.

So it's good to run out here. So you can see See, you can see that it is actually running this right. So, that is blue out there which is running. Once this gets done it will actually go and trigger my release as well. So, this one was done sometimes back right. And I expect you know once this, this runs happen out here so that it is green.

So, that means now it will actually go to the release, right, so, my release should automatically go to release. So, release five there it is release five has started. It is in queue. So, basically you can see it has started this and once the whole thing goes live on to the Azure VM. I should see here Welcome to DevOps, right, so there it is deploying to the as your app services, three of three task finishing. 567 Yep.

And after some time, I should see, welcome to DevOps, under construction that is also very good. You can see that as well. As it is putting live in as your is also taking care of that 99 point 99% SLA thing, right single site under construction, no problem. But after once the App Service has been deployed, refresh, refresh. Right, that's like okay, I hope after some time, I should see the go life. Right.

So that's that's it as you're welcome to as your DevOps. So you can see the changes have gone live, this has succeeded so nice, right. So this was the complete as your DevOps, you know, where we did a plan, then we did a code check in, then we did a continuous build, then we did a continuous release, and that release, we actually published it onto the server. Now, one of the important part of DevOps is continuous testing as well. So this is it is very good to see that we have continuous build, we have continuous deployment, but at the same time, we would like to do continuous testing as well. So in case if you have unit test, you know, as your DevOps also can plug in that in the pipeline, right?

So I'm going to go and create a simple unit test out here. So, what I will do is, we already have this index action, I hope that you have done a bit of MVC, if you have not done MVC, I would suggest to go and watch my MVC five and my MVC core videos, you know, where I have covered MVC in detail. But here, what I want to do is, you know, in this index, you know, let us go ahead and create a simple view data. And I want to go and write a simple unit test, you know, which will go and which will check this. So, you can see that I'm setting this view data, which is vd with a value, let's say sum value, right? And I would like to go and create a unit test, you know, which will actually check you know, if this view data is having the value as some value, right, so that's the unit test.

I'm good right. So now to do a unit test with a dotnet core at this moment or MVC core, there, they have given a project called as the end unit. So I'm going to go and add the x unit project over here. So x unit. So you can see that this is the x unit test project for dotnet. Core.

So when you talk about dotnet core, this is the project, you know what it is, you know, people create. So x unit project for testing, right. And, let's see create. So there it is, you can see we have two projects now. One is web app 123, which is our actual website. And then we have this x unit, which is the unit test.

So first thing is, you know, if this unit test wants to go and test web 123, we need to add a reference of it. So I'm gonna go and quickly add a reference of web app 123. And in this test one method, we will write our test case right so here we are going to go and write our test case. And then this test case I will run it on as your DevOps. So now the first thing is we need to go ahead and get the controllers in so I'm going to go and import them namespace of the controller. And we will see here where home is equal to new home controller, right.

And you can see this home controller actually needs, you know, an object to be injected. So if you look at the home controller out here, you will see that this home controller constructor needs the ilogger. Now, so that means that I need to go and create an instance of this home controller with the ilogger type and inject it right. So let us go ahead and and use mock testing. So let's go ahead and use mo q the mock and create this mock objects, right so I'm going to go and you know, add some mock objects out here. So people who are new to unit testing, I would suggest to go and watch our videos on unit testing, and mock testing you know where we are explained how to use it, but for now, I'm gonna go and use this mo q out here and I will install it.

So you can see that I've selected mo q by Daniel, and I'm going to go and install it. So once mo q gets installed, you know the Then what I can do is I accept yes I accept, I can go and I can do something like this I can go ahead here and do something like this. So, I can go ahead and create a mock object you can see this mock object is actually belonging to the using mo q which I just installed wire the wire the wire the nugget right and this ilogger is nothing but it is the Microsoft extension dot logging right so, I'm gonna go and create object of it. And so, what this mock will do is it will create a fake object have ilogger and home controller and it will inject it into the into the constructor right. So with this you know, we can go and we can now start invoking the methods of the controller Right, okay.

So now let us go ahead and say, so we are going to go and invoke controller so where result is equal to controller.so we are going to go and invoke the index method remember and this we will typecast it as view result as view result, right result. So, your results Yes, as a result class, why as view result, you know, because you know, then we can go ahead and check the view data inside it. So, if we do not typecast it, we won't be able to actually go and do the testing. So, you can see here I am typecasting it to view result. So, this index is actually an action result. So, you can see if you look at this index at this moment, it is an action result.

And to access this view data and all those things, we need to actually go and typecast it to a view result. So, I have typecast it to a view result. Now I can go and I can check the view data and do my assertions. So, now we can say assert dot equal or LC equal that are equal was the old one. And so what are we expecting here? We are expecting the value as some value, right?

So I'm going to go and say, what are we expecting you can see expected is some value, right? some value is all small. And whatever we get from the results, view data, vd, remember the key is VDI out here, right? So with this, you know, let us go ahead and run this test case. So I'm going to go and run test and it should actually go and show me a green sign out here because everything is passing right. So there it is, my test case is running.

That one you can see the red sign out there. This is an old test case which I was running. So this is the new one. So it is still running. And I hope that I should see proper results. So you can see that my results are, everything is passing, if I go and if I say, I'm expecting some other value than the test case, we failed, right?

So I can, I can just go and test this. So I'll just run this test case. And I expect that the test case should fail. Why? Because, you know, it's giving me value as some value and I'm expecting some other value, right? So that my test case is running.

And you can see some value and you are expecting some other value, I missed the M part of it, right? So assume that, you know, this test case is a failed test case. Let's let's, let's make it a failed test case. And we will go and we will plug in this test case now into the Azure DevOps and let us see that if as your can fire this as a part of its pipeline, right. So I'm going to go back again. And let's go and check in our unit test case right into online.

So I'm going to go here and see changes and it's commit so I'll go and I'll commit this What I will do now is guys, I will just go ahead and mute my audio, and I will do the commit, right. And once I come very near to the test case writing, we can, I will again regain my voice right so that I don't have you don't have to listen to some good music right after listening to my voice. So let me go in and mute let me commit everything. Let me go to as your DevOps, you know, let me see if everything is checked in, right. So I'll go in and mute for now. So that's nice.

All unit test case has been checked in. So let us go to our pipeline out here. And oh, the pipeline actually started firing up because the unit test case I checked in. And if you look at the pipeline we already have on VST s test out here. So you can see that we have a VST s test out here, by default, and let's see that if this VST s test will fire or not right, so you can see my vs build is happening. And I hope that my VST s test will start soon.

So let's wait for some time. So that is a build which is happening that is VST s test it is now getting started and let us see what happens. And it finished and let's look at the test. Nothing happened here you can see here. If we see down below the first bad thing is you can see that the vsds test is literally firing vsds just console dot e xe it is actually when firing left and right for all the DLLs Which I really don't want, you know, does actually fighting for all these DLLs The only DLL which it should really fire for is the it should really fire for is this x unit test project for testing, right. The other things it should actually not fire for right, but what the first thing is, it is going and trying to find VST s test for all these other DLLs which makes no sense.

That is one point, you know, and then when I come down below, you can also see that it says that test run will use DLL built for dotnet framework 4.0 No, I'm using dotnet core 3.0. So, there is some mistake out here. So you can see here, it does not match the framework and it is not executing any one of these DLLs as a part of the pipeline, so it's saying that is built is built for dotnet Standard Version 1.4 I can do anything and all that right and it even like you know this one here, this is built for dotnet 3.0. And he says that he can only test for 4.0 right so that means That we need to now edit our pipeline and somehow tell the VST s test to execute our dotnet core by using the dotnet core 3.0 framework, and not the dotnet framework version 4.0.

Right. So let us go out here and let us go and edit our pipeline. So I'm going to go and edit my pipeline. And let us see what we can do out here. That means there is something really wrong with this task out here, right? So I'm gonna go and delete this task.

And let us go ahead and search a task. And let's say we want to add unit testing. So I'm gonna go and just use this designer out here and try to see that how we can make it more so that you know, we don't have to type a lot of things in Yama, right? So first thing you can see in this Visual Studio test out here I am saying yes, I want to test my assemblies. So I have my DLL, so I'm going to go and test my assemblies. So where are your DLL?

So or what are your DLL right? So actually, I have created this in my notepad. So I will say that my DLLs if you see at this moment, our DLL, our DLL files, it is x unit test project for testing, isn't it? Right? So I want to only fire that DLL. So I'll say here you can see, this is a very interesting, interesting thing.

I'm saying that us go to the bin folder, go to my build configuration. This bill configuration actually comes from the top out here, right, the release one. And I'm saying go and just test for x unit test. So wherever you find x unit test star, only test for that DLL and other DLLs just leave it right. This is all good. And okay, let's let's try to just add it right.

Oh, I've added in the wrong place. You should keep your mouse out here and add it so I'm going again, do it. This is good. You know, you will learn you will learn more. So I'll just add like this. unit test Project X unit test star DLL.

So whatever starts with x unit test, just go ahead and run that testing, right. And it has assemblies test assemblies, right so this is out here. Also there are a couple of other things which you can do out here. For example, let me go back to my notepad you don't want to file some of the DLL. So, what you can really do is you can go and you can say, not also So, you can go and see out here for example, please note this you have to create a either you can go and give out a single quotes but then you have to put the slash and or what you can do is you can give a pipe out here and then you can separate the filters you know, by the use of enter. So for example, you can see, I'm seeing here this, you know, this is one pot, right, which I've configured, and this is the other path.

Other criteria which I've configured right, the first criteria says out here That the assemblies you know, which have X unit tests in between please only go and use them. And the second one says that do not this is not signed do not take any kind of DLL, you know, from the OBJ folder, right? So this is a not sign, and then I don't put a knot out here, that means this is inclusion, right? So this is not, this is inclusion, right. So, I've given my test assembly, you know, the DLLs, what they are. Also, remember I said, you know, it's actually invoking the dotnet 4.0 framework.

So you can see there is one more option here called as other console options, which I've have loaded, but I'm saying that please Invoke the dotnet core 3.0. Please understand that, when I actually try to run this test case, you don't have to really Google around. I'm putting all those links on the video there itself where you can go and look into it. That why because of the bugs and because of the documentation, you know this as well. become complex, I hope that there will be some bizarre in the coming time in which can make this easy. But for now, we don't have options.

So I'm saying in other console option please provide the framework is version 3.0. And the platform is x 64. So again, this is important thing. And also that's what it is, I think this should this should actually go and run our test case and the search folder Yes, it should search in the default working directory. Remember these dollar signs are nothing but you know, they are all coming from the top, you know, this is the dollar build frame, build configuration. So all these are variables, you know, which are coming from the YAML file of the top right.

Okay, so looks good, right. I'm going to go and save it. And this time, I hope that he will actually go and run my x unit test. Again, let me test x unit test. Yes. So let's go ahead and save and let's save this.

And let's go to the pipeline and again, I'll go in a mute now and and let's watch you know this test case Running here and let's see that if if everything works, right so I'm going to go in a mute. So wonderful you can see that this vs TEST TEST failure and it says that in our so dot are equal, I was expecting some other value and I'm seeing some value right. So you can see that it tells me that this job has failed. And where exactly it has failed, right? Also I can go to Test, I can go to my runs of my test case out here and I can you know you can see out here it says me that this is one field out here I can also go ahead and see the I can download this you can see that there is a, I can download this whole results.

So you can see it has downloaded this resolves the TR x file, and I can open this tr x file and I can exactly know if I see also dot r equal where it failed and what line it failed, right? Okay, I know that the court is not damaged we have the code it says line 20. So line 20 is this right 1920 right. So you can see now again, our test case is also running. Also some important points here if you go to the pipeline. So if you click on the pipelines, you can see that you have done a lot of runs out here right so you can see that we have done a lot of runs.

And if you want to go and see that you know how many of the builds successfully No, no analytics, you can go and click on this analytics out here. And you can see here it says that you know, 34% times you failed and 61% times you were successful. So the total 49 runs from the 34%, we have failed, it also gives you what do you call very important results out here, like 89% of the pipelines have failed due to this task, to unique failed test and so on. So you can see that we can also go and see the full report out here you can, you can go and you can actually see a nice visualization out here as well, right. And the same you will also see in the overview, so on the overview, when you go to your dashboard, you can see that how many times a build has been successful and how many times a deployment has been successful, right.

And also one more important point, if you go to the pipelines and if you see this builds out here and If you want to go and see the specific build, you want to actually physically get the build files, you can go and click on one of these builds for example you can see that this was a successful build. So I can go out here I can go to the job. So when I click on the job, this job has been successful everything is green out here. You can see that it says one artifact produced so if you click on this one artifact, it will actually go and say that okay, this artifact has this zip file. So if you go and if you download the zip file, you can see that I have downloaded the zip file. The zip file is actually the fully compiled project which you can take to production so if you go to the content out here so must be I can so if you go and if you see this so so this zip file, you know what what you see out here is nothing but your final build, which is there, right?

This Yeah, that's webapp 123 if we go inside this you would see your dotnet core 3.0 and you should see all your DLLs right. So, this is what is the actual final bill. So, if you want to go and see your bill, you can go to pipelines you can go to the individual jobs, what are here and to the jobs, you can go and see the artifact, I would suggest that if please go and see each one of these messages very properly, you can see that these messages what you see out here you know has lots of information on how your actual bill took place, right. So, for example, if you look at the VST s test, it actually tells you which of the test has been fired, which of the test has been successful and so on right. So, I would suggest that please whenever you are looking into this into the jobs, ensure that you go through the sentences properly understand them.

For example, you can see here it says the you know the project is taken from this SLN file. It is then creating a directory have been released, it is using the release mode and any CPU. So in case if you want to go and give some other environment, then you need to go and configure accordingly. Right. So it gives a lot of information on how your build takes place. So if you have any issues during the build, this is the one big piece big piece of information.

This is the one place you know where you would get your information properly. So, let's quickly revise you know what we have learned. So, the first thing is what we did is we went to the, to the boards and we created a task, right because remember when you talk about DevOps, so that means that the first thing is we created a work item. After that, you know, we went and we checked in a code against that work item. Then we created a build pipeline inside which we built our project as well as we ran our unit test case. And then we could In a release pipeline, which actually took this whole thing to the, to the App Service, virtual machine, right, so it actually went ahead and deployed this whole built into the app service virtual machine.

So this was in a full as your DevOps with ci CD. Remember, ci CD, again, goes with DevOps, you know, so, DevOps is a thought process, or DevOps is a working culture. That's the right word to use. And ci CD says, you know, that continuous integration, continuous deployment and continuous build are the important pillars, you know, to implement ci CD implement DevOps, right? So our continuous integration we did by the reports repository, so in repositories, what you do is you continuously integrate the code, and then continuous build and continuous deployment we did by using the pipeline's that means the build pipeline and the release pipeline. So this was a full demo of as your DevOps with with the full stack.

Cicd now a very, very important request for everyone. I am a trainer, I am a teacher and one of the things you know, as a teacher, I really want to know is that how many of my students are watching which part of the class right? So, I would suggest that if you if you like this as your series, please go to facebook.com slash questpond and put a feedback saying that I'm watching this as your series because at the end of the day, I would like to know that how many people are watching you know, the as your series or any series, you know, what I create, because what happens is, you know, as a trainer, you record all these one one hour of session and one and a half hour of session, and then later you come to know that nobody is seeing it, nobody's watching it right.

So, you know, I want to just get the idea that Okay, there are some students you know, who have reached till the end of the one hour and they are really following these lectures. So, with that, what happens is I will put more lectures on as your right I will let you know Because if you like it, I will record more isn't it? So, please go ahead and put a feedback on facebook.com slash correspond. So that I can know that how many people are following the as your series and and where they are exactly. Thank you very much. And after this session, I am flashing up some questions, please go ahead, look through the questions and please try to answer them yourself.

With that, you know, you can have a quick revision. And with that, you can also check you know that how much you learn from this class. Thank you

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.