VSO vNext build error: You cannot run the vsoAgent.exe interactively ..

Error Symptom: You installed and configured an Agent for the new Visual Studio Online Build System, and you decided not to run as a service, but interactively. When you double click the VsoAgent.exe executable you got this error.

You cannot run the vsoAgent.exe interactively from within the Agent folder. Try running it from the parent folder

I’ve encountered this error on my main workstation machine, and I’m not sure why I got this error. Actually I’ve configured agent for TFS 2015 RC without this problem and in the same machine I got three distinct agents, but only the one targeting my VSO primary account is having this problem.

If you open a command prompt and run the program from the parent folder everything runs just fine.

image

Figure 1: Running from the parent folder solves the problem

Solution: the simplest solution to avoid opening a CLI is creating a shortcut to the executable and change the Start In location

image

Figure 2: Configure the agent with Start In main folder

This should solve the problem. Double clicking on the link now run the agent just fine.

Gian Maria.

Microsoft support for non Windows developers

During Build 2015 conference Microsoft announced Visual Studio Code, a free IDE to develop web, cloud and modern application. The nice aspect of VS Code is that it runs on every platform, here is a screenshot of Code running on a Linux Ubuntu box.

 image

Figure 1: Visual Studio Code running on Linux box

I can now clone a git repository from my Visual Studio Online account and create a first Hello Node Js application. VS Code is not just an editor, and I’m able to debug my node.js code with easy.

image

Figure 2: Debugging node.js code in Visual Studio Code

VS Code has native support for Git, and I’m able to manage my repository doing push/pull/commit etc, directly from VS Code. Support is still basic, if you need a rebase you should go with CLI, but VS Code is still in preview, so I’m expecting more to come in the near future.

image

Figure 3: Create a commit directly from VSCode

image

Figure 4: I pushed changes directly from VS Code in VSO

You can use all VSO feature, if you like you can edit code directly from Web interface if you need to do a quick fix, or if you need to edit a Readme.MD file.

image

Figure 5: Editing in Web Interface in Visual Studio Online

Thanks to Visual Studio Code, and Visual Studio Online, you can manage your projects from your favourites environment.

Gian Maria Ricci

Limit maximum memory of SQL Server in TFS environment

If you are a small shop using on-premise TFS, probably you’ll have a single machine installation for Data and App tier for your TFS. While installing a Build server on App or Data tier is highly discouraged, using a single machine for Data and App tier is a viable solution for small and medium team, and with virtualization is quite easy to move machine to a more powerful hardware or give it more RAM if the usage or TFS increase performances starts to degrade.

If you are interested in a really good article about how to configure TFS for performance, this post cover all you need.

In this post I want to point out one aspect that is quite often underestimated but is really critical on single server installation.

SQL Server tends to consume all the RAM of the system, and if you are not limiting maximum memory that it can use, you usually have problem ranging from poor performances to malfunction. On a customer site, suddenly, build controller was disconnected from the server; looking at event viewer in TFS Machine we found that some WCF services failed to start because there is less than 5% of free RAM. Obviously almost all RAM in the system was used by SQL Server. In that installation Sql server max memory limit was not set, and the server slowed down gradually until some part (the build in this situation) stopped working.

If your TFS is a Single Server installation, start limiting SQL Server Memory size to half the RAM, then after some real usage, verify if the system still has free RAM, and gradually give more memory to SQL. This method will prevent SQL From stealing RAM to App Tier.

Limiting memory is crucial even if SQL Server is in a dedicated machine. This article : How much memory does my Sql Server actually need is a good article on the subject. Remember also that if Reporting Services are installed on the same machine you should take this in consideration. Even if Sql Server Database is the only role on the machine limiting is needed. A rough formula given by Grant is the following one.

reserve: 1 GB of RAM for the OS, 1 GB for each 4 GB of RAM installed from 4–16 GB, and then 1 GB for every 8 GB RAM installed above 16 GB RAM

If your SQL Server is on a 32 GB RAM machine, you should configure it to use 25 GB Max, with16 GB  the right value is 11 GB, with 8 GB limit is 5 GB and finally if you have 4 GB of RAM the right value is 2 GB.

Gian Maria.

Tfs2015 Build agent error: Access denied: xxxxx\yyyyy needs Listen permissions for pool zzzzz to perform the action

Tfs 2015 introduces a completely new and redesigned build system and one of the most important change is new lightweight agent system. Instead of installing TFS and then configure Build, to create a new agent you only need to download a zip file, uncompress and launch a PowerShell script. Another great advantage is the ability to run the agent as a service, or running it interactively in a simple console application.

If you configure a new agent you can check that everything is ok in TFS Control panel, in the new Agent pools tab. The new agent should be listed and it is Red if not active, Green if up and running.

image

Figure 1: Management of Pool and Agent in TFS Configuration

If the agent is red even if you launched the agent, you should check logs in the _diag folder.

image

Figure 2: Logs are placed in _diag folder

You should be able to understand and fix errors looking at the log. If you run the agent interactively, it could be that your user has no right permission to listen to the pool.

17:28:46.531831 Microsoft.TeamFoundation.DistributedTask.WebApi.AccessDeniedException: Access denied. CYBERPUNK\Administrator needs Listen permissions for pool Fast to perform the action. For more information, contact the Team Foundation Server administrator.

In this situation the user Administrator is in the TFS Administrator Group and it should have any permission, but new Build System is slightly different. The user that runs the agent, must be part of the Agent Pool Service Account, or it will not be able to run the agent

image

Figure 3: Permissions for Agent Pools

Simply adding the user to the AgentPoolService account should fix authorization problem

image

Figure 4: Agent is up and running.

Gian Maria

Rename Team Project in VSO

With yesterday update, one of the most requested feature for TFS/VSO was finally active, you can now rename a Team Project. It can be done directly from collection administration page, in the same place where you can delete a Team Project

 

image

Once selected you should only provide a new name.

image

Now you will be warned with a long warning message that tells you exactly what kind of intervention you need to do after the rename.

image

Clicking the link provided in the warning box will bring you to a page full of detailed step on how to perform all the above operations. (http://vsalmdocs.azurewebsites.net/Library/vs/alm/admin/project-rename )

The first operation you need to do is recreate all local workspaces unless you will have Visual Studio 2012 or Visual Studio 2013 Update5, that can manage this situation automatically. So it is just a matter of time before this step will be automatic. Until Now, if you try to access Local workspaces of renamed project with older version you will be greeted with a detailed error message.

image

Another annoying stuff is that you need to edit all the build based on TFVC, and update path of solution/project to build, because build are still not updated by the rename project. I think that this will be fixed in some next upgrade.

One of the nicest stuff is that you will have automatic redirect of old urls. As an example I’ve renamed TP Experiments, but I’m still able to use the old url in the Browser.

https://gianmariaricci.visualstudio.com/DefaultCollection/Experiments/_versionControl#path=%24%2FExperiments%2Ftrunk%2FElasticsearch%2FMusicDb&_a=contents

Clearly the redirect will work until you create a new TP with the name of the old renamed project.

Gian Maria.