Skip to content

Commit 07c524f

Browse files
committed
Merge branch 'develop'
* develop: (#167) Update to latest GitReleaseManager (#174) Don't always push latest tag to docker (#181) Make ILMerge depend on Build and Test (#157) Fix PowerShell signing up to date throws exception (#135) Include support for Publish Release Task (#132) Fix name of release notes task (#164) Use version number in URLs (#136) Allow dry run of task (maint) Fixed spelling mistake (#173) Use Product Copyright for packages (#134) Correct target branch for support branches (GH-171) Bump DependencyCheck version (GH-171) Enable Dependency-Check central DB (#162) Rework prerelease substring
2 parents b669657 + e9ef983 commit 07c524f

17 files changed

+226
-83
lines changed

Chocolatey.Cake.Recipe/Content/build.cake

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ BuildParameters.Tasks.DotNetRestoreTask = Task("DotNetRestore")
9898
.WithProperty("Version", BuildParameters.Version.SemVersion)
9999
.WithProperty("AssemblyVersion", BuildParameters.Version.FileVersion)
100100
.WithProperty("FileVersion", BuildParameters.Version.FileVersion)
101-
.WithProperty("AssemblyInformationalVersion", BuildParameters.Version.InformationalVersion);
101+
.WithProperty("AssemblyInformationalVersion", BuildParameters.Version.InformationalVersion)
102+
.WithProperty("Copyright", BuildParameters.ProductCopyright);
102103

103104
if (BuildParameters.BuildAgentOperatingSystem != PlatformFamily.Windows)
104105
{
@@ -187,7 +188,8 @@ BuildParameters.Tasks.DotNetBuildTask = Task("DotNetBuild")
187188
.WithProperty("Version", BuildParameters.Version.SemVersion)
188189
.WithProperty("AssemblyVersion", BuildParameters.Version.FileVersion)
189190
.WithProperty("FileVersion", BuildParameters.Version.FileVersion)
190-
.WithProperty("AssemblyInformationalVersion", BuildParameters.Version.InformationalVersion);
191+
.WithProperty("AssemblyInformationalVersion", BuildParameters.Version.InformationalVersion)
192+
.WithProperty("Copyright", BuildParameters.ProductCopyright);
191193

192194
if (BuildParameters.BuildAgentOperatingSystem != PlatformFamily.Windows)
193195
{
@@ -346,7 +348,8 @@ public void CopyBuildOutput()
346348
.WithProperty("Version", BuildParameters.Version.SemVersion)
347349
.WithProperty("AssemblyVersion", BuildParameters.Version.FileVersion)
348350
.WithProperty("FileVersion", BuildParameters.Version.FileVersion)
349-
.WithProperty("AssemblyInformationalVersion", BuildParameters.Version.InformationalVersion);
351+
.WithProperty("AssemblyInformationalVersion", BuildParameters.Version.InformationalVersion)
352+
.WithProperty("Copyright", BuildParameters.ProductCopyright);
350353

351354
if (BuildParameters.BuildAgentOperatingSystem != PlatformFamily.Windows)
352355
{
@@ -408,7 +411,8 @@ public void CopyBuildOutput()
408411
.WithProperty("Version", BuildParameters.Version.SemVersion)
409412
.WithProperty("AssemblyVersion", BuildParameters.Version.FileVersion)
410413
.WithProperty("FileVersion", BuildParameters.Version.FileVersion)
411-
.WithProperty("AssemblyInformationalVersion", BuildParameters.Version.InformationalVersion);
414+
.WithProperty("AssemblyInformationalVersion", BuildParameters.Version.InformationalVersion)
415+
.WithProperty("Copyright", BuildParameters.ProductCopyright);
412416

413417
if (BuildParameters.BuildAgentOperatingSystem != PlatformFamily.Windows)
414418
{
@@ -520,6 +524,13 @@ BuildParameters.Tasks.ContinuousIntegrationTask = Task("CI")
520524
BuildParameters.Tasks.ReleaseNotesTask = Task("ReleaseNotes")
521525
.IsDependentOn("Create-Release-Notes");
522526

527+
///////////////////////////////////////////////////////////////////////////////
528+
// ALIASES - Kept around for backwards compatibility
529+
///////////////////////////////////////////////////////////////////////////////
530+
531+
Task("Publish-GitHub-Release")
532+
.IsDependentOn("Publish-Release-Notes");
533+
523534
///////////////////////////////////////////////////////////////////////////////
524535
// EXECUTION
525536
///////////////////////////////////////////////////////////////////////////////

Chocolatey.Cake.Recipe/Content/credentials.cake

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,30 @@ public class MastodonCredentials
4949
}
5050
}
5151

52+
public class DependencyCheckNvdCredentials
53+
{
54+
public string ApiKey { get; private set; }
55+
56+
public DependencyCheckNvdCredentials(string apiKey)
57+
{
58+
ApiKey = apiKey;
59+
}
60+
}
61+
62+
public class DependencyCheckDbCredentials
63+
{
64+
public string ConnectionString { get; private set; }
65+
public string UserName { get; private set; }
66+
public string Password { get; private set; }
67+
68+
public DependencyCheckDbCredentials(string connectionString, string userName, string password)
69+
{
70+
ConnectionString = connectionString;
71+
UserName = userName;
72+
Password = password;
73+
}
74+
}
75+
5276
public class SlackCredentials
5377
{
5478
public string Channel { get; private set; }
@@ -157,6 +181,22 @@ public static MastodonCredentials GetMastodonCredentials(ICakeContext context)
157181
);
158182
}
159183

184+
public static DependencyCheckNvdCredentials GetDependencyCheckNvdCredentials(ICakeContext context)
185+
{
186+
return new DependencyCheckNvdCredentials(
187+
context.EnvironmentVariable(Environment.DependencyCheckNvdApiKeyVariable)
188+
);
189+
}
190+
191+
public static DependencyCheckDbCredentials GetDependencyCheckDbCredentials(ICakeContext context)
192+
{
193+
return new DependencyCheckDbCredentials(
194+
context.EnvironmentVariable(Environment.DependencyCheckDbConnectionStringVariable),
195+
context.EnvironmentVariable(Environment.DependencyCheckDbUserVariable),
196+
context.EnvironmentVariable(Environment.DependencyCheckDbPasswordVariable)
197+
);
198+
}
199+
160200
public static SlackCredentials GetSlackCredentials(ICakeContext context)
161201
{
162202
return new SlackCredentials(

Chocolatey.Cake.Recipe/Content/dependencyCheck.cake

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ BuildParameters.Tasks.DependencyCheckTask = Task("Dependency-Check")
2222
.Does(() => RequireTool(ToolSettings.DependencyCheckTool, () =>
2323
{
2424
DownloadFile(
25-
"https://github.com/jeremylong/DependencyCheck/releases/download/v8.2.1/dependency-check-8.2.1-release.zip",
25+
"https://github.com/jeremylong/DependencyCheck/releases/download/v12.0.1/dependency-check-12.0.1-release.zip",
2626
BuildParameters.RootDirectoryPath.CombineWithFilePath("dependency-check.zip")
2727
);
2828

@@ -49,18 +49,38 @@ BuildParameters.Tasks.DependencyCheckTask = Task("Dependency-Check")
4949
if (ToolSettings.DependencyCheckDisableYarnAudit)
5050
{
5151
ReplaceTextInFiles(
52-
BuildParameters.RootDirectoryPath.Combine("tools/DependencyCheck.Runner.Tool.3.2.1/tools/bin").CombineWithFilePath("dependency-check.bat").ToString(),
52+
BuildParameters.RootDirectoryPath.Combine("tools/DependencyCheck.Runner.Tool.3.2.1/tools/bin").CombineWithFilePath("dependency-check.bat").ToString(),
5353
"org.owasp.dependencycheck.App %CMD_LINE_ARGS%",
5454
"org.owasp.dependencycheck.App --disableYarnAudit %CMD_LINE_ARGS%"
5555
);
5656
};
5757

58+
if (!string.IsNullOrEmpty(BuildParameters.DependencyCheckNvdApiKey))
59+
{
60+
ReplaceTextInFiles(
61+
BuildParameters.RootDirectoryPath.Combine("tools/DependencyCheck.Runner.Tool.3.2.1/tools/bin").CombineWithFilePath("dependency-check.bat").ToString(),
62+
"%CMD_LINE_ARGS%",
63+
string.Format("--nvdApiKey {0} %CMD_LINE_ARGS%", BuildParameters.DependencyCheckNvdApiKey)
64+
);
65+
};
66+
5867
var DependencyCheckSettings = new DependencyCheckSettings {
5968
Project = BuildParameters.ProductName,
6069
Scan = BuildParameters.SourceDirectoryPath.FullPath,
6170
Format = "ALL",
6271
Out = BuildParameters.Paths.Directories.DependencyCheckReports.FullPath
6372
};
6473

74+
if (!string.IsNullOrEmpty(BuildParameters.DependencyCheckDb.ConnectionString) &&
75+
!string.IsNullOrEmpty(BuildParameters.DependencyCheckDb.UserName) &&
76+
!string.IsNullOrEmpty(BuildParameters.DependencyCheckDb.Password))
77+
{
78+
DependencyCheckSettings.ConnectionString = BuildParameters.DependencyCheckDb.ConnectionString;
79+
DependencyCheckSettings.DatabaseUser = BuildParameters.DependencyCheckDb.UserName;
80+
DependencyCheckSettings.DatabasePassword = BuildParameters.DependencyCheckDb.Password;
81+
DependencyCheckSettings.DatabaseDriverName = BuildParameters.DependencyCheckDbDriverName;
82+
DependencyCheckSettings.DatabaseDriverPath = BuildParameters.Paths.Files.DependencyCheckDbDriverPath.ToString();
83+
};
84+
6585
DependencyCheck(DependencyCheckSettings);
6686
}));

Chocolatey.Cake.Recipe/Content/docker.cake

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ BuildParameters.Tasks.DockerPush = Task("DockerPush")
6666
});
6767

6868
BuildParameters.Tasks.DockerTagAsLatest = Task("DockerTagAsLatest")
69-
.WithCriteria(() => BuildParameters.IsTagged && BuildParameters.Version.MajorMinorPatch == BuildParameters.Version.FullSemVersion, "Skipping because this isn't a tagged full release build.")
69+
.WithCriteria(() => BuildParameters.BranchType == BranchType.Master && BuildParameters.IsTagged && BuildParameters.Version.MajorMinorPatch == BuildParameters.Version.FullSemVersion, "Skipping because this isn't a tagged full release build.")
7070
.WithCriteria(() => BuildParameters.DockerCredentials.HasCredentials, "Skipping because Docker Credentials were not provided.")
7171
.WithCriteria(() => BuildParameters.ShouldRunDocker, "Skipping because running Docker tasks is not enabled")
7272
.IsDependentOn("DockerLogin")
@@ -116,14 +116,16 @@ BuildParameters.Tasks.DockerManifest = Task("DockerManifest")
116116

117117
DockerManifestPush(manifestListName);
118118

119-
// Create the latest manifest
120-
DockerManifestCreate(
121-
string.Format("{0}/{1}:latest", BuildParameters.RepositoryOwner, BuildParameters.RepositoryName),
122-
string.Format("{0}/{1}:latest-windows", BuildParameters.RepositoryOwner, BuildParameters.RepositoryName),
123-
new string[] {
124-
string.Format("{0}/{1}:latest-linux", BuildParameters.RepositoryOwner, BuildParameters.RepositoryName)
125-
}
126-
);
127-
128-
DockerManifestPush(string.Format("{0}/{1}:latest", BuildParameters.RepositoryOwner, BuildParameters.RepositoryName));
119+
// Create the latest manifest only if this is the master branch.
120+
if (BuildParameters.BranchType == BranchType.Master) {
121+
DockerManifestCreate(
122+
string.Format("{0}/{1}:latest", BuildParameters.RepositoryOwner, BuildParameters.RepositoryName),
123+
string.Format("{0}/{1}:latest-windows", BuildParameters.RepositoryOwner, BuildParameters.RepositoryName),
124+
new string[] {
125+
string.Format("{0}/{1}:latest-linux", BuildParameters.RepositoryOwner, BuildParameters.RepositoryName)
126+
}
127+
);
128+
129+
DockerManifestPush(string.Format("{0}/{1}:latest", BuildParameters.RepositoryOwner, BuildParameters.RepositoryName));
130+
}
129131
});

