Sto provando a creare un file .sln VS con più file .vcproj in C++. Il file della soluzione viene generato utilizzando CMake e ho questo componente che funziona in Jenkins (con il plugin del builder CMake). Per costruire il file della soluzione, sto usando msbuild. Sono in grado di creare la soluzione utilizzando sia Visual Studio e dalla riga di comando con il seguente comando:Msbuild funziona tramite VS e riga di comando, ma non riesce via Jenkins
C:\Jenkins\workspace\SonioTest>"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" /t:Rebuild bin/SonIO.sln
Questo costruisce con successo (sulla stessa macchina che Jenkins risiede).
Tuttavia, sto tentando di automatizzare questa parte della build in Jenkins e la build non riesce con un paio di errori C1083
("Cannot open source file: '..\path\to\file.ext': No such file or directory
). Ho provato ad usare sia il plug-in di msgen di Jenkins che lo stesso comando che funziona nel terminale come un passo di generazione "Esegui comando batch di Windows", con lo stesso risultato.
Quando si utilizza il comando batch passo accumulo di Windows, posso vedere nel log che il comando in esecuzione:
C:\Jenkins\workspace\SonioTest>"C:\Windows\Microsoft.NET\Framework\v4.0.30319 msbuild.exe" /t:Rebuild bin/SonIO.sln
... è esattamente lo stesso di quello che funziona da linea di comando , incluso la directory di lavoro.
Sto eseguendo Jenkins come servizio e ho l'accesso al servizio come account (con privilegi di amministratore). Qualcuno sa da quale directory Jenkins eseguirà i comandi batch?
Qualche idea del perché sto osservando questa differenza di comportamento tra Jenkins e la riga di comando?
Credo che bisogna specificare il percorso assoluto alla soluzione utilizzando un segnaposto come% SPAZIO DI LAVORO% –
Ho verificato che il comando viene eseguito da Jenkins dalla stessa directory di lavoro. Il tuo commento si applica ancora? Non sono sicuro al 100% di cosa intendi. – Kohanz