team foundation server custom hosted build controller for selenium tests - azure

I am currently using the Team Foundation Hosted Build Server. I have this setup with my azure cloud service so that when I commit a code change, the hosted build controller will build my changes and then the changes are deployed to a staging environment in the cloud service. During the build, I also have a set of automated tests that are run using NUnit.
This is all working fine until the Selenium tests start. Since IE and firefox are not deployed on the TFS hosted build server, my tests fail. Currently the TFS hosted build server is a VM image designed by microsoft.
Is there any easy way to designate a custom VM image which would have browsers installed so I could run these automated tests every time I check in a code change? Or when the hosted build server is created, auto install the browsers so they are available for testing?
Thanks!
TWilly

I ended up moving away from the TFS hosted build controllers since you can't customize them.
I was able to create an azure VM with windows 2012 server installed on it. I installed TFS server and was able to link my TFS account to my on-premise TFS build controller.
Since I am using the azure VM, I am able to customize it, so I was able to download all my browsers, install Selenium IE driver and get the builds to work.
I am still working on how to automate the starting of the VM and taking it down when not in use so I don't get charged for compute hours when it's not in use, but it is nice having it always up so that it can automatically build after a code check-in.

Related

Azure VM (Not Classic) - Cannot deploy website using Web Deploy from VS 2013

I'm getting a time out error in VS Publish Web module when trying to validate my http connection to our Azure VM. I'm simply looking for a better way for our small dev team to deploy our MVC website to the VM other than publishing to file or publishing to FTP.
I've got Web Deploy on our Windows 2016 server, and the proper
services are running.
Remote Service is installed with Web Deploy.
Port 8172 is open and I am able to connect using Telnet from my
remote box.
I updated the pubxml file with:
<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
<UseMsDeployExe>true</UseMsDeployExe>
<UserName>un</UserName>
<Password>pw</Password>
Not sure what else to try at this point, but this has been a PITA to say the least. Thanks for any input! FYI - This is not Azure Classic.
Screenshot of Error

How to deploy Azure Website with Virtual Application using VSO Continuous Deployment

I have a Microsoft Azure Website and a virtual application running under it that I have configured. I am able to deploy both the main web application and the virtual application successfully by right clicking on each project and selecting publish. The main web application deploys to the site root, and my virtual application deploys to its sub directory (in this case it's /Api).
We keep our code under source control in Visual Studio Online which you can connect to an Azure website for continuous deployment. However, when I run the build for the virtual application (Api) it deploys it to the root of the site and not to /Api.
I have a number of other cloud services and websites utilizing CD already. It's the virtual application part that is giving me trouble.
The out of the box deployment build only deploys a single application. In this case your site.
To deploy multiple applications you need to use the DefaultTemplate.12.xaml and create a PowerShell to do your deployment in the post-test script step.
This problem will be fixed by a new build system being developed by MSFT...

Windows azure web role on local IIS

I am developing windows azure web role. Can I host the azure web role on my local IIS.
If yes..what are the steps I need to follow ?
Local Machine is currently running on windows server 2008 R2
There are two ways to achieve that, with varying levels of fidelity to the target environment.
The simplest is just to run your website project locally. You can attach it as a virtual directory on IIS and run it from the browser or debug it from Visual Studio. This will run as a regular IIS web application, but it won't be running as a web role.
The second is to package your application as a cloud service and run it under the Windows Azure Compute Emulator installed on your development machine. There are several tutorials on how to do that, including:
Developing and Deploying Windows Azure Cloud Services Using Visual Studio - see "Debugging a Windows Azure Application Locally".
Run a Windows Azure Application in the Compute Emulator
Windows Azure Basics–Compute Emulator
Building the web role for the Windows Azure Email Service application - 3 of 5
How-to deploy application to Windows Azure Compute Emulator with CSRUN
The Compute Emulator simulates several features of Windows Azure Cloud Services, but yout have to be aware of Differences Between the Compute Emulator and Windows Azure. Your application can tweak its behavior according to the environment by reading the RoleEnvironment.IsAvailable and RoleEnvironment.IsEmulated properties.
The Compute Emulator uses IIS Express locally for your dev/test work. IIS Express should be already set up for you when you installed the SDK+Tools. (Older versions of the SDK relied on full IIS 7 - more info here).
If you're talking about developing for running in production locally: It doesn't exactly work this way. A web role translates to a Windows Server virtual machine with some startup scaffolding code to allow you to install things in your VM, tweak the registry, etc. Since web role instances are stateless, every time a new instance is launched, the startup script is executed (same if an instance crashes due to hardware failure and is brought up again on another machine).
If you want to run the web app itself locally, then you'd need to take specific actions, based on whether your code is executing in Windows Azure or on a local machine (and then package it a bit differently - you wouldn't include the web role project). You can check RoleEnvironment.IsAvailable + RoleEnvironment.IsEmulated to help you out.