Chocolatey.Cake.Recipe/Content/environment.cake

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616
public static class Environment
1717
{
1818
public static string DefaultPushSourceUrlVariable { get; private set; }
19+
public static string DependencyCheckDbConnectionStringVariable { get; private set; }
20+
public static string DependencyCheckDbDriverNameVariable { get; private set; }
21+
public static string DependencyCheckDbPasswordVariable { get; private set; }
22+
public static string DependencyCheckDbUserVariable { get; private set; }
23+
public static string DependencyCheckNvdApiKeyVariable { get; private set; }
1924
public static string DiscordWebHookUrlVariable { get; private set; }
2025
public static string DiscordUserNameVariable { get; private set; }
2126
public static string DiscordAvatarUrlVariable { get; private set; }
@@ -38,6 +43,11 @@ public static class Environment
3843

3944
public static void SetVariableNames(
4045
string defaultPushSourceUrlVariable = null,
46+
string dependencyCheckDbConnectionStringVariable = null,
47+
string dependencyCheckDbDriverNameVariable = null,
48+
string dependencyCheckDbPasswordVariable = null,
49+
string dependencyCheckDbUserVariable = null,
50+
string dependencyCheckNvdApiKeyVariable = null,
4151
string discordWebHookUrlVariable = null,
4252
string discordUserNameVariable = null,
4353
string discordAvatarUrlVariable = null,
@@ -59,6 +69,11 @@ public static class Environment
5969
string dockerServerVariable = null)
6070
{
6171
DefaultPushSourceUrlVariable = defaultPushSourceUrlVariable ?? "NUGETDEVPUSH_SOURCE";
72+
DependencyCheckDbConnectionStringVariable = dependencyCheckDbConnectionStringVariable ?? "DEPENDENCYCHECK_DB_CONNECTIONSTRING";
73+
DependencyCheckDbDriverNameVariable = dependencyCheckDbDriverNameVariable ?? "DEPENDENCYCHECK_DB_DRIVERNAME";
74+
DependencyCheckDbPasswordVariable = dependencyCheckDbPasswordVariable ?? "DEPENDENCYCHECK_DB_PASSWORD";
75+
DependencyCheckDbUserVariable = dependencyCheckDbUserVariable ?? "DEPENDENCYCHECK_DB_USER";
76+
DependencyCheckNvdApiKeyVariable = dependencyCheckNvdApiKeyVariable ?? "DEPENDENCYCHECK_NVD_API_KEY";
6277
DiscordWebHookUrlVariable = discordWebHookUrlVariable ?? "DISCORD_WEBHOOKURL";
6378
DiscordUserNameVariable = discordUserNameVariable ?? "DISCORD_USERNAME";
6479
DiscordAvatarUrlVariable = discordAvatarUrlVariable ?? "DISCORD_AVATARURL";

Chocolatey.Cake.Recipe/Content/gitreleasemanager.cake

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright © 2022 Chocolatey Software, Inc
1+
// Copyright © 2025 Chocolatey Software, Inc
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.
@@ -25,11 +25,11 @@ BuildParameters.Tasks.CreateReleaseNotesTask = Task("Create-Release-Notes")
2525
{
2626
Milestone = BuildParameters.Version.Milestone,
2727
Name = BuildParameters.Version.Milestone,
28-
TargetCommitish = BuildParameters.MasterBranchName,
28+
TargetCommitish = Context.Argument("target-branch", BuildParameters.MasterBranchName),
2929
Prerelease = Context.HasArgument("create-pre-release")
3030
};
3131

32-
if (settings.Prerelease)
32+
if (!Context.HasArgument("target-branch") && (settings.Prerelease || BuildParameters.BranchType == BranchType.Support))
3333
{
3434
settings.TargetCommitish = BuildParameters.BuildProvider.Repository.Branch;
3535
}
@@ -83,10 +83,13 @@ BuildParameters.Tasks.ExportReleaseNotesTask = Task("Export-Release-Notes")
8383
})
8484
);
8585

