2
votes

I work in a dev environment where the computers aren't part of a domain. I'm trying to set up TeamCity 8.05 on one of the computers to publish check-ins to a test server for our QA team. I've got it working the way I want when I deploy to local directories on the TeamCity server, but when I try to publish to the QA server I run in to permissions problem. I have a share on the QA server with a local user who I want to authenticate with when doing my publish. Is this possible with MSBuild?

Command line switches to my MSBuild runner in TeamCity look like this:

/p:PublishProfile=./Alpha.publish /p:DeployOnBuild=true 
/p:Configuration=Alpha /p:VisualStudioVersion=11.0 
/p:UserName=QAServer\BuildUser /p:Password=somepass

The Alpha.publish file looks like this:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Alpha</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>False</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <publishUrl>\\QAServer\Alpha</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles>
    <PrecompileBeforePublish>True</PrecompileBeforePublish>
    <EnableUpdateable>True</EnableUpdateable>
    <DebugSymbols>False</DebugSymbols>
    <WDPMergeOption>DonotMerge</WDPMergeOption>
  </PropertyGroup>
</Project>

I get an 'Access to the path \\QAServer\Alpha is denied' message when this step runs. I assume this is because the build agent runs as a system account which can't access the QAServer.

I'm trying to avoid the overhead of using Web Deploy, but it looks like that would work for me if this isn't possible.

1

1 Answers

3
votes

From Sayed I. Hashimi ‏on twitter:

FileSystem relies on windows auth. Passing in password is ignored. Your build user will need write access

That's what I thought. My solution is to publish to local staging directory first, then use the SMB Deployer from the TeamCity Deployer plugin to move the files across the network. The plugin allows you to specify credentials.