Hi, my name is Gregory Liss. I'm the development manager for Toad DevOps Toolkit, and today I want to walk for a simple demo on how to integrate Toad DevOps Toolkit and Bamboo. One of the keys to remember with Toad DevOps Toolkit is that it is a Windows Automation Server, also known as Calm. And to make this work properly with Bamboo, what you need to have is a Bamboo remote agent and Toad DevOps Toolkit living on the same machine. And that machine can be in the cloud, it can be on your desktop, it can be in a data center, it can be a virtual machine. It doesn't matter where, but they have to live together.
Now, in the world of DevOps, one of the keys is everything needs to be controlled in source control. And if you look at how we've set up our project and look at our plan here, what I've done is I've created a bunch of small autonomous steps, each one performing specific tasks. And the easiest way to integrate with Toad DevOps Toolkit and these comm calls is via PowerShell. And we provide a large suite of PowerShell examples with the installation of Toad DevOps Toolkit. And the key thing we've done here is all of the scripts don't live on the machine. So if the machine crashes, you lose them all. Where they live is in Source Control. So the very first thing we do is check the scripts out of Source Control. And we start to build notification, we create any additional build directories that have to be made, and then we do some validation checks to make sure we have everything in place. After that, we can look for database changes, run our code analysis, execute some scripts, do some database compare and syncs, schema compare and sync, table compare and sync, unit testing, and then we clean up everything.
Let's take a look at practically how this works. So I'm in-- this is version 12 dot 12 of Toad, and I'm using Source Control for objects, using Team Coding. I've got this function checked out. And I'm going to make a small change to it. And compile it to make sure I didn't make any mistakes. It compiles. And now I'm going to execute it, because I want to see if everything works the way it's expected to. And it does. I get my DPMS output, which says I've modified this program. And I like that. I like how it came out, so now I'm going to create a unit test for it. And I already have an existing test definition for this. And this is new, so I want to give a new test case name. And we'll call it New Test Case Name. And I tell it OK. And what that does is it simply creates a new test case in my repository. And if you can see here, I'm doing all of this in my development environment. So we're trying to simulate the idea of a developer doing his work and his development environment, but eventually we want to migrate all of this information into test. So I'm going to check in this unit. Check it in. And while I'm at it, what I want to do is I want to take a look at some data, because maybe somewhere in here, I need some different data for this test. So I'm going to add a row here, and because I'm a big fan of George Carlin, I already have stuff. And we'll add more stuff. And I'll commit those changes. And I'm still doing all of this work in the development environment.
Now if I go over here and look at my Code Tester, if I look in my Code Tester test environment, you can see I have no tests at all. Nothing is in there. If I switch this to my test environment and look at the same table and look at the data, this is an experiment from earlier, so what I'm going to do is I'm going to delete all of those and commit them, just to make sure everything's all clean. Now if I go over here to Bamboo, and I go to Run My Plan, you'll be able to see that it's going to start performing the initialization tasks, and shortly it'll start getting the database changes. And it will walk through this, and this can take a few minutes, so I'm going to temporarily pause this demo while this happens.
Now that this has been running for a few minutes, it's finally finishing up the clean-up tasks, and it's done. And what we have to do is we create artifacts on this build. And because we ran code analysis and we ran a database compare and we ran a schema compare, what this allows me to do is bring these reports directly into Bamboo, so that anyone can pull them up from a web page. This is the code analysis report. And here is the database comparison. And here's the scheme schema compares. And you can see we're comparing dev to test. Now you can go look and see the entire summary of each of these tasks and look at the logs, and you can see, it's very verbose in its tracking. So if something goes wrong, you do see all the data. Now from a practical standpoint, if we refresh these tables, you can see this is the test environment where I just deleted and completely cleared out this table. And we have more stuff in this table. And if I were to go to look at my functions, and go look at this function here, you can see that the date is indeed 9/26. And in my Code Tester, if I refresh this, this is still my test environment. You can see that I have my test for Table 1 Functions. And I gave it