При выполнении задачи GitVersion в сценарии Cake Build отсутствует библиотека в DevOps Azure при запуске - PullRequest
0 голосов
/ 04 апреля 2019

Когда я запускаю локально, задача GitVersion работает нормально и запускается. В конвейере сборки Azure DevOps тот же сценарий завершается ошибкой. Я получаю следующую ошибку:

========================================
Version
========================================
Executing task: Version
INFO [04/03/19 20:23:54:54] Working directory: D:\a\1\s\PPIL
INFO [04/03/19 20:23:54:56] IsDynamicGitRepository: False
ERROR [04/03/19 20:23:54:60] An unexpected error occurred:
System.TypeInitializationException: The type initializer for 'LibGit2Sharp.Core.NativeMethods' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'git2-15e1193': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   at LibGit2Sharp.Core.NativeMethods.git_libgit2_init()
   at LibGit2Sharp.Core.NativeMethods.LoadNativeLibrary()
   at LibGit2Sharp.Core.NativeMethods..cctor()
   --- End of inner exception stack trace ---
   at LibGit2Sharp.Core.NativeMethods.git_buf_free(GitBuf buf)
   at LibGit2Sharp.Core.Handles.GitBuf.Dispose()
   at LibGit2Sharp.Core.Proxy.ConvertPath(Func`2 pathRetriever)
   at LibGit2Sharp.Repository.Discover(String startingPath)
   at GitVersion.GitPreparer.GetDotGitDirectory()
   at GitVersion.GitPreparer.GetProjectRootDirectory()
   at GitVersion.ConfigurationProvider.Verify(GitPreparer gitPreparer, IFileSystem fileSystem)
   at GitVersion.Program.VerifyArgumentsAndRun()
INFO [04/03/19 20:23:54:60] 
INFO [04/03/19 20:23:54:60] Attempting to show the current git graph (please include in issue): 
INFO [04/03/19 20:23:54:60] Showing max of 100 commits
INFO [04/03/19 20:23:54:64] *   c27bbc5 5 minutes ago  (HEAD, origin/master)
|\  
| * 57526a4 11 minutes ago 
|/  
*   5057bd8 63 minutes ago 
|\  
| * 3df4426 68 minutes ago 
|/  
*   9e7d5bc 6 days ago 
|\  
| * 222a7e0 6 days ago 
|/  
*   3474e55 6 days ago 
|\  
| * 9156567 6 days ago 
| * 043e8be 6 days ago 
|/  
| * d4394a6 2 days ago  (origin/serilog)
|/  
* 888471a 7 days ago 
*   17c9ee3 2 weeks ago 
|\  
| * 9f61e42 2 weeks ago 
| * 02e6828 2 weeks ago 
| * 62dd884 3 weeks ago 
|/  
*   b71f0e2 4 weeks ago 
|\  
| * a040103 4 weeks ago 
| * 45a773c 4 weeks ago 
|/  
* 6ac1314 5 weeks ago 
* 3f81960 5 weeks ago 
* 8ea9f85 5 weeks ago 
* c9bb4ee 5 weeks ago 

INFO [04/03/19 20:23:54:54] Working directory: D:\a\1\s\PPIL
INFO [04/03/19 20:23:54:56] IsDynamicGitRepository: False
ERROR [04/03/19 20:23:54:60] An unexpected error occurred:
System.TypeInitializationException: The type initializer for 'LibGit2Sharp.Core.NativeMethods' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'git2-15e1193': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   at LibGit2Sharp.Core.NativeMethods.git_libgit2_init()
   at LibGit2Sharp.Core.NativeMethods.LoadNativeLibrary()
   at LibGit2Sharp.Core.NativeMethods..cctor()
   --- End of inner exception stack trace ---
   at LibGit2Sharp.Core.NativeMethods.git_buf_free(GitBuf buf)
   at LibGit2Sharp.Core.Handles.GitBuf.Dispose()
   at LibGit2Sharp.Core.Proxy.ConvertPath(Func`2 pathRetriever)
   at LibGit2Sharp.Repository.Discover(String startingPath)
   at GitVersion.GitPreparer.GetDotGitDirectory()
   at GitVersion.GitPreparer.GetProjectRootDirectory()
   at GitVersion.ConfigurationProvider.Verify(GitPreparer gitPreparer, IFileSystem fileSystem)
   at GitVersion.Program.VerifyArgumentsAndRun()
