Jenkins Pipeline Groovy MSBuild Artifacts

时间:2016-10-15 04:31:12

标签: jenkins groovy msbuild jenkins-pipeline

我正在尝试为我的公司构建一个Jenkins管道,以便从Gitlab中获取,执行MSBuild,将Artifacts发布到目录,然后压缩所有工件以推送到存储库或文件共享。该应用程序是一个Web应用程序。

当我尝试从AntBuilder实现zip函数时,会出现问题。无论我为我的basedir指定什么,该作业都无法说找不到该目录。我的代码如下。

#!groovy​

node('dotnet') { //select any node with a doctnet label
    stage('Checkout') {  //checkout the code from source
        checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], gitTool: 'Windows_Gtt', submoduleCfg: [], userRemoteConfigs: [[credentialsId: '99999999-9999-9999-99999', url:      'git@repos.somecompany.com:api/sharedservices.git']]])
    }
    stage('Build') {  //build steps go here
         bat 'nuget restore LandingPageSvc.sln'  //restore nuget sources
         bat "\"${tool 'MSBUILD46_64_Pipeline'}\" LandingPageSvc.sln /m /p:VisualStudioVersion=14.0"   //msbuild
    }
    // stage('NUnit Tests') {  //Unit testing steps go here
    //     bat '"C:\\Program Files (x86)\\NUnit.org\\nunit-console\\nunit3-console.exe" ./LandingPageSvc.Test/bin/Debug/LandingPageSvc.Tests.dll --result nunit-result.xml'
    // }
    stage('Packaging') {
        bat "\"${tool 'MSBUILD46_64_Pipeline'}\" LandingPageSvc\\LandingPageSvc.csproj /m /p:VisualStudioVersion=14.0;Configuration=Debug;PublishDestination=..\\Publish\\Dev /t:PublishToFileSystem"
        def ant = new AntBuilder()
        ant.zip(destfile: "test.zip", basedir: "./Publish/Dev")
    }
    stage('Publish') {
      // build nuget package
      //push nuget pcakage to artifactory

    }
}

所以,其他一切都解决了dotnet构建代理上的工作区就好了,我甚至尝试在路径中使用${WORKSPACE},它仍然抱怨。

不确定此特定函数在何处或在什么上下文中运行,但它似乎不在dotnet构建代理程序或项目工作区中。

感谢任何建议。

1 个答案:

答案 0 :(得分:1)

您是否正在引用两个不同的文件位置?在一个你使用.. \ Publish \ Dev和另一个你使用./Publish/Dev。我觉得 ”。”并且“..”将解析为两个不同的文件位置。 “..”指的是您所在文件夹的父文件夹,而“。”指您所在的文件夹。

Jenkins / ProjectBasedir / Publish / Dev(。) VS Jenkins / Publish / Dev(..)