0
votes

I'been trying to use the msbuild Artifactory plugin in my project. After a while wrestling with dependencies I managed to make the Artifactory project to work but although I don't get any errors and the build is successful nothing is being published to Artifactory.

this is my Artifactory.build file:

<!--
  MSBuild Artifactory Plugin
  For more details, please go to the plugin Wiki site - http://www.jfrog.com/confluence/display/RTF/MSBuild+Artifactory+Plugin
-->

<!--Credentials for Artifactory-->
<ArtifactoryUserName>admin</ArtifactoryUserName>
<ArtifactoryPassword>XXXXXX</ArtifactoryPassword>


<!-- Resolution-->

<!--Enable Artifactory plugin to override Nuget "Package Restore" -->
<ResolveEnabled>$(RESOLVED_ENABLED)</ResolveEnabled>
<!--Root URL of the Artifactory server. e.g., http://domain:port/artifactory-->
<ResolveArtifactoryUrl>http://192.168.1.25:8081/artifactory</ResolveArtifactoryUrl>
<!--NuGet repository key to resolve from. Usually remote or virtual repository-->
<ResolveRepository>libs-release</ResolveRepository>
<!--
  To override the user credentials for the resolution process, uncomment the two fields below.
-->
<!--<ResolveArtifactoryUserName>$(ARTIFACTORY_RESOLVE_USER)</ResolveArtifactoryUserName>-->
<!--<ResolveArtifactoryPassword>$(ARTIFACTORY_RESOLVE_PASSWORD)</ResolveArtifactoryPassword>-->


<!-- Deployment-->

<!--Enable Artifactory plugin to publish artifacts -->
<DeployEnabled>$(DEPLOYED_ENABLED)</DeployEnabled>
<!--Root URL of the Artifactory server. e.g., http://domain:port/artifactory-->
<DeployArtifactoryUrl>http://192.168.1.25:8081/artifactory</DeployArtifactoryUrl>

<!--Enable Artifactory plugin to publish Build Info -->
<BuildInfoEnabled>libs-release-local</BuildInfoEnabled>


<!-- 
  Under <Deployments> you can add multiple <Deploy> elements which define the sets of files to deploy to Artifactory. Each <Deploy> element contains the following:

  <InputPattern>
      Here you can supply path to files, that the plugin will collect. The path is relative to the project and to any other projects referenced to him in the solution.
      The usage of Regular Expressions, is not mandatory.
      Regular Expressions must be in format of a Capturing Group (inside Brackets).
      More information about Capturing Group, can be found here: http://www.regular-expressions.info/brackets.html
  <OutputPattern>
      A path inside the Artifactory deployment repository.
      If you used Regular Expressions in the <InputPattern>,  you may use $# symbols in the <OutputPattern> to refer to the Capturing Groups you defined in the <InputPattern>.
      This mechanism enables you to dynamically construct the target path.
  <Properties>
      Artifactory properties that will be attached to every file that the <InputPattren> finds.
      Each Property is defined in a separate <Property> tag.
 -->   

<Deployments>
  <!--Examples-->

  <!--All Nuget files under the bin folder deployed to the root of the deploy repository-->

  <!--<Deploy>
    <InputPattern>bin\(.+).nupkg</InputPattern>
    $1 refers to (.+) capturing group
    <OutputPattern>$1.nupkg</OutputPattern>
  </Deploy>-->


  <!--All DLL files one or more level under the obj folder deployed with custom properties under the 'myproject' folder of the deploy repository.-->

  <Deploy>
    <InputPattern>obj\(.+)\(.+).dll</InputPattern>
    <OutputPattern>HystrixExample/$1/$2.dll</OutputPattern>
    <!--<Properties>
      <Property key="qa" val="ready" />
      <Property key="myprop" val="myval" />
    </Properties>-->
  </Deploy>

</Deployments>

<!-- Environment Variables-->   
<!--
  Environment variables that will be included as part of the published build info.
  Patterns may contain the * and the ? wildcards. Include patterns are applied before any exclude patterns.
 -->
