У меня есть проект. net -core 3.1 (Microsoft. NET .Sdk.Web) в gitlab, и я настраиваю для него конвейер CI / CD. В качестве последнего шага я хочу, чтобы все выходные файлы .dll и .exe были подписаны нашим ключом. Я могу сделать это, вручную добавив некоторые команды signtool как часть файла gitlab-ci.yml, однако для этого потребуется войти в каждый проект и вручную настроить файл, чтобы отразить особенности этого проекта.
С другой стороны, я смог добавить общую цель c в файл .csproj, который вызывает signtool как команду exec / для $ (TargetDir) $ (TargetFileName). В определенной степени это работает, но не все подписывает. В этом случае он подписывает (например) cthulhu.dll, но не также cthulhu.Views.dll (оба из которых показаны в выводе CLI 'do tnet msbuild'), а также создается cthulhu.exe. но не отображается в выводе msbuild и также не подписан.
Файл csproj имеет это в качестве целевого объекта (пробовал запускать как после перестройки, так и после публикации sh):
<Target Name="SignAssembly" AfterTargets="Rebuild">
<Message Text="Signing assembly '$(TargetDir)$(TargetFileName)'" Importance="high" />
<Exec Command="signtool sign /f "mykey.pfx" /p "snip" /tr http://timestamp.digicert.com "$(TargetDir)$(TargetFileName)"" />
И файл gitlab-ci.yml выглядит так (я знаю, что использую контейнер sdk docker, но, похоже, он позволяет мне поддерживать. net -core builds в любом случае, в то время как существует ошибка, препятствующая работе указанного контейнера c. net -core):
image: mcr.microsoft.com/dotnet/framework/sdk:4.8
stages:
- build
- release
build:
stage: build
script:
- 'dotnet build -r win-x64'
release:
stage: release
script:
- 'dotnet add package signtool --version 10.0.17763.132'
- 'dotnet msbuild cthulhu.csproj /t:"Restore;Rebuild;SignAssembly;Publish" /p:SelfContained=True /p:PublishProtocol=FileSystem /p:Configuration=Release /p:Platform=x64 /p:TargetFrameworks=netcoreapp3.1 /p:PublishDir=bin\Release\netcoreapp3.1\publish\win-x64 /p:RuntimeIdentifier=win-x64 /p:PublishReadyToRun=False /p:PublishTrimmed=True'
artifacts:
name: "$CI_JOB_STAGE-$CI_COMMIT_REF_NAME"
paths:
- '.\bin\Release\netcoreapp3.1\publish\win-x64'