我读了所有类似的问题,没有找到答案.
docker run -it --rm \
-v /home/source3/mySolution:/myProj \
nosinovacao/dotnet-sonar:latest \
bash -c \
"cd myProj \
&& dotnet /sonar-scanner/SonarScanner.MSBuild.dll begin \
/k:testProj3 /name:testProj3 /version:1.0 \
/d:sonar.host.url="http://192.168.1.98:9000" \
/d:sonar.login="<myToken>" \
&& dotnet restore \
&& dotnet build -c Release \
&& dotnet /sonar-scanner/SonarScanner.MSBuild.dll end \
/d:sonar.login="<myToken>""
这是Sonarcube scanner,它分析位于linux目录/home/source3/mySolution中的项目.
public void StartAnalysis(string projectName, string projectKey)
{
_logger.LogInformation($"{nameof(StartAnalysis)} called with params: {nameof(projectName)}: '{projectName}', {nameof(projectKey)}: '{projectKey}'");
var command = @$"run -it --rm \
-v ""/home/source3/mySolution:/myProj"" \
nosinovacao/dotnet-sonar:latest \
bash -c \
""cd myProj \
&& dotnet /sonar-scanner/SonarScanner.MSBuild.dll begin \
/k:{projectKey} /name:{projectName} /version:1.0 \
/d:sonar.host.url=""{_baseUrl}"" \
/d:sonar.login=""{_token}"" \
&& dotnet restore \
&& dotnet build -c Release \
&& dotnet /sonar-scanner/SonarScanner.MSBuild.dll end \
/d:sonar.login=""{_token}""""";
var processInfo = new ProcessStartInfo("docker", command)
{
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true
};
int exitCode;
using (var process = new Process())
{
process.StartInfo = processInfo;
process.OutputDataReceived += ProcessOutputDataReceived;
process.ErrorDataReceived += ProcessErrorDataReceived;
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit(1200000);
if (!process.HasExited)
{
process.Kill();
}
exitCode = process.ExitCode;
process.Close();
}
}
上述代码因"docker:引用格式无效"而失败.非常感谢您的帮助