<EnvironmentVariables>
  <Enabled>false</Enabled>
  <IncludePatterns>
    <!--<Pattern key=""/>-->
  </IncludePatterns>
  <ExcludePatterns>
    <Pattern key="*password*"/>
    <Pattern key="*key*"/>
    <Pattern key="*secret*"/>
  </ExcludePatterns>
</EnvironmentVariables>

<!-- License Control-->
<!--
  Enable if you want a license scan to run automatically after the build is complete.
  Only available with Artifactory Pro!
-->
<LicenseControl>
  <Enabled>false</Enabled>
  <LicenseViolationRecipients>
    <Recipient email="[email protected]"/>
  </LicenseViolationRecipients>
  <!--If Nuget package license is not identified by Artifactory, run license discovery inside the package. [RESOURCE INTENSIVE]-->
  <AutomaticLicenseDiscovery>true</AutomaticLicenseDiscovery>
  <IncludePublishedArtifacts>false</IncludePublishedArtifacts>
  <ScopesForLicenseAnalysis>
    <!--<Scope value="Debug"/>-->
  </ScopesForLicenseAnalysis>
</LicenseControl>

<BlackDuckComplianceCheck>
  <Enabled>false</Enabled>
  <CodeCenterApplicationName>$(BD_APPLICATION_NAME)</CodeCenterApplicationName>
  <CodeCenterApplicationVersion>$(BD_APPLICATION_VERSION)</CodeCenterApplicationVersion>
  <ComplianceReportRecipients>
    <!--<Recipient email="[email protected]"/>-->
  </ComplianceReportRecipients>
  <ScopesForLicenseAnalysis>
    <!--<Scope value="Debug"/>-->
  </ScopesForLicenseAnalysis>
  <IncludePublishedArtifacts>false</IncludePublishedArtifacts>
  <AutoCreateMissingComponent>false</AutoCreateMissingComponent>
  <AutoDiscardStaleComponent>false</AutoDiscardStaleComponent>   
</BlackDuckComplianceCheck>

<!--
    If the build is not running under TFS, uncomment the two elements below. 
    The build name and number can be passed as build/environment variables.
-->
<BuildName>$(BUILD_NAME)</BuildName>
<BuildNumber>$(BUILD_ID)</BuildNumber>


<!--Network Configuration-->

<!--Timeout(seconds) for the plugin deployment client-->
<ConnectionTimeout>300</ConnectionTimeout>

<ProxySettings>
  <Bypass>true</Bypass>
  <Host>127.0.0.1</Host>
  <Port>8888</Port>
  <UserName></UserName>
  <Password></Password>
</ProxySettings>

<!--TFS Integration-->

<!--In order to get a full http url address to the TFS build page through the Artifactory Build info , the plugin needs the Team Project name-->
<!--<TEAM_PROJECT>$(TEAM_PROJECT_NAME)</TEAM_PROJECT>-->

I only want to publish my dlls as I don't have Artifactory Pro so I can't publish nugets, so I only uncommented the dll section of the deploy.

I'm using visual studio 2015, with nuget package manager 3.4.4 so I'm not supposed to need the .nuget folder since nuget 2.7, but I created a .nuget folder in my project and even added the nuget.exe file to it but that doesn't seem to help. I haven't been able to make visual studio add them automatically.

Is there something I'm missing?

Thanks

1
If possible, you can get some help from the document:jfrog.com/confluence/display/RTF/MSBuild+Artifactory+Plugin - Leo Liu-MSFT
Hi thats the guide I've been using, I found the problem I needed to change the <DeployEnabled> tag to true and add a <DeployRepository> tag the but now I'm getting a 403 error :( - Ana Franco

1 Answers

0
votes

The problem was that I needed to change the tag to true and add the tag but I found out that the Artifactory Jenkins plugin has a generic option to upload these artifacts so I really don't need to use de MSBuild Artifactory plugin.

Thanks