86-
BuildParameters.Tasks.PublishGitHubReleaseTask = Task("Publish-GitHub-Release")
87-
.WithCriteria(() => BuildParameters.BranchType == BranchType.Master || BuildParameters.BranchType == BranchType.Release || BuildParameters.BranchType == BranchType.HotFix, "Skipping because this is not a releasable branch")
86+
BuildParameters.Tasks.PublishReleaseNotesTask = Task("Publish-Release-Notes")
87+
.WithCriteria(() => BuildParameters.BranchType == BranchType.Master || BuildParameters.BranchType == BranchType.Release || BuildParameters.BranchType == BranchType.HotFix || BuildParameters.BranchType == BranchType.Support, "Skipping because this is not a releasable branch")
8888
.WithCriteria(() => BuildParameters.IsTagged, "Skipping because this is not a tagged build")
8989
.Does(() => RequireTool(BuildParameters.IsDotNetBuild || BuildParameters.PreferDotNetGlobalToolUsage ? ToolSettings.GitReleaseManagerGlobalTool : ToolSettings.GitReleaseManagerTool, () => {
90+
var tagName = BuildParameters.Version.Milestone;
91+
Information("Using Tag Name '{0}' for publishing.", tagName);
92+
9093
if (BuildParameters.CanRunGitReleaseManager)
9194
{
9295
// If we are running on GitLab, then we need to actually publish the Release,
@@ -99,7 +102,7 @@ BuildParameters.Tasks.PublishGitHubReleaseTask = Task("Publish-GitHub-Release")
99102
ArgumentCustomization = args => args.Append("--provider GitLab")
100103
};
101104

102-
GitReleaseManagerPublish(BuildParameters.GitReleaseManager.Token, BuildParameters.RepositoryOwner, BuildParameters.RepositoryName, BuildParameters.Version.Milestone, publishSettings);
105+
GitReleaseManagerPublish(BuildParameters.GitReleaseManager.Token, BuildParameters.RepositoryOwner, BuildParameters.RepositoryName, tagName, publishSettings);
103106
}
104107

105108
// Next up, we close the milestone, which based on configuration, may add comments
@@ -111,11 +114,11 @@ BuildParameters.Tasks.PublishGitHubReleaseTask = Task("Publish-GitHub-Release")
111114
closeSettings.ArgumentCustomization = args => args.Append("--provider GitLab");
112115
}
113116

114-
GitReleaseManagerClose(BuildParameters.GitReleaseManager.Token, BuildParameters.RepositoryOwner, BuildParameters.RepositoryName, BuildParameters.Version.Milestone, closeSettings);
117+
GitReleaseManagerClose(BuildParameters.GitReleaseManager.Token, BuildParameters.RepositoryOwner, BuildParameters.RepositoryName, tagName, closeSettings);
115118
}
116119
else
117120
{
118121
Warning("Unable to use GitReleaseManager, as necessary credentials are not available");
119122
}
120123
})
121-
);
124+
);

