>> Many organizations are choosing to use
multiple cloud platforms for greater choice and flexibility.
As such, developers and ops personnel need
a DevOps solution with flexible multi-cloud support.
Gopi is here to show us how Azure Pipelines
solves this challenge - today on Azure Friday.
[MUSIC].
>> Hey everyone, Donovan Brown here with
another episode of Azure Friday. I'm here with Gopi.
We're going to be talking about Azure Pipelines.
One of my favorite features is inside of the Azure DevOps suite.
So tell us about what else is in the Azure DevOps suite?
>> Right. So Azure DevOps suite helps
every customer to take
his application and run it through the cycle and then deploy it.
It contains Azure Boards for all planning requirements,
it contains Azure Pipelines for
continuous integration and continuous delivery,
it contains Azure Repos to store your call,
Azure Test Plans for testing,
Azure Artifacts for storing your artifact solution.
>> Yes. I always like to say Azure DevOps is everything
that you need to turn an idea into a working piece of software.
>> Awesome.
>> It's everything that you need there.
But Pipelines is the one that
everyone's geeking out over because of the integrations with
GitHub and the fact that we give you
unlimited pipelines for when
you're working with GitHub repositories or things like that,
but it does a lot more than that as well, right?
>> Right. So today we'll be focusing more on Azure Pipelines.
Azure Pipelines, we have
a completely Cloud-hosted solution that is available.
You just bring in your code and then we will
take you the entire code and then help you build it,
help you test it,
help you deploy it to whatever Cloud that you want.
>> Got you.
>> We told you having anything.
You just bring in your developer laptop and then set it up,
we will get you going.
>> What I also like about it is not
only is it completely hosted so that I don't
have to use any of my infrastructure for
build machines but it also provides me with Mac OS,
it provides me with Linux,
and Windows hosted machines for me to do my builds upon, right?
>> Yes. This is the only solution today which
has Windows, Linux, and Mac.
>> Yes. So now I have one YAML file.
Not three YAML files or two YAML files. It's really nice.
The other thing that I really love about
pipelines in the way that we've taken
Azure DevOps kind of broken it apart is
that you can use as much or as little as you want.
>> Yes.
>> So if you only want pipelines you can use that, right?
>> That is the key question that
everybody keeps asking, saying that,
hey, when I just to go talk to
the enterprises they say I'm already using Jira.
Do you need to replace Jira with Azure Boards?
No, you don't need to.
Azure Pipelines provide you that
flexibility of keep your existing tools.
But still you can onboard onto the DevOps transformation.
That's where we will probably talk about the demo.
>> Perfect, because I tell everyone what,
no matter how mature you are on your DevOps journey,
there's one portion of your pipeline that gives you anxiety,
like if it's going to go wrong,
it's going to go wrong right there.
That's the part I want you to fix.
There's going to be a feature or a service inside
Azure DevOps that we can plug in right there where it hurts.
Fix that but you're not going to have
to rip and replace everything.
You get to keep your Jenkins, keep your JIRA,
keep whatever you have on either side but let's just fix that.
What I always tell them is,
when you see how good we fix that,
hopefully we're going to be able to fix more stuff for you.
>> Yes.
>> So show me a demo of how we can integrate
with some existing stuff.
>> I think in today's demo I'm just
taking a typical Java developer.
I'm going to assume here GitHub has a Version Control system,
Jenkins has a CI system and Artifactory
is the Artifact store where
Jenkins builds and it pushes into Artifactory.
Then, Azure Pipelines that comes into the picture.
It actually takes all the artifacts from Jenkins and Artifactory.
We are planning to use Service Now as a change management system,
because it is one of the popular tools,
and then, for deployment,
you can actually use Ansible,
and we are showing multi-"Cloud" scenario.
Multi-"Cloud" scenario is real.
Whenever I talk to customers,
they do want to take their application
and then make sure it is getting replicated onto.
So today I'm going to show you in a whole already deployed
AWS the same application already applied to Azure as well.
>> Awesome. It's going to be cool.
>> Not just that,
now as you can see that the Azure Pipelines
once it does the deployment
it can actually interact with the GitHub,
it can interact with Jenkins,
it can interact with Jira and then show you
the exact same traceability
that you get if you are using the DevOps suite,
are these set of different products?
>> Awesome.
>> All right. Let's jump into the demo.
So what I have in the demo is,
this the Azure DevOps product.
We have Boards, Repos,
Pipelines, Test plans and Artifacts.
We will be focusing more on Pipelines today.
I already have one release definition that is created.
Release definition is the pipeline definition
where you actually use it to consume in
CI build that is coming from Jenkins and then
configure deployment to any of the clouds.
>> We're using Jenkins but I could just use
CircleCI or Travis or some other CI system, right?
>> You can use other CI systems as well.
So here is my definition where I have
AWS deployment target that is set up,
I have Azure target that is set
up with a set of tasks that are available.
Now, what I'll do is,
GitHub Enterprise is where my code is sitting.
I'll show you my applications that are running.
This application as you can see the URL
it is running inside a VM in AWS.
This same application is running inside a VM in Azure.
>> Got it.
>> Now, we will change something and then it just goes through
the entire process that I talked about and then gets updated here,
without you losing any of the traceability.
First, I will do the code change,
so that will take time.
Then I'll come back and then show you
the pipeline and then explain more details.
>> Sure.
>> So let's change this Cambridge to,
we are in Redmond,
so assume we are opening a new branch in Redmond,
and while updating, the way you refer
any Jira related commits are you will actually use the K,
that's the project name, and then the ID.
So it is now related to I'm fixing three bugs using
this Azure and say adding new center.
So we added an Redmond center,
that's how easy it is.
Now, I will come into the changes.
Once I commit the changes,
you can see that Jenkins will pick up a new build and it wants to,
Jenkins, there it is.
Jenkins picked up a new build now it will build.
After this is done,
it will automatically pick up a new deployment as well for AWS.
Let's wait for that deployment.
Then we will see that
there is a new deployment that is waiting for our approval.
We'll approve it then I'll walk you through
the workflow of how exactly the end-to-end,
the pipeline configuration will look like.
How I'm deploying to AWS,
how I'm deploying to Azure,
how exactly I'm using Service Now inside it,
all of those details we'll show.
>> So right now we've made a change to Github that triggered
a project to be built inside of Jenkins.
Jenkins is going to build whatever the Artifact might be.
It could be a docker image,
it could be a WAR file because I think this is
the Java apps it's probably a WAR file or something.
>> Correct.
>> We're going to use and then take that and deploy it to Tomcat
running on a VM in Azure and a VM in AWS.
>> Yes. Exactly. So now you can see that
this pipeline that is waiting for my approval.
If I approve it, it will now go ahead and deploy to AWS first.
I can just approve it.
These are the features that are available so you can
completely use our setup approval features.
The next scenario that I will show when I deploy to Azure is,
I'm not using our approval system,
I'm using the Change Management System of Service Now.
>> Got you. So the approval allows someone to say, you know what?
Just because the code has been built,
I don't want you to just go rushing inside my environment.
I might be using that environment.
I want you to solicit an approval from me saying,
is it okay to go in that environment,
and that's what we just did there.
>> That's what we just did.
>> Okay, got it.
>> So it's now deploying it.
Then, one of the cool features offered,
you literally get the live logs.
What's happening in my deployment pipeline as a developer
I get to see step-by-step. That's it.
This deployment is complete.
It's now picking up the web app and then deploying the web app.
The foster part was a back-end part of it.
The second part was the front-end.
>> It looks like using home, so
the back-end is actually a Kubernetes cluster.
>> Kubernetes cluster is what it's deploying to.
>> Got you. Now, you have
the web front-end is
the Tomcat server running on the VM that you showed us earlier.
>> On the VM.
>> Got it.
>> This is a simple VM because we have just
set up a one VM. It'll take it.
Now, a 100 percent deployed everything is passed.
If I actually now go back and then see this,
I just changed this title,
we added a new center. We should see that button.
>> Exactly.
>>Now, what happens is,
if I go back to the Pipeline,
the same release, now it'll be waiting for-.
It's deploying the same application to Azure
because that's exactly what we
want a multi-"Cloud" deployment story.
Can I take the same application keep
a replica running in AWS, running in Azure?
>> Yes.
>> So now in this case,
the key difference is instead of it using our own approval system,
it is now waiting for Service Now approval system.
>> Got you.
>> Now, you can see the way the gates
of the Service Now approval works is we created
a request and until
this request is uploading in the Service Now system,
it won't take you forward.
So now it continuously keeps pulling it.
So first pulling is done,
next pulling it will do in five minutes.
But before that we will go to
the Service Now system and then approve it.
>> Okay. What's really nice here is that
you're able to integrate with third-party systems.
Again, this goes back to not having
a Repo in replace what you have today,
you're able to say, you know what?
We have a process that we already
use in Service Now and we can't get rid
of that process to start using your tools
and now what we've done is we've integrated those two together.
>> Exactly.
>>.Got it.
>> So now I'm inside Service Now.
This is the new request that came
in and Service Now you can define
any custom workflow that you
want to offer you a change management.
So I assume first I have to
request for approval and then once the request for
approval is done somebody has to go
inside the Service Now and then approve it.
Let me just to be David today and
then let me approve this request.
Then, they need to explicitly say that this change need to
be explicitly marked as "Implement" in their system,
only if the system is marked as "Implement",
then we will actually allow it to be implemented.
>> Perfect.
>> Now, "Scheduled", I need to mark it as "Implement".
"Implement," yes.
>> I think once I just mark it as "Implement," then the
next request that actually go to the ServiceNow,
from our system, that I want [inaudible]
next to two minutes. It'll actually go through.
>> Got it. So now that we've done what
we're supposed to do in ServiceNow,
the gate here is going to go pull "Service Now" and say,
"Hey, has what needs to happen in your system happened yet?"
If so it'll go ahead and approve this?
>> Correct.
>> I'm assuming there has to be some type of timeout here?
>> Yes.
>> What if this doesn't happen for an hour?
Eventually, will it just go ahead and kill the release?
>> Correct. I think that's what I'll show you.
While it is getting executed,
I'll actually just to show you the pipeline.
How does the pipeline look like?
Then we will just to come back and then see this, right?
>> Yes.
>> So in the pipeline,
as you can see, there are two ways that we happen to find.
So the first part is
the back end part that it is doing with respect to
how do I deploy the AKS environment?
It is where the web app I'm doing.
Now, in this particular scenario,
you can see actually I'm downloading
the Word file from Artifactory because Jenkins is,
I assume, pushing it into the Artifactory.
I'm actually using Ansible to do the deployment here.
>> Got you.
>> So we have all of these tasks are built into our system.
Some of these are actually built by Artifactory team built it,
AWS team built it.
So we have a first class integration built by
our vendors and partners.
So customers can really get what they want.
>> Right. One thing I want to clarify is we
keep saying AKS is if everyone knows what that is,
but that's Azure Kubernetes Service.
That's our Kubernetes running inside of Azure.
However, those tasks will work against
any Kubernetes cluster regardless of where they're running.
>> Correct. Yes.
>> So as long as you're running a Kubernetes cluster,
then you can actually use our task to get rid of it.
>> So this is where you can
see the gates that we have configured.
It is unreasonable gate that is configured where
we just explicitly say what data we want to pause,
we want to tell them here is
the release that is coming in from here.
What kind of priority,
what kind of risks that didn't
walls and we actually declared the approvals here.
Then, the time out that you were
asking is actually available here.
We can just say, "Hey,
if the workload doesn't get completed in the particular time out,
it'll just immediately come out."
>> So they have 24 hours based on the way
it's configured now could get this done,
otherwise they'll go ahead, gets rejected.
>> Yes.
>> All right, perfect.
>> That's how it is. Now, let us to go back
and then see if the pipeline is complete.
>> Just deploying, yes.
>> I think so now you can just see that it was waiting for it.
If I just click on the gate,
so the first one failed because
obviously it was waiting for
the process to be approved in Service now.
As soon as we approved, it turned green.
Now, the entire deployment is going on.
So once the web app you just to get
the exact same view whether your
targeting AWS or I shot the entire log view looks exactly same.
So from doubling the purpose [inaudible] he does not need to learn
multiple tools from developer or id perspective.
Let me just make sure one tool that I will use to pick
my application and then deploy to
any Cloud vendor that is available,
and including even on-prem tool,
you will get the exact same view.
>> That's a really good point to Azure is in
the name but that is not the only place that it can deploy to,
you can deploy behind your firewalls on your own hardware if you
needed to as well using this product which I wanted to mention.
>> Let me just to go. So this is now you
can see the Azure instance.
We should just see this getting changed to Redmond as well.
>> All right. Perfect.
>> So let me just show you what benefits you get.
I just talked about some of the integrations too.
What it does doesn't stop there.
If I just click on any of
the AWS environment, our production environment,
we literally show you that, hey,
there are two artifacts that that we are consuming,
one is exactly coming from the Jenkins he has this system.
But if I click on comments,
this comment is coming from GitHub.
I could actually just to click on it and then navigate to
the GitHub comment directly from here.
Not just that, if I just click on work items,
if you remember I just did a tag and these are the three issues.
It actually just takes me to
the exact same work items that we actually tagged it.
So as a customer,
I will now know,
okay I just need to log in if I log in,
it just shows me the JIRA icon that we make.
>> Yes, so this is a deep link into JIRA
from Azure pipelines because we were able to
put in the correct naming convention in my commit.
So as a developer, I just commit my code like
normal and all this magical stuff just happens in the background.
>> Correct. So you did not change,
if you are using the Azure pipelines,
you did not change your data,
you did not change your quarter oppose,
you did not change your CI system.
You can continue to use the Service now as
your approval system and you continue
to use Ansible as your deployment system.
>> Artifactory as your repository.
As your work item tracking, exactly.
<< The interesting thing is I have shown
this for a Java application.
>> Yes.
>> Right. It can be Java application,
it can be a Node JS application.
>> You heard me say this over and over again,
any language, any platform,
and you just proved it for us here that, in a matter of fact,
I've actually learned something I did not know
that we could deep link Integera like this.
So this is even new for me to actually
be able to see this which is really, really cool.
Gopi, thank you so much for showing us this today.
We're learning all about Azure pipelines here on Azure Friday.
[MUSIC]