>> Synchronizations, go. Here we go.
[MUSIC]
>> Welcome back to Five Things.
This is Five Things about JavaScript and DevOps.
Today, I've got the amazing, the amazing,
the amazing Donovan Brown. How are you doing, man?
>> I'm very good. Thank you for having me.
>> Nice to meet you.
>> Yeah. First time on the show, so I'm excited.
>> I know. How can we have not had you on until season two?
>> Because you had Damian Brady instead,
which I probably would've chosen myself instead of me to Damian.
>> Damian had ponies.
>> Yes, exactly.
>> Did you bring a pony?
>> I did not.
But I left my horse, I did a Keynote last night,
I rode it in on a horse, but I told
them to send them back after I was done.
>> All right. So, Donovan is a really great at DevOps.
He is Mr. DevOps.
>> It is. Yeah. Pretty much at Microsoft.
>> Doing JavaScripts, you still do DevOps, don't you?
>> Absolutely. Any language,
any platform, and I've been doing a lot of node lately.
It's like a Yeoman Generator.
So, I've been having to apply
the same DevOps best practices I use for
every other language to all my node projects as well.
>> Great. Captain Kirk, thing one.
>> Azure DevOps.
>> Right.
>> It's a new name for a product that's been around,
but there's also been some new things.
>> It is.
>> What is it?
>> So, Azure DevOps is
the rebranding of Visual Studio Team Services,
which we used to call VSTS.
But it's more than just a rebranding
because what we did is we teased
apart all the different services so
that you can now acquire them individually.
So if you already have your code sitting in GitHub,
you don't have to use our repositories.
You can actually use our work item tracking,
you can use our CICD system, which is fantastic.
You can use artifacts, storage,
and test plans, but you already had your code sitting in GitHub.
Or you might already be using
Jenkins for your CI but you don't have CD.
So, what we've done is allowed you to
acquire them anyway that you want to.
I like to describe it as,
everything that you need to turn an idea into
a working piece of software: work item tracking,
source control, build, and release,
artifact management, the whole nine yards.
>> Great. Thing number two.
>> There you go.
>> Mix and match. You mentioned you could do Jenkins.
>> Uh-huh.
>> So, somebody comes in they don't have to
use the entire Azure Pipeline then?
>> Exactly. So one of the important things is
that it's a very scary endeavor.
I think they just have to rip and replace
everything that I have to go
use the value that we offer in Azure DevOps,
and which is another reason that we cut it up into sections.
A lot of our customers have already made an investment in
CircleCI or made an investment in Jenkins,
and they have a really good CI system going
but they don't have deployment yet. We're like, "Cool.
You don't have to switch to our build to get to our deployment.
You can actually just use Release Management
and augment what your toolset is today."
I tell everybody fix what hurts most first.
So find what service of Azure DevOps
fits that particular one and just fix that one thing,
and then use everything else that you already haven't fixed.
>> Just like a buffet.
>> It is, it is. What I'm hoping will
happen is you'll see how cool we fix that one problem,
and then we'll just spread throughout your pipeline.
>> Sweet. Thing number three. I'll do weird for you.
>> All right. There you go.
>> View, Angular, React,
whatever the next JavaScript framework might be out there.
>> So, that's every five minutes.
>> What is interesting about the Azure DevOps for those people?
>> The thing about I think is interesting is
anything that you can do from a command line,
you can do from our build and our release, anything.
Because all of those tools that you just described,
most of them come with a command-line interface
that allow you to create new projects,
compile projects, per package them correctly for deployment.
What you can do using Azure Pipelines is say,
"This is the command I need you to run at this particular point,
now that you have my source control,
to package it correctly,
to hydrate the files that I need correctly."
So, whatever you're currently doing today,
we're just going to automate that process for you going forward.
So, I don't care what the next platform is,
we're already ready to help you with it.
>> NPM scripts all good to go.
>> Ready to rock and roll.
>> All right. Thing number four.
>> Docker.
>> Yes.
>> Everybody loves Docker.
>> It's hot.
>> Lot of people love Docker.
>> Yes.
>> So, doing JavaScript Docker
inside of Azure DevOps, what's that look like?
>> It looks really, really good actually
because we actually have hosted build machines.
These are build machines that run Mac OS, Linux,
and Windows, and several of
them already have the Docker tools installed.
So, for you to start building Docker containers,
all we need is a Docker file.
We don't need you to figure out anything about Docker,
we don't need you to stand up the infrastructure,
we'll host it for you.
You basically can say, "Here's my project,
there's my Docker file,
please go build me an image."
We can store it in inside Docker Hub,
we can store it inside of ACR,
inside of Azure if you want to do the that.
>> Azure Container Registry.
>> Yeah. Azure Container Registry is really good because it puts
your registry right next to
the infrastructure so that it's really network close.
You're going to have really fast deployments of
your images into containers on your infrastructure.
Doing Docker deployments, we can
deploy it to Kubernetes, we can use Helm,
we can deploy to a standalone
Docker image that you might be running,
I'm sorry, Docker host you might be
running in a Linux machine in Azure.
There is no limit.
If you can do it with Docker,
you can actually orchestrate that using Azure DevOps.
>> Azure DevOps can do it all.
>> All of it.
>> All right.
>> Anything. All I can say is that we can help you
with any language in any platform,
and I've had to actually prove that a couple times.
Once I have to prove. So I had to prove it for VB6.
>> Yeah?
>> Right. So a person came up to me and said,
"You said you could do any language any platform."
I was like, "Yeah. I can." He's like, "Really?
Can you do VB6?" Like, "You still do VB6?"
Yeah. I'm like, "I'm sorry for you,
but I can help, right?"
So what I did is I actually help the guy figure out how you can
actually do all the DevOps best practices with VB6.
>> So they come with therapy afterwards for this?
>> It was saying is that it's installing is the hardest part.
Like, getting VB6 to install on
a modern OS is almost impossible, exactly.
>> [inaudible].
>> I did have it fail first,
and then I went back and put it on a Service Pack,
and then I went installed it again and it finally worked.
>> Nice.
>> So, I have a blog post where half of it is
how to install VB6 on a modern OS,
and then the DevOps part was easy.
>> So, what I'm hearing is if somebody wants
a VB6, you're the man?
>> No. I have a blog post, I'm not the man. You can go read that.
>> Thing number five.
We do know you do JavaScript,
and in a lot of these larger applications I've written,
we've got unit tests, we have
end-to-end tests or one of the other.
>> Sure.
>> How does that work through DevOps?
>> Perfect. So, I happen to do some node development as well,
and I use Mocha for my unit testing.
>> Okay.
>> You sign on for my faking,
and then I use Istambul for code coverage.
What was really nice is the same way
I run those commands at the command line,
the same way I run them inside of Azure Pipelines.
But what's even cooler than that is we're able to publish
the test results as a first-class citizens
right there in my build summary.
So, it didn't matter if it wasn't.NET on Windows,
which was I think we can only help them with Microsoft.
>> Correct.
>> But here I am doing node with Mocha,
and I was able to show you the test results,
able to show you the line numbers if there was a failure,
and even show you the code coverage.
Now, if you're doing something like Selenium or some type of
end-to-end testing of your application,
whatever the case might be.
Right. Again, many of
those test tools can be run from the command line.
So, all you have to do is go over into Azure Release Management or
the Release Management is where we
actually deployed your app because you
want to run integration after you successfully deployed the app.
>> Right.
>> So, what we would do is allow you to
deploy the app and then have a task that says,
"Now that I know the app is deployed,
go run this command."
That's going to go fire up Selenium or Protractor,
whatever the case might be, exercise my test,
and then publish my test results.
So, it doesn't matter if it's load,
performance, spool in the end,
unit testing, if you can run it from a command line,
we can run it in our product.
>> That's great to know. Donovan, thanks for coming on.
>> My pleasure.
>> Really nice to see you. Thank you
for coming on and seeing us on Five Things.
[MUSIC]