Skip to content

Commit

Permalink
Fix sonar analysis (#4841)
Browse files Browse the repository at this point in the history
* Spit out more info starting cake

* Output Xunit tests results too

* No need for Does bodies

* Use process arg builder

* Spit out more stuff in sonar workflow
  • Loading branch information
Cheesebaron committed Mar 19, 2024
1 parent 4f606e5 commit 45f1ff1
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 28 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/sonar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,6 @@ jobs:
java-version: '17'

- name: Build
run: dotnet cake --verbosity=Diagnostic --artifactsDir="output" --target=Sonar --sonarKey=$env:SONARY_KEY
run: dotnet cake --verbosity=Normal --artifactsDir="output" --target=Sonar --sonarKey=$env:SONARY_KEY
env:
SONARY_KEY: ${{secrets.SONAR_TOKEN}}
78 changes: 51 additions & 27 deletions build.cake
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,14 @@ Setup(context =>
target,
cakeVersion);
if (GitHubActions.Environment.PullRequest.IsPullRequest)
{
Information("PR HeadRef: {0}", GitHubActions.Environment.Workflow.HeadRef);
Information("PR BaseRef: {0}", GitHubActions.Environment.Workflow.BaseRef);
}
Information("RefName: {0}", GitHubActions.Environment.Workflow.RefName);
verbosity = context.Log.Verbosity;
verbosityDotNet = verbosity switch {
Verbosity.Quiet => DotNetVerbosity.Quiet,
Expand Down Expand Up @@ -76,32 +84,48 @@ Task("SonarStart")
.WithCriteria(() => !string.IsNullOrEmpty(sonarKey))
.Does(() =>
{
StringBuilder args = new StringBuilder();
args.Append("begin ");
args.Append("/key:MvvmCross_MvvmCross ");
args.Append("/o:mvx ");
args.Append("/d:sonar.host.url=https://sonarcloud.io ");
args.AppendFormat("/d:sonar.cs.xunit.reportsPaths={0} ", new DirectoryPath(outputDir + "/Tests/").FullPath);
args.AppendFormat("/d:sonar.token={0} ", sonarKey);
var xunitReportsPath = MakeAbsolute(new DirectoryPath(outputDir + "/Tests")) + "/**/*.xml";
Information("XUnitReportsPath {0}", xunitReportsPath);
if (GitHubActions.Environment.PullRequest.IsPullRequest)
ProcessArgumentBuilder PrepareSonarArguments(ProcessArgumentBuilder args)
{
args.AppendFormat("/d:sonar.pullrequest.branch={0}", GitHubActions.Environment.Workflow.HeadRef);
args.AppendFormat("/d:sonar.pullrequest.base={0}", GitHubActions.Environment.Workflow.BaseRef);
args.Append("begin");
args.Append("/key:{0}", "MvvmCross_MvvmCross");
args.Append("/o:{0}", "mvx");
args.Append("/d:sonar.host.url={0}", "https://sonarcloud.io");
args.Append("/d:sonar.cs.xunit.reportsPaths={0}", xunitReportsPath);
args.AppendSecret("/d:sonar.token={0}", sonarKey);
if (GitHubActions.Environment.PullRequest.IsPullRequest)
{
args.Append("/d:sonar.pullrequest.key={0}", GitHubActions.Environment.Workflow.RefName.Replace("/merge", ""));
args.Append("/d:sonar.pullrequest.branch={0}", GitHubActions.Environment.Workflow.HeadRef);
args.Append("/d:sonar.pullrequest.base={0}", GitHubActions.Environment.Workflow.BaseRef);
}
return args;
}
DotNetTool("./", "dotnet-sonarscanner", args.ToString());
var settings = new DotNetToolSettings
{
ArgumentCustomization = PrepareSonarArguments
};
DotNetTool("sonarscanner", settings);
});

Task("SonarEnd")
.WithCriteria(() => !string.IsNullOrEmpty(sonarKey))
.Does(() =>
{
StringBuilder args = new StringBuilder();
args.Append("end ");
args.AppendFormat("/d:sonar.token={0}", sonarKey);
{
var settings = new DotNetToolSettings
{
ArgumentCustomization = args => args
.Append("end")
.AppendSecret("/d:sonar.token={0}", sonarKey)
};
DotNetTool("./", "dotnet-sonarscanner", args.ToString());
DotNetTool("sonarscanner", settings);
});

Task("Build")
Expand Down Expand Up @@ -145,9 +169,15 @@ Task("UnitTest")
foreach(var project in testPaths)
{
var projectName = project.GetFilenameWithoutExtension();
var testXml = MakeAbsolute(new FilePath(outputDir + "/Tests/" + projectName + ".xml"));
settings.Loggers = new string[] { $"trx;LogFileName={testXml.FullPath}" };
try
var testTrx = MakeAbsolute(new FilePath(outputDir + "/Tests/" + projectName + ".trx"));
var testXml= MakeAbsolute(new FilePath(outputDir + "/Tests/" + projectName + ".xml"));
settings.Loggers = new string[]
{
$"trx;LogFileName={testTrx.FullPath}",
$"xunit;LogFilePath={testXml.FullPath};Title={projectName}"
};
try
{
DotNetTest(project.ToString(), settings);
}
Expand All @@ -173,18 +203,12 @@ Task("Sonar")
.IsDependentOn("SonarStart")
.IsDependentOn("Build")
.IsDependentOn("UnitTest")
.IsDependentOn("SonarEnd")
.Does(() =>
{
});
.IsDependentOn("SonarEnd");

Task("Default")
.IsDependentOn("Clean")
.IsDependentOn("Build")
.IsDependentOn("UnitTest")
.IsDependentOn("CopyPackages")
.Does(() =>
{
});
.IsDependentOn("CopyPackages");

RunTarget(target);

0 comments on commit 45f1ff1

Please sign in to comment.