我正在尝试为我的公司构建一个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构建代理程序或项目工作区中。
感谢任何建议。
答案 0 :(得分:1)
您是否正在引用两个不同的文件位置?在一个你使用.. \ Publish \ Dev和另一个你使用./Publish/Dev。我觉得 ”。”并且“..”将解析为两个不同的文件位置。 “..”指的是您所在文件夹的父文件夹,而“。”指您所在的文件夹。
Jenkins / ProjectBasedir / Publish / Dev(。) VS Jenkins / Publish / Dev(..)