public void ReleaseNotesGenerator_CreatesAFileContaingReleaseNotes() { var generator = new ReleaseNotesGenerator(new BasicOctopusToTeamcityMappingStrategy(), new OctopusDeployService(new OctopusDeploySettings()), new OctopusDeploySettings(), new BasicBuildIdToTagNameStratergy(), new GitHubService(new GitSettings()), new JiraService(new JiraSettings())); var releaseNotesFilePath = generator.CreateReleaseNotes("3dd8fb2"); Assert.IsTrue(File.Exists(releaseNotesFilePath)); }
public void KeepsCustomisations() { IRepository repo; IIssueTracker issueTracker; new TestDataCreator(new DateTimeOffset(2012, 1, 1, 0, 0, 0, new TimeSpan())) .CreateRelease("0.1.0", "Issue1", "Issue2") .CreateRelease("0.2.0", "Issue3") .Build(out repo, out issueTracker); var tagToStartFrom = GitRepositoryInfoFinder.GetFirstCommit(repo); var currentReleaseInfo = GitRepositoryInfoFinder.GetCurrentReleaseInfo(repo); var previousReleaseNotes = SemanticReleaseNotes.Parse(@"# vNext Commits: ... # 0.2.0 (05 January 2012) **Note this release does some stuff!** - [2] - Edited Issue3 Another comment Commits: AC39885536...CA74E870F2 # 0.1.0 (03 January 2012) ## Features - [0] - Edited Issue1 - [1] - Edited Issue2 - [2] - Edited Issue3 ## Fixes - [3] - Edited Issue4 - [4] - Edited Issue5 This is a comment about the release Which spans multiple lines Commits: E413A880DB...F6924D7A0B"); var releaseNotes = ReleaseNotesGenerator.GenerateReleaseNotes( repo, issueTracker, previousReleaseNotes, new Categories(), tagToStartFrom, currentReleaseInfo, "url/{0}...{1}"); Approvals.Verify(releaseNotes.ToString(), Scrubber); }
internal override void ExecuteInternal(IBuildConfiguration config) { if (!EnvironmentAnalyzer.IsInGitRepo(config.ProjectDirectory)) { Log.LogMessage($"The project {config.ProjectName} is not inside of an initialized git repository"); return; } IGenerator generator = new ReleaseNotesGenerator(config, OutputPath); generator.Execute(); }
public override bool Execute() { var fromDate = DateTime.Now.AddDays(DateLookback > 0 ? DateLookback * -1 : DateLookback); var generator = new ReleaseNotesGenerator() { CharacterLimit = CharacterLimit, FromDate = fromDate, Log = (BuildHostLoggingHelper)Log, MaxCommit = MaxCommit, OutputDirectory = OutputDirectory }; generator.Execute(); return(true); }
static void Main(string[] args) { var argumentProcessor = new ArgumentProcessor(args); var contentPackageGenerator = new Business.ContentPackageGenerator( new OctopusDeployService(new OctopusDeploySettings()), new OctopusDeploySettings(), new DropBoxService(new DropBoxSettings())); var artifactDetails = contentPackageGenerator.CreatePackage(argumentProcessor.SerializationFolder, argumentProcessor.CurrentBuildId, argumentProcessor.ExtractPath); var releaseNotesGenereator = new ReleaseNotesGenerator(new BasicOctopusToTeamcityMappingStrategy(), new OctopusDeployService(new OctopusDeploySettings()), new OctopusDeploySettings(), new BasicBuildIdToTagNameStratergy(), new GitHubService(new GitSettings()), new JiraService(new JiraSettings())); var releaseNotesFilePath = releaseNotesGenereator.CreateReleaseNotes(argumentProcessor.CurrentCommitId); artifactDetails.ReleaseNotesFilePath = releaseNotesFilePath; ArtifactMover.Move(artifactDetails, argumentProcessor.PackageDestinationFolder); }
public void AllTagsWithNoCommitsOrIssuesAfterLastRelease() { IRepository repo; IIssueTracker issueTracker; new TestDataCreator(new DateTimeOffset(2012, 1, 1, 0, 0, 0, new TimeSpan())) .CreateRelease("0.1.0", "Issue1", "Issue2") .CreateRelease("0.2.0", "Issue3") .Build(out repo, out issueTracker); var tagToStartFrom = GitRepositoryInfoFinder.GetFirstCommit(repo); var currentReleaseInfo = GitRepositoryInfoFinder.GetCurrentReleaseInfo(repo); var releaseNotes = ReleaseNotesGenerator.GenerateReleaseNotes( repo, issueTracker, new SemanticReleaseNotes(), new Categories(), tagToStartFrom, currentReleaseInfo, issueTracker.DiffUrlFormat); Approvals.Verify(releaseNotes.ToString(), Scrubber); }
public void AllTags() { IRepository repo; IIssueTracker issueTracker; new TestDataCreator(new DateTimeOffset(2012, 1, 1, 0, 0, 0, new TimeSpan())) .CreateRelease("0.1.0", "Issue1", "Issue2") .CreateRelease("0.2.0", "Issue3") .AddIssues("Issue4") .Build(out repo, out issueTracker); var tagToStartFrom = GitRepositoryInfoFinder.GetFirstCommit(repo); var currentReleaseInfo = GitRepositoryInfoFinder.GetCurrentReleaseInfo(repo); var releaseNotes = ReleaseNotesGenerator.GenerateReleaseNotes( repo, issueTracker, new SemanticReleaseNotes(), new string[0], tagToStartFrom, currentReleaseInfo, string.Empty); Approvals.Verify(releaseNotes.ToString()); }
public void AppendOnlyNewItems() { IRepository repo; IIssueTracker issueTracker; new TestDataCreator(new DateTimeOffset(2012, 1, 1, 0, 0, 0, new TimeSpan())) .CreateRelease("0.1.0", "Issue1", "Issue2") .CreateRelease("0.2.0", "Issue3") .AddIssues("Issue4") .Build(out repo, out issueTracker); var tagToStartFrom = GitRepositoryInfoFinder.GetFirstCommit(repo); var currentReleaseInfo = GitRepositoryInfoFinder.GetCurrentReleaseInfo(repo); var previousReleaseNotes = SemanticReleaseNotes.Parse(@"# vNext Commits: ... # 0.2.0 (05 January 2012) - [2] - Edited Issue3 Commits: AC39885536...CA74E870F2 # 0.1.0 (03 January 2012) - [0] - Edited Issue1 - [1] - Edited Issue2 Commits: E413A880DB...F6924D7A0B"); var releaseNotes = ReleaseNotesGenerator.GenerateReleaseNotes( repo, issueTracker, previousReleaseNotes, new Categories(), tagToStartFrom, currentReleaseInfo, string.Empty); Approvals.Verify(releaseNotes.ToString(), Scrubber); }
public void ReleaseNotesGenerator_CreatesAFileContaingReleaseNotes() { var generator = new ReleaseNotesGenerator(new BasicOctopusToTeamcityMappingStrategy(), new OctopusDeployService(new OctopusDeploySettings()), new OctopusDeploySettings(), new BasicBuildIdToTagNameStratergy(), new GitHubService(new GitSettings()), new JiraService(new JiraSettings()) ); var releaseNotesFilePath = generator.CreateReleaseNotes("3dd8fb2"); Assert.IsTrue(File.Exists(releaseNotesFilePath)); }
internal override void ExecuteInternal(IBuildConfiguration config) { IGenerator generator = new ReleaseNotesGenerator(config); generator.Execute(); }
// output a class library instead /* * static void Main(string[] args) * { * programStart(args); * }*/ public static void programStart(string[] args) { // silent mode is true by default - // it's faster and quieter. bool silent = true; #if DEBUG silent = false; #endif // program header printProgramHeader(); // create logger Logger logger = new Logger() .SetLoggingType(Logger.Type.Message); // try to generate the notes try { // arguments if (args.Length == 0) { throw new Exception("Settings.json file path argument missing."); } // create release notes generator ReleaseNotesGenerator generator = null; // set vars from args var configuration = (SaveFile.CreateSaveFileFromPath(args[0])).GetInternalObject(); string generatorType = configuration.GetValue("Generator Type").ToString(); var settings = new NamedLookup("Settings"); settings["Team Project Path"] = configuration.GetValue("Team Project Path").ToString(); settings["Project Name"] = configuration.GetValue("Project Name").ToString(); settings["Project Subpath"] = configuration.GetValue("Project Subpath").ToString(); settings["Iteration"] = configuration.GetValue("Iteration").ToString(); settings["Database"] = configuration.GetValue("Database").ToString(); settings["Database Server"] = configuration.GetValue("Database Server").ToString(); settings["Web Server"] = configuration.GetValue("Web Server").ToString(); settings["Doc Type"] = "APPLICATION BUILD/RELEASE NOTES\n"; settings["Web Location"] = configuration.GetValue("Web Location").ToString(); switch (generatorType.ToLowerInvariant()) { case "excel": generator = ExcelGenerator.ExcelGeneratorFactory(settings, silent); break; case "server": generator = ExcelServerGenerator.ExcelServerGeneratorFactory(settings, silent); break; case "word": generator = WordGenerator.WordGeneratorFactory(settings, silent); break; case "html": throw new NotImplementedException("Not implemented generator type"); default: throw new Exception("Invalid generator type specified"); } // generate generator.GenerateReleaseNotes(); } catch (Exception e) { // display error logger .SetLoggingType(Logger.Type.Error) .SetMessage(e.Message) .Display(); Thread.Sleep(1000); } if (!silent) //if we're in silent mode, the program exits. The file has been saved. { // wait for exit logger.SetLoggingType(Logger.Type.General) .SetMessage("Press any key to exit.") .Display(); // wait for key Console.ReadKey(); } }