Chocolatey.Cake.Recipe/Content/gitversion.cake

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -131,19 +131,21 @@ public class BuildVersion
131131

132132
prerelease = assertedVersions.PreReleaseLabel;
133133

134-
// Having a pre-release label of greater than 10 characters can cause problems when trying to run choco pack.
135-
// Since we typically only see this when building a local feature branch, or a PR, let's just trim it down to
136-
// the 10 character limit, and move on.
137-
if (prerelease.Length > 10)
138-
{
139-
prerelease = prerelease.Replace("-", string.Empty).Substring(0, 10);
140-
}
134+
prerelease = prerelease.Replace("-", string.Empty);
141135

142136
// Chocolatey doesn't support a prerelease that starts with a digit.
143137
// If we see a digit here, merely replace it with an `a` to get around this.
144138
if (System.Text.RegularExpressions.Regex.Match(prerelease, @"^\d.*$").Success)
145139
{
146-
prerelease = string.Format("a{0}", prerelease.Substring(1,9));
140+
prerelease = string.Format("a{0}", prerelease);
141+
}
142+
143+
// Having a pre-release label of greater than 10 characters can cause problems when trying to run choco pack.
144+
// Since we typically only see this when building a local feature branch, or a PR, let's just trim it down to
145+
// the 10 character limit, and move on.
146+
if (prerelease.Length > 10)
147+
{
148+
prerelease = prerelease.Substring(0, 10);
147149
}
148150

149151
sha = assertedVersions.Sha.Substring(0,8);

Chocolatey.Cake.Recipe/Content/ilmerge.cake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
// limitations under the License.
1515

1616
BuildParameters.Tasks.ILMergeTask = Task("Run-ILMerge")
17+
.IsDependentOn("Build")
18+
.IsDependentOn("Test")
1719
.IsDependeeOf("Copy-Nuspec-Folders")
1820
.WithCriteria(() => BuildParameters.ShouldRunILMerge, "Skipping because ILMerge is not enabled")
1921
.WithCriteria(() => BuildParameters.BuildAgentOperatingSystem == PlatformFamily.Windows, "Skipping because not running on Windows")
@@ -82,4 +84,4 @@ public class ILMergeConfig
8284
PrimaryAssemblyName = primaryAssemblyName;
8385
AssemblyPaths = assemblyPaths;
8486
}
85-
}
87+
}

0 commit comments

Comments
 (0)