Артефакты Jenkins Pipeline Groovy MSBuild

#jenkins #groovy #msbuild #jenkins-pipeline

#Дженкинс #groovy #msbuild #Дженкинс-конвейер

Вопрос:

Я пытаюсь создать конвейер Jenkins для моей компании, чтобы извлекать его из Gitlab, выполнять MSBuild, публиковать артефакты в каталоге, а затем архивировать все артефакты для отправки в репозиторий или общий файловый ресурс. Приложение представляет собой веб-приложение.

Моя проблема возникает, когда я пытаюсь реализовать функцию zip из AntBuilder. Независимо от того, что я указываю для своего 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} in the path, и он все еще жалуется.

Не уверен, почему или в каком контексте выполняется эта конкретная функция, но, похоже, ее нет в агенте сборки dotnet или в рабочей области проекта.

Ценю любые предложения.

Ответ №1:

Может быть, вы ссылаетесь на два разных расположения файлов? В том, который вы используете..Опубликовать Dev, а в другом, который вы используете./Publish/Dev . Я думаю, что «.» и «..» будут разрешены для двух разных расположений файлов. «..» относится к родительской папке папки, в которой вы находитесь, тогда как «.» относится к папке, в которой вы находитесь.

Jenkins/ProjectBasedir/Публикация / Разработка (.) против Jenkins/Публикация / разработка (..)