INFO [04/03/19 20:23:54:60] 
INFO [04/03/19 20:23:54:60] Attempting to show the current git graph (please include in issue): 
INFO [04/03/19 20:23:54:60] Showing max of 100 commits
INFO [04/03/19 20:23:54:64] *   c27bbc5 5 minutes ago  (HEAD, origin/master)
|\  
| * 57526a4 11 minutes ago 
|/  
*   5057bd8 63 minutes ago 
|\  
| * 3df4426 68 minutes ago 
|/  
*   9e7d5bc 6 days ago 
|\  
| * 222a7e0 6 days ago 
|/  
*   3474e55 6 days ago 
|\  
| * 9156567 6 days ago 
| * 043e8be 6 days ago 
|/  
| * d4394a6 2 days ago  (origin/serilog)
|/  
* 888471a 7 days ago 
*   17c9ee3 2 weeks ago 
|\  
| * 9f61e42 2 weeks ago 
| * 02e6828 2 weeks ago 
| * 62dd884 3 weeks ago 
|/  
*   b71f0e2 4 weeks ago 
|\  
| * a040103 4 weeks ago 
| * 45a773c 4 weeks ago 
|/  
* 6ac1314 5 weeks ago 
* 3f81960 5 weeks ago 
* 8ea9f85 5 weeks ago 
* c9bb4ee 5 weeks ago 

##[error]An error occurred when executing task 'Version'.
##[error]Error: One or more errors occurred.
##[error]   GitVersion: Process returned an error (exit code 1).
##[error]System.Exception: Unexpected exit code 1 returned from tool Cake.exe
   at Microsoft.TeamFoundation.DistributedTask.Task.Internal.InvokeToolCmdlet.ProcessRecord()
   at System.Management.Automation.CommandProcessor.ProcessRecord()
##[error]PowerShell script completed with 1 errors.
##[section]Finishing: Integration Layer Cake

Похоже, что библиотеки LibGit2Sharp.Core.NativeMethods там нет. Я думал, что проект Cake загрузит необходимые библиотеки, если я включу:

#tool "nuget:?package=GitVersion.CommandLine&version=4.0.0"

в скрипте сборки Cake.

Мой код задачи GitVersion:

GitVersion versionInfo = null;
Task("Version")
    .Does(() => {
    GitVersion(new GitVersionSettings{
        UpdateAssemblyInfo = true,
        OutputType = GitVersionOutput.BuildServer
    });
    versionInfo = GitVersion(new GitVersionSettings{ OutputType = GitVersionOutput.Json });

    Information("Version info: " + versionInfo.InformationalVersion);
});

Чего мне не хватает в моем коде, который не включен в агент сборки Azure DevOps, размещенный на хосте?

1 Ответ

0 голосов
/ 05 апреля 2019

Итак, я разобрался в проблеме.У меня был файл .gitignore, который удаляет папки x86 и x64 из коммитов git.Ну, файлы DLL Windows-инструмента командной строки GitVersion находятся в этих именованных папках в папке win32.Таким образом, инструмент и все его подпапки были привязаны к репо, за исключением тех dll, поэтому, когда торт запускался, он думал, что инструмент был там, но dll отсутствовал.Я вручную вынудил эти dll и их папки быть зафиксированными, что решило эту проблему.

Что мне действительно нужно сделать, так это удалить и затем .gitignore все файлы в каталоге tools, который содержит build build и его инструменты, кромеФайл packages.config, чтобы каждый раз при запуске автоматической сборки он получал свежую копию торта и инструментов.Но это дизайнерское решение.

Так что предупреждение для мудрых, если вам не хватает dll или файлов, проверьте, удаляет ли файл gitignore эти файлы и / или любые из его родительских папок.

...