Azure DevOps Pipeline中AzureSignTool提示command not found问题
解决Azure DevOps Ubuntu代理中AzureSignTool找不到的问题
核心原因
在Ubuntu这类Linux系统中,dotnet tool install --global会把工具安装到$HOME/.dotnet/tools目录,但Azure DevOps的Ubuntu代理启动bash时用了--noprofile --norc参数(从你的日志可看到),不会加载用户配置里的PATH,导致这个工具路径没被加入当前会话的环境变量,直接输工具名称就会找不到。而Windows系统中dotnet全局工具路径会自动加入系统PATH,所以你之前用Windows代理时没这个问题。
解决方案(任选其一)
方案1:用dotnet tool run执行签名(最可靠)
不需要依赖PATH,直接通过dotnet工具调用,修改你的签名任务:
- task: CmdLine@2 displayName: 'Sign Application' inputs: script: | dotnet tool run AzureSignTool sign -kvu $(SigningVaultURL) -kvi $(SigningClientId) -tr $(SigningTimeStamp) -kvt $(SigningTennentId) -kvs $(SigningClientSecret) -kvc $(SigningCertName) -v $(Build.SourcesDirectory)/src/Project/bin/Release/Project.exe
方案2:手动添加工具路径到PATH
在执行签名命令前,把dotnet全局工具目录临时加入当前会话的PATH:
- task: CmdLine@2 displayName: 'Sign Application' inputs: script: | export PATH="$HOME/.dotnet/tools:$PATH" AzureSignTool sign -kvu $(SigningVaultURL) -kvi $(SigningClientId) -tr $(SigningTimeStamp) -kvt $(SigningTennentId) -kvs $(SigningClientSecret) -kvc $(SigningCertName) -v $(Build.SourcesDirectory)/src/Project/bin/Release/Project.exe
方案3:本地安装工具(替代全局安装)
把工具安装到指定本地目录,直接用完整路径调用:
- task: DotNetCoreCLI@2 displayName: 'Install AzureSignTool' inputs: command: custom custom: tool arguments: 'install azuresigntool --tool-path $(Build.BinariesDirectory)/tools' - task: CmdLine@2 displayName: 'Sign Application' inputs: script: | $(Build.BinariesDirectory)/tools/AzureSignTool sign -kvu $(SigningVaultURL) -kvi $(SigningClientId) -tr $(SigningTimeStamp) -kvt $(SigningTennentId) -kvs $(SigningClientSecret) -kvc $(SigningCertName) -v $(Build.SourcesDirectory)/src/Project/bin/Release/Project.exe
内容的提问来源于stack exchange,提问作者dickiebow
相关产品推荐
相关产品推荐

