 Well, hello and welcome everybody back again to another open shift commons briefing today We are very pleased to have with us a ring who is the director of developer advocacy at red hat And he's going to give us a presentation that he's given once before On Java EE workflows on open shift, and we're delighted to have him here He's a great and very active developer advocate and does some wonderful work with devox and devox for kids So I'm going to let Arun introduce himself and Set us off on our Java EE workflow path today. Thank you again Arun All right, let's go. So, yeah, my name is Arun Gupta. I work for red hat Responsible for all of the developer outreach efforts for jboss middleware at red hat Very fortunate to work at red hat. It's quite a cool company So if you guys are always looking out to work at red hat look at jobs dot red hat calm now I would love to have you as my colleague So, yeah today the talk is going to be about Java EE workflows on open shift So if I can go into the full presentation more than here you go I've given a very high a variation of this presentation earlier on but I thought today What I'll show is what all is possible if you are a java EE developer What all you can do on open shift? Okay, so let's start with that So first thing first what is java EE now java EE is the standard way of building enterprise Java applications Java EE 7 which is the latest release of the platform was released June of 2013 So about year and a half ago and there were five three main themes for the platform And the first one was developer productivity on how we want you to be highly productive with the java EE 7 platform you write less boilerplate code and Lot more annotations where the platform defines the meaning of those annotations The second big theme for the java EE 7 platform was HTML 5 You know web sockets are often confused to be part of HTML 5 Initially they were but then the spec got pulled out and so web sockets is generally kind of clubbed into that HTML 5 bucket But what it gives you is the ability To do bi-directional full-duplex communication over a single TCP connection Jay's on processing is an inherent part of any website these days It is a support for Jay's on processing right there in the platform itself and then a lot of a synchronity a Synchronous API is added to serve let and rest To give you more scalable scalable applications And then the last team for java EE 7 was something which has been really good is you know meeting your enterprise demands is Adding two new specifications one is to do Standard batch processing now which used to be called a spring batch and now there's a standard way of doing it And then there is ability to spin up new threads Which can run in the user context and of course the jms specification which has been heavily used for You know m2m messaging as extremely simplified So this is not a java EE tutorial. So there are a lot of good content available on java EE So I would recommend you to read that but if you were to start with a Simple java EE 7 application and there are maybe not stripes that are available You know, so you here is a simple sample You just say maybe not stripe generate batch mode blah blah You know you give the art artifact ID group ID package ID and all those things and then it generates a simple java EE 7 application well, I mean you can of course use jbos developer studio as well and Using jbos developer studio and we'll talk about that in a second, but essentially it's a Eclipse with a bunch of jbos tools plugins installed over there all known to work very well with each other So using that jbos developer studio, you can create a simple java EE application as well So couple of easy ways by which you can start and there is support for java EE 7 in net beans and intelligence as well So it's pretty ID agnostic in that sense Now if you want to learn about java EE 7 though There is this github project You know java EE samples organization and in there there's java EE 7 samples project There are about 200 plus samples slash tests that are available by which you can learn about different java EE 7 technologies over there So that's the important part where you want to learn everything about java EE 7 refer to these samples Now if you are building your java EE 7 application What is the tool chain that you need to remember and that's what I'm gonna show today So for example while flight is the community project from red hat This is where the java EE 7 implementation is being done. Now. This is only a community project But what that means is there is no support. There is no Buying production support on it. There are no security updates patches that are available on it Eventually while fly will be available as jboss EAP 7 and that's where commercial support can be purchased But today if you are looking at java EE 7 support Then while fly is your primary source where you can try and build an application on while fly itself And of course jboss developer studio net beans and intelligence all three ID support while fly now We talked about jboss developer studio, but essentially it is eclipse Plus jboss tools now jboss tools itself is a set of eclipse plugins that are bundled together that provides a Lot of capabilities around jboss to jboss technologies basically You can use it with jboss EAP which is our commercial product or with our community project like while fly both of those would work Um jboss forge. Yes yet another community project from red hat. This allows you to Declareatively you know in an IDE independent manner generate your java EE 7 application or java EE 6 for that sake You don't necessarily have to know which menu item to click on and it's a very intuitive command line driven interface Which basically focuses on what your domain knowledge is and builds upon that Open shift is what brings us here today Now you may download while fly jboss tools for all on your local machine So that's one way to go around it where you build your application But eventually you want to deploy this application somewhere now you could do that on the while fly on your local server Or EAP for that sake, but open shift and I'll give a bit more detail introduction later but open shift is that has open source pass platform and What it gives you is the ability by which you know, there is a cartridge available on open shift And you can say deploy my application on while fly on open shift and we'll see a sample of that So don't get confused if you're not getting all the points together And last but not the least another important piece for your java EE story or workflow that you need to be aware of is Arcillion now Arcillion is a tool that gives you the ability to do container independent testing very easily Okay, so let's look at each of these tools and understand a little bit more of them And then at the end I'll be able to show hopefully a demo which puts all these pieces together Like I said, right now while fly is that has open source Java E7 compliant application server There is reference implementation Glassfish, but that's only for reference. There is no commercial support on it by Oracle so while fly is your good choice because Today you start building your applications on while fly and when J bus EAP is available You know, you just seamlessly migrate over to J bus EAP because the code is 99.9% 99% rather same. So the migration is rather seamless So start with while fly today jump over to J bus EAP, you know when the commercial support is available One of the cool things about while fly is you know, it maintains a regular cadence So for example a dot o was released in February of this year 8.1 was released in May 8.2 in like literally last month and 9.0 is already being planned for next year. So You know, there is a active set of developers in red hat and outside red hat who are working on while fly to do these releases A very important part to understand is you know, the commercial support will be coming in from while for while fly in J bus EAP 7 So, you know start your applications today on while fly and then migrate over to J bus EAP 7 when it's ready So J bus tools, you know, we talked briefly about it, but basically it is eclipse plugins for J bus technology Anything and everything that you can think of, you know around J bus technology. It has support in the J bus tools So aerogear gives you a mobile framework to build your application rest easy is your way of doing standard rest and and and points support for Apache camel and our support for multiple Multiple mobile phones Support for while fly of course support for Ford hibernate and of course open shift, you know so you can literally create an open shift application and it provides a very seamless workflow from within J bus developer studio on how you can take it and How you can take an existing application and deploy it an open shift or create a brand new application and deploy it and open shifts Both the flows are there. So that's pretty cool. So that was about J bus tools now There are a couple of ways by which you get started with J bus tools You may have an existing eclipse version say Luna then on Luna you install the J bus tools plugins Alternatively, there is something called as J bus developer studio where you download integrated bundle Which has eclipse and J bus tools plugged in together and that's just one bundle and you get started with that right away Food now J bus food as I said is yet another project from red hat Is the fastest way to build your java e applications using Maven? one of the hairy things about Maven typically is you know, you need to remember all the dependencies and What plugins need to go in there? How do I build my application? You pretty much end end up copy pasting your palm dot XML from project to project now here We take care of that So we just say you know what you tell us what your dependencies are, you know or you tell us on an abstract way what your dependencies are So JPA is my independence Forge automatically goes and figures out what's the right actual dependency that needs to get added into palm dot XML and it does that for you The concept here is where I or Right once run in any IDE That's what we call it for for Because it's using Maven and because eclipse intelligent and that means all three ideas support Maven. So essentially that's what it gives you Another advantage is with javas developer studio or javas tools You have integration with force. So within the IDE you can invoke forge Now do your code generation from that and watch the code in the IDE as it was. That's pretty cool It really helps you in automation of repetitive tasks. So let's say you want to generate a boilerplate code You want to have a certain set of dependencies now instead of hard coding them you can provide a ford script and Run the ford script to generate the project. So all your boilerplate palm dot XMLs, etc. Can be very easily generated Yep There is inbuilt support in ford for java e6 and 7 So that's pretty cool as well And one of the cool things also about forges is extensible by design So you can have ford add-ons which you can easily write by yourself Let's say if you like a particular functionality or don't like a particular functionality Or you find something that is missing then you write a Plug-in or add-on actually, which is a new terminology. You write a new add-on and say, okay You know this is how I'm extending ford functionality It also encourages test-driven development, which is very very critical No test means no push back no commit. No push should be allowed for any application And really that should be the standard rule And we're seeing that becoming more prominent anyway these days Now this is OpenShift Commons briefing so you all know about OpenShift, but no just for kind of quick introduction OpenShift is Red Hat's open source pass platform Comes in three varieties. So there is OpenShift Origin Online and Enterprise Which is a very classic red hat way Any first feature in OpenShift goes into OpenShift Origin Which is you know where you can go to GitHub check out the workspace build it yourself and run a full version of OpenShift So that's sort of our Community pass then there is online OpenShift Online, which is go to OpenShift.com which is our public pass and in case of public pass You know you can sign up for an OpenShift account, you know and avail some services We'll talk about that in a second and then finally there is OpenShift Enterprise, which is our private pass Where you can say hey, you know I have I'm running my own company. I have my own data center I want that pass like functionality based upon that data center where everything is confined within my firewall So then you know you work with Red Hat and we help you install OpenShift Enterprise over there and get it going The advantage of OpenShift, you know one of the biggest advantages that I've heard and I've realized myself is Plugable cartridges. Well, OpenShift works on the mechanism of cartridges. You have a variety of cartridges Anything from it's a truly polyglot poly database environment Where you have support for Java, Ruby, PHP, Python, Go, and much further languages Even even in terms of databases, you know like your traditional RDBMS or Mongo or name it, you know all those can be supported And then just like forged, you know the concept of Extensibility is here if you don't like something for example, you know or if you Want to extend the functionality like you know you some new database comes up tomorrow and you want to add that functionality Yeah, you can write your own cartridge what we call it as a DIY cartridge For example, and the functionality that you can add to OpenShift could be extreme For example, my son and I were looking at how we can run a Minecraft server on OpenShift and we could write a DIY Cartridge where we were running a simple Minecraft server. So that's pretty cool We talked about multiple languages databases app servers. We didn't touch but the point is on OpenShift you can have you know your Jbos EAP, which is a commercial version of Jbos You know you can have a Jbos EAP as running as a cartridge over there You can have all the community projects like Wildfly, Setfra can be running as an application server over there Somebody in the community even wrote cartridges from IBM Liberty Profile or Glassfish and other application servers Tomcat of course is supported over there. So what idea of app servers? You can see truly is very rich and overall pass environment Now the way OpenShift works is the concept of Gears now you can go sign up on OpenShift Like OpenShift.com or say public pass and there you get a gear Now gear is the capacity gear is what we call it is a compute capacity or a disk capacity that you get There are three kinds of gears in OpenShift small, medium and large That's generally known, but you know you can customize those if you have an OpenShift Enterprise But if you sign up for a free gear or a free account rather on OpenShift.com what you get is three gears and Each gear is literally one gig of disk space and half a gig of RAM. So For example on one gear you can install an app server on one gear You can install a database server and one gear you can run your continuous integration tool like Jenkins or whatever you care about So that's about OpenShift Now the last tool that pretty much we'll talk about is Arcillion and Arcillion is a highly Extensible and then you see the extensibility is a key theme here. So it's a testing platform for the JBM That really allows you to run your tests in a container agnostic manner. Okay? So typically when you write tests for Java EE, you know, you prepare your test you create a war file You deploy the war file you run the test and then you undeply the war file So you are taking your test to the container with Arcillion. We bring the container to you So and let's take a look at the workflow within Arcillion itself. So you choose a container for example the container could be Wildfly container could be glassfish could be EAP running on OpenShift for example You tell or you ask Arcillion to start or connect to a container So let's say we start with Wildfly remember I'm using Wildfly here because we are talking about Java EE7 But if you were using Java EE6, you would be using JBas EAP. So you connect to a container Then you ask Arcillion to package your test archive the way you want to do it and deploy it to the container You run the test in the container You know, so the you can see that tests are running the results are captured and reported You know, it's a very standard unit test We just have to add a couple of methods to make sure that the tests are can be run by Arcillion And finally the test archive is undeployed and you disconnect from the container So very simple workflow if you are want to test your Java EE applications In a very container agnostic manner that container could run locally in your laptop or your private pads or an OpenShift as a matter of So how do you get started with Arcillion? You know, well, typically we Talk about may well So there is an arch type you can use that arch type and you can say fire up my application or create my application It will pull in all the right set of dependencies for you In that form XML you will this is like a testable Java EE application It will generate four different profiles And in each of those profiles effectively it says it tells you What is it that the app should be tested against? So for example, I could have my app running against wildfly so it will start up wildfly for you and Each container could run in two modes. It could be a remote mode or a managed mode Remote mode is somebody else is controlling the life cycle of the container and the managed mode is where You asking Arcillion to control the life cycle of container. So in remote mode, you may have started your container outside Arcillion You just deploy the test run the test. Well deploy the archive run the test and then deploy the archive And in managed mode, you start the container deploy the test Deploy the archive run the test and deploy the archive and stop the container So depending upon which mode you want there is a remote and a managed mode It generates four profiles you know two for wildfly two for glassfish Because those are the two javae seven application servers But you can very easily extend this to add support for jba cp as well So how would you test for example, you know, if you generate a testable javae seven application So while you will download wildfly 8.1 now actually 8.2 from wildfly.org It's pretty straightforward. You unzip start now using bin standalone show script and you run the test That's it out of the box just works very well. Okay, and you of course specify the right profile Now you may say hey, by the way, I have an existing javae project and on that project I want to make it testable because testability is a key aspect for you know any project not just javae But that's where you use forge So forge not only allows you to add capabilities to your project But you can enable arcillion on an existing javae project As I said forge is an extensible architecture. So you use this command add on install from git Now there is a arcillion add on you install that add on and then you set up the arcillion container You specify what test framework you're using in this case We're using j unit and you specify the container adapter Now i'm saying wildfly remote here But there is a variety of 30 plus containers that are available to you including jbos eap and whatever you care about All those are there. So you can very easily set up arcillion on an existing java project So let's say you have a javae 6 Application that is currently deployed on jbos eap and you want to make it run or test using arcillion Then you will use this command Set up the arcillion adapter for eap in your palm dot xml and run the test using that profile So let's see, you know, we have looked at all the tools So what's sort of the methodology that we recommend, you know for workflow that we recommend specifically if you're working on open shift Well, the first step before you even jump on open shift is your test driven development Okay, and let's say you have jbos developer studio on your machine with wildfly configured in there or eap configured in there um You're building your application and you're you know deploying it on wildfly. You look good. Okay um Pretty much with the first comment We recommend highly recommend to have your unit test and you write your unit test Well, j unit test and you doesn't matter but pick a framework of your choice and then write your unit test Um now when you get to integration test where you want to run the test against the container That's where arcillion comes in so and we won't go into the tutorial of arcillion itself But the idea being you can easily run an arcillion test write an arcillion test And then run it against the container directly. Okay, so that's your first step So you should have a test driven development really um We are not even talking about here Aspects like code review code coverage application performance monitoring and all of those finer aspects Which are again very very important before you go to production Well, the second stage in that case is what we call as continuous integration. Okay, and the way continuous integration works is so Yeah, you got your development environment all set up Um, you can easily spin up jenkins instance on open shift And what you will tell is every time I do a good push I want jenkins to run these tests against my container automatically. Okay Um, so you do a good push here now jenkins running on open shift understand this your workspace Um, it builds checks out the whole workspace runs the builds the workspace runs the test Against a wild fly instance running on the same instance. Okay, so that's the second step The third step is where you make it a lot more automated because right now what you have not done is You are not pushing your actual war file or the actual archive that is being generated to the production website So in which case we take you to the next level where we say Every time you do a good push the changes go to jenkins. Yes, that's one part of it The second part of it is where you want to run the test Not on the production machine, but on a test machine. So you spin up a new wild fly instance say on open shift You configure jenkins that Run the test on the test environment. So it runs the test on the test environment And you aggregate the results back on jenkins And if the tests have succeeded Then you actually push the code to the production And if the tests have fail, then of course you don't run anything, you know, you don't push anything on the production Or the deployment is actually halted Um, well now this is a very simplistic use case, but at least it tells you how you can easily set up everything As part of the entire environment Okay, so what I'm going to do is now Um, I am going to switch to My browser here Okay, so what I have here is if I refresh my applications here Um, I have a my wild fly Well, okay. First of all, this is open shift console In the open shift console, you're looking at two domains j boss devs and miles to go. This is the domain that we're going to focus on In this domain, uh, I got a jenkins instance running I got a wild fly instance running and this is wild fly server 820 final And the jenkins client is enabled over here. So which is the jenkins client here. Okay. Well, it automatically redirects me there So go back So this is my wild fly instance, which is the production instance. Now if I look at my production instance here Um, if I say my wild fly dash miles to go Dot or hcloud.com it shows what all is running over here. Now if I run On this it shows me the list of names. So it's a it's a simple rest endpoint, but it's a java e application Okay Back in open shift here. Now, this is my wild fly test instance over here, uh, which is where I want to run the test So I don't want to run the test against my production Instance I want to run the test against my test instance and then then if the test succeed Publish the war file on the production instance. Okay. Now, let's see how this whole Setup is being done. So if I go to my net beans It is my palm dot xml Okay, so in my palm dot xml what you see first of all is this arkelyon wild fly remote profile. Okay Um, and all it's doing is is using well, it's of course building my war file. So that's nothing fancy Uh, it's saying a referring to a arkelyon launch variable called as wild fly remote This is actually configured in my arkelyon dot xml If I look at it here So this is wild fly remote. It's not specifying any properties. That means takes everything as a default. Okay And what that means is um, local host 88 or host prop host port, whatever it is Local host or other and port 8080 So I would use this profile To begin with when I'm supposed to run my test against my local wild fly Okay, this is purely local but the remote mode says somebody else is managing the lifecycle. So I'm possibly Starting and stopping the computer myself and I'm going to run a bunch of tests multiple times Okay, so that's one profile now let's say You went on open shift. No, okay. You got the test running on a wild fly But you you realize, you know, your wild fly instance is a little bit corrupted Um, so you spin up a new instance of wild fly on open ship. It's pretty straightforward. So You go to open shift here You log in And you say add an application Now here is a variety of uh, java applications that can be easily configured Um, if you are looking for a supported version for java EE Then you are looking at the red hat product, which is jba's enterprise application platform six That's the one that you're looking for the entire product portfolio is over here So you can configure any one of those but today we are talking about java EE so we'll focus on eap today Uh, these are all the community projects. So if you are looking for wild fly, um, which is Our java EE7 compliant app server So you click here And you type the name Okay, whatever the name is going to be then that name. So here for example, I say I'll fly Eight, okay, if I give that as a name Then my url will be wildfly eight miles to go or hcloud.com Important to understand this does not receive any security updates. That's only for the product product cartridge Um, choose a gear typically small is pretty good for me. I'm okay with that Um, I don't want any scaling We're not gonna cover scaling here, but then you create the application just literally one word and you have created your simple application over here. Okay So go back to the scenario again. Okay, so You've deployed your application and now you are saying, okay, I want to try it out on open shift so you have created a new instance on open shift and then you say I'm gonna test my run my tests against that instance of wildfly running on open shift That's where you use this profile and in this profile You can see in the arcillion property or the arcillion launch variable that we are referring to is wildfly open shift So if I go here Wildfly open shift here. Okay. So if I were to run it, I will specify my configuration properties um So this is my application name. This is our hcloud. This is the domain name This is got to be the ssh username for that domain and so you specify the configuration properties here So the same tests that were running against your local wildfly would now run against the wildfly instance on open shift. That's pretty cool, too Okay Now the third profile now if you build if you build your application or if you provision a wildfly cartridge on open shift Then You know, it generates a default git repo for you Now that git repo need not necessarily be where your application code could live You can set up remotes and you know code could still live very much on github But that git repo is sort of the point What open shift refers to is purely for management. You can set up your remotes and syncs accordingly But in that palm dot xml that is generated for you There is a open shift profile and that's the profile that open shift uses every time And in this case all it says is i'm gonna create a war file for the existing git repo and name it as root dot war file and deploy it. Okay, so that's what it's doing. Um, so Well, okay, so that that's well, that's how the applications Are deployed to the open shift using the open shift profile Uh, now notice here, we are not have a arkelyon profile because this is our production. We don't want to disturb it with testing Now here we have created a new profile. So if I can minimize this guy here as well So now here I have a new profile called as jenkins open shift In this, uh, I have a jenkins open shift profile. Okay, then this is referring to the arkelyon open shift container first of all And then the jenkins open shift profile or the arkelyon launch and in jenkins open shift. I'm specifying certain variables Env dot orc domain orc application orc ssh username and everything else is pretty standard Okay, so let's see. What did we do over here exactly? Where are these properties defined? So now if I go in my browser Well, this is my jenkins instance. So if I can go back At this well, this is my wild flight build project, which is automatically created for me I had to do nothing for that. But if I look at the configuration part of it now I added these this code over there, but everything else was pre-generated for me Uh, it's very convenient. It says run test here. So this is a placeholder for you automatically But essentially this is where I'm defining Those properties that are used in my arkelyon profile. Okay And then I say run the test using the jenkins open shift profile So I define the properties then using jenkins open shift profile I guide it to run the test on the test environment and The rest of this over here automatically, you know, works very well if the test succeed if the test don't succeed The production is halted. Okay So let's take a look at this now. This is where my application looks like So if I go to my command prompt here Okay So here is my index.jsp. Okay, um happen if you have made a change. So I am gonna Okay undo the change. All right. So, uh, here is my simple test here This is a test that is running with arkelyon and I define how my custom archive is going to get created Okay So here is my one test which basically gets a list of Well, it pings the endpoint gets the list of names Asserts all of them and then it gets one by one as well. So it verifies those. Okay. So for now the tests are all passing Okay So all I'm going to do is I'm going to make one test fail. Okay. Here you go. So one test is failing and I'll change this to say failing test. Okay. So I did I did that now If I go back here If I do a git status I change the test to fail and I change index.jsp. Okay So all I'm going to do is I'm going to commit this and I'm going to say failing test And now when I do git push My entire cycle of Jenkins running the test on the test environment. All of that is going to get ticked off It gives me you can track your build here. So if I go to the browser here Okay So if I look at my wild flight build here, it says waiting for the next available executor So it's waiting for executor here in the meanwhile if I look at my open shipped instances here or applications here If I refresh it You can see here a new my file flight builder is automatically created for you. So essentially, you know, it's using Jenkins and Jenkins create a new Instance of the slave where it runs the test and it does the job for you. Okay So if I look back here in Jenkins, I'm still waiting for next available executor But sometimes it could take a little bit longer So we'll see how it goes. But in the meanwhile If I go back here, so here again is very patiently waiting that, you know, whenever the executor is provisioned for us Then it's going to do the job. Well, another thing that you can do also is If I can go here if I can stop it here, I can say RSC tail Jenkins And now I can actually start monitoring what's happening in the background. So here it's saying creating slave with 15 minutes time to live And so it's apparently the stave has been created And the response code is 200, which is good Okay And now it's asking the broker Let's see here It's asking the broker to list something. Okay So it established the connection with the slave now where the class name says that All right, so connected via SSH. You can see all that stuff that's happening in the background Here is still waiting for the executor to be connected. Now the slave has been connected here Okay, so slave has been connected. So if I go back here now in my Jenkins I can say show me the console output Well, first of all, you can see that my commit is automatically picked up here Failing test that's the one that we made And if I look at console output is Running through checking out the workspace building the workspace War is created, but now it's running the test and see these are the properties that we set up earlier Arc SSH username Yeah, it's running the test against the Jenkins OpenShift profile. So it's running the test now It's preparing the container and this container is actually on my wildfire test dash miles to go.org cloud.com Okay, so is Pushing my running. Well, actually it's running the test is pushing the archive the war file to the remote repo or the remote wildfire instance And next is going to run the test And again, we can go back if you want to we can look at it It still says slave connected because now it's all the Jenkins output that's coming over here We'll give it a minute. Give it a few seconds It's gonna report the results soon I've seen this time varying Over a few seconds to up to like a couple of minutes sometimes Purely depends upon the network traffic at that point of the time The key point that I wanted to kind of explain here is now you will see the test failing Um, and if the test do fail then the deployment is actually halted Um, so if I go back here, for example Now it's still saying waiting for build to schedule that's been done Now it's saying waiting for job to complete Um, and if the tests are fail then it says deployment halted and it asks you to go look back at the Jenkins log to show that the know that the tests are failure and you can look at the analyze the failures more over there And the errors are very clearly marked. Okay. What was the error really? Yeah, I still waiting Let's see if I try to refresh it here in the meanwhile Yeah, this this is my production app. So this is completely untouched Um, the tests are running completely on a separate test instance He has been running for about three minutes now This this is a fun part of doing a live demo. Um, yeah, which is all right. Which is all right. Yeah, you know, it's funny because this morning somehow Jenkins was not even um pushing the changes and it was not able to spin up the while the builder And the happy cases are always good. But what we need is more Debugging information like okay, for example, what happened now in the background, you know, and how do I debug it? um and unfortunately my RTC tail Jenkins is not giving me any more information But well, you understand the concept though, you know that, um, um There is a recording on my blog which talks about exactly, you know, how this whole thing should have looked like Now while this is happening, uh, I want to show you some other pointers Um, if you want to get started with wildfly or jbas eap Are you in open shift with jbas developer studio? I created a recording over here, you know, and this is my blog URL and we can include this in the show notes Um, it's a video recording about 13 minute long. It tells you exactly. How do you do the flow? On my blog, um, if you go to blog dot arun gupta dot me slash tag slash open shift There are tons of articles Focus on open shift the one that i'm talking about just now is this deployment pipeline article Now this is a video which I was talking about Um, it tells you how the whole thing can be set up Um, if we look at more details here Um, how do you run or gillian tests on a wildfly instance or hosted on open shift? We explained that scenario earlier, but you know, that is also explained here how you can do that um You can also create open shift applications using command line tools. I use them pretty heavily using rhc tool So there's a note about that Something else you need to understand if you are as part of java e7 creating Web socket applications Then they behave a little bit differently. I mean one of the value ads of web socket is they operate on the same port But for now on open shift, they do Work on a separate port that's I won't get into the details, but This particular blog talks about how you can have a web socket sample on a wildfly and open shift. So that's there um, if you are running a jbos eap or Um wildfly in open shift, then you can run it with a custom configuration. You can completely change how the configuration file looks like There are details on that Open shift online, you know, you can run it very simply in a virtual box image. So this blog talks about that Um, so yeah, I mean you can look at you know, there is tons of content here on the open shift tag Let's look at how our thing is doing here and it is still waiting So Just just having a uh a larger gear. Would that have helped you? Yeah, I was wondering about that, but every time I've done this I've done this using Uh small gear and it has always worked and it worked like a few times in the morning. So if you see here um, if I go back to my project If I look at the log output here and I say show me the console output. Now, this is the run from earlier this morning so here basically, um Well, we are stuck at this point right now. Okay um We are not seeing anything after this So otherwise you would have seen, you know test run how many failures how many success so on so forth Now this is a happy scenario again using small gear Or you can say show me the previous build which is build number two And this is why I was expecting to see just now They're saying oh the test is failing and if the test is failing um Nothing actually proceeds after that and as a matter of fact it says finished failure Uh and none of the steps in the Jenkins, which is basically deploying your war file to the production instance are Executed so the deployment gets halted. So the point being if at any point of time your tests are passing the war file is deployed to production If the tests are failing The deployment is not gone through. It is not gone through So your tests could be your unit test your functional test. That's where you can add your jack-o-co like code coverage That's where you can add your performance monitoring using new relic or whatever plugin So arcillion has a very rich ecosystem of plugins that you can use to do all those fancy things And that's what I was hoping I could show but if I go back here and try one last time No is still happily chugging along Oh, there you go Doesn't look like a good Thing following password not reachable within 300 seconds after a good push. Yeah There's some sort of an internal network thing. It's not able to connect with the Test server After 300 seconds and well, this is network. You know, this is a very real life problem These things could happen, you know in your real life as well. So I think what it shows is the demo is real It's not a fake So and always be prepared with prior prior nodes and log files Yeah, yeah, and then one last thing I want to show here is so this is jboss developer studio How easy it is to get started with a simple open shift application here so I can say a new I can say other and I can say sure search on open shift So here, um, I go to open shift. It asks me for my password credentials All right, so it shows me The credentials that already exists. Well the cartridges that already exist. So I can say browse And if I look at my three different domains, it shows me the different domain the applications that were created um Either I can choose that or I can say create a new open shift application And I can say show me basic cartridges And here for example, I could say show me jboss cartridges only Okay So Yeah I can say jboss. I don't know why my jboss eap cartridge is not visible here and that seems like a bug. So I'll look at that but anyway, um In absence of that, I'll just use this wildfire cartridge And then I can go through my normal eclipse workflow here to create my java e application And then once you have your application created once you right click on it and you say Get commit publish or push the change again. It triggers the whole thing automatically for you where the tests are run and Everything that we talked about earlier All right, so that's pretty much what I had to say what else um questions Yeah, so if there's any questions, um, raise your hand and chat and I'll unmute you Actually one point. I want to say here. So now it says now for some reason the test failed Okay, so if I go back to my production instance here If I refresh it it still says with the test remember, we changed this to failing test um, so this says with test um, so that means the tests have failed for whatever reason for network not reachable, uh, but The tests have failed and so the production is not disturbed in that case, right I can go back here. Yeah pushes all right I'm not seeing anybody raise their hands and we've gone um quite a long time here. So I think We probably can come to close here and I can say thank you very much for this incredible, um session and I'm going to make the recording available shortly and I'll look forward to um Getting this workflow into the hands of lots of folks in the commons groups as well as into the accelerator groups soon So um a room as always. It's a pleasure and thank you for your time today Thank you Diane for the opportunity and I look forward to hearing any comments on that. Take care