Which azure service, i should choose for my node.js app?

I am new to Microsoft windows azure cloud and want to run my node.js app in azure cloud. I read the windows azure Node.js Developer Center site ( https://www.windowsazure.com/en-us/develop/nodejs/ ) and it seems my app can run in azure cloud multiple ways.
Which azure option is good for my node.js app if i want to deploy quick with less azure knowledge?
If you are new to Windows Azure but knowledgeable a Node.js developer, you sure can use Windows Azure to write your Node.js application.
You have following choices:
Windows Azure Websites (Preview) –
FREE only if shared and if RESERVED there is some cost associated with it
Great if you are a Linux or Mac User
Your node.js application will run on Windows Server Farm
You can use git to deploy your Node.js Application
Windows Azure Cloud Services
Ideal for applications that separate logic into multiple tiers using both Web and Worker Roles
It is a PAID service
You can use PowerShell to deploy directly from a Windows Machine
Your Node.js application will runs on Windows Server 2008 OS
You will have capability to RDP your Windows Azure VM.
Windows Azure Virtual Machines (Preview)–
This way you can create run your node.js application on a Microsoft Windows or Linux (Suse, CentOS, Ubuntu) machines or upload your own Linux VM already fully installed with Node.js application
With Windows machine, you can RDP to your machine and install your Node.js application
With Linux machine you can use Putty to connect your Linux Machine on command like and then install your application and other packages
Currently even with Preview mode, there is some price associated with it
As you are new to Windows Azure, I would suggest you to give a try using FREE Windows Azure Websites Shared because this way you really don’t need to learn a lot about Windows Azure and you can start running your application instantly. This could be the easiest method among above 3 options and then you can jump to other by just migrating your application If needed.
IF you decide to use Cloud Service, you can use Cloud9 IDE to publish your Node.js application directly to Windows Azure Cloud Services in your subscription.
You can find a decision tree here: http://msdn.microsoft.com/en-us/magazine/jj991974.aspx
What are the options you're considering? I can think of two: "cloud services" or "web sites." The latter is probably the easier and cheaper option, assuming you're building a web app. The former gives you full-blown VMs backing your app, on which you can run anything (including "workers" that process data in the background or apps that communicate via web sockets or even raw TCP). It's more powerful, but it's also more difficult to use, slower to deploy, and costs more money than a shared "web site."
Sign up for the Windows Azure 90-day free trial https://www.windowsazure.com/en-us/pricing/free-trial/
Login into the Portal at: https://manage.windowsazure.com
Click the Virtual Machines tab then click Create a Virtual Machine to create a Windows VM.
On the slide-out panel, select Quick Create then specify your DNS Name, Image [Windows Server 2008 R2 SP1], Administrator Password, Size [Small (1 core, 1.75GB Memory)], Location (West US). Finish by clicking the Create Virtual Machine button.
Once provisioning is complete, you can connect to your VM via Remote Desktop Protocol by clicking the Connect button on the toolbar at the bottom of the screen.
Be sure to install a modern browser like Firefox to avoid the annoying default security settings of IE then proceed to download and install the node-js msi like you would on your desktop.
Happy hacking!
The fastest way to get started is to use Windows Azure Web Sites. You get a web site that is already configured to run node.js. You merely use ftp or git commands to push your code to the drop folder for your site.
You can use a Mac, PC, or Linux as your development machine. This tutorial (using a mac) shows the fastest way to get started: https://www.windowsazure.com/en-us/develop/nodejs/tutorials/create-a-website-(mac)/
Cheers!

Access Azure Development Server From VM?

We are developing an application that we are deploying to Azure. It needs to work with a specific machine configuraiton. We we have this configured as a VM which developers can run locally.
However to test the VM configuration we need to publish to Azure and access it on a live Azure instance. Is there anyway to allow a local VM to get access to the Azure environment IIS on the developers machine? It doesn't seem to show up in IIS Express so I guess it isn't the same as a normal site?
Also is it possible to configure an Azure environment locally for testing. We want to host test applications for internal use and don't want them run on developers machines. We would like to run them on a server in the office.
Any ideas?
Thanks
I think that the answer to this question will outline the general guidelines you could follow to enable your environment.
Windows Azure Emulator has its own load balancer simulator which bind to socket 127.0.0.1:81 (most of the cases, if port 81 is free). If the Azure project is developed with Azure SDK 1.3 or later with Full IIS enabled, then the Azure Emulator (for versions 1.3 ~ 1.6) will use local IIS to host the sites. IIS Express is not involved in any way with the Azure project. If you happen to run IIS Express, then most probably you have set up your web application project as a StartUp project in the solution. The correct way to locally debug Windows Azure applications is to use the Cloud Project as a startup project.
Please kindly update your question, if there is some doubt or confusion after checking the mentioned related question.

Resources