Skip to content

Commit 4352740

Browse files
committed
Merge branch 'docs/GH-134' into develop
2 parents 9687126 + 6e6c5ac commit 4352740

26 files changed

+477
-233
lines changed

.markdownlint.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"MD026": false
3+
}

.vscode/settings.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"editor.rulers": [80],
3+
"cSpell.words": [
4+
"addasset",
5+
"buildartifacts",
6+
"choco",
7+
"gitreleasemanager",
8+
"nupkg",
9+
"psake",
10+
"releasenotes",
11+
"showconfig"
12+
]
13+
}

Source/GitReleaseManager/Configuration/Config.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public Config()
2121
FooterIncludesMilestone = false,
2222
MilestoneReplaceText = string.Empty,
2323
IncludeShaSection = false,
24-
ShaSectionHeading = "__SHA256 Hashes of the release artifacts__",
24+
ShaSectionHeading = "SHA256 Hashes of the release artifacts",
2525
ShaSectionLineFormat = "- `{1}\t{0}`"
2626
};
2727

Source/GitReleaseManager/Configuration/ConfigurationProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ private static void EnsureDefaultConfig(Config configuration)
8484
{
8585
if(configuration.Create.ShaSectionHeading == null)
8686
{
87-
configuration.Create.ShaSectionHeading = "__SHA256 Hashes of the release artifacts__";
87+
configuration.Create.ShaSectionHeading = "SHA256 Hashes of the release artifacts";
8888
}
8989

9090
if(configuration.Create.ShaSectionLineFormat == null)

docs/input/docs/advanced.md

Lines changed: 86 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -3,62 +3,106 @@ Order: 20
33
Title: Advanced Workflow
44
---
55

6-
# Advanced Workflow
7-
8-
In order to best understand the use case for GitReleaseManager let's take a look at an example workflow currently in use by the Chocolatey GUI project.
6+
In order to best understand the use case for GitReleaseManager let's take a look
7+
at an example workflow currently in use by the Chocolatey GUI project.
98

109
:::{.alert .alert-info}
11-
Chocolatey GUI uses a number of concepts, for example, GitFlow, psake build script engine, AppVeyor Continuous Integration, as well as using GitReleaseManager. In order to understand the usage of GitReleaseManager for this project, you sort of have to understand the entire process. As a result, this walk-through steps you through the entire end to end process, which as a result, means it is quite lengthy.
10+
Chocolatey GUI uses a number of concepts, for example, GitFlow, psake build
11+
script engine, AppVeyor Continuous Integration, as well as using
12+
GitReleaseManager. In order to understand the usage of GitReleaseManager for
13+
this project, you sort of have to understand the entire process. As a result,
14+
this walk-through steps you through the entire end to end process, which as a
15+
result, means it is quite lengthy.
1216
:::
1317

14-
# Chocolatey GUI
15-
[Chocolatey GUI](https://github.com/chocolatey/ChocolateyGUI) is an open source project, hosted on GitHub that makes use of GitReleaseManager to create and export it's release notes. Before we can get into how GitReleaseManager is used, we need to take a look at how Chocolatey GUI is setup.
16-
17-
## GitHub Setup
18-
* All Issues are tracked using the[ GitHub Issues List](https://github.com/chocolatey/ChocolateyGUI/issues)
19-
* Each Issue is assigned to a [project milestone](https://github.com/chocolatey/ChocolateyGUI/milestones)
20-
* Each Issue is appropriately tagged using one of the [pre-defined labels](https://github.com/chocolatey/ChocolateyGUI/labels)
18+
## Chocolatey GUI
2119

22-
## GitFlow
23-
* Chocolatey GUI uses the [GitFlow Branching Model](http://nvie.com/posts/a-successful-git-branching-model/)
24-
* [GitVersion](https://github.com/ParticularLabs/GitVersion) is used to determine the current version number, based on the current state of the repository, i.e. what branch is being worked on, and what tags have been assigned, and how many commits have been made to the repository
25-
26-
## Build Artifacts
27-
Every build of Chocolatey GUI generates a number of Build Artifacts, these include:
28-
* An MSI package for installing Chocolatey GUI
29-
* A Chocolatey package to ease the installation of Chocolatey GUI
20+
[Chocolatey GUI](https://github.com/chocolatey/ChocolateyGUI) is an open source
21+
project, hosted on GitHub that makes use of GitReleaseManager to create and
22+
export it's release notes. Before we can get into how GitReleaseManager is
23+
used, we need to take a look at how Chocolatey GUI is setup.
3024

31-
## Continuous Integration
25+
### GitHub Setup
3226

33-
* Chocolatey GUI uses [AppVeyor](http://www.appveyor.com/) as it's Continuous Integration Server.
34-
* Any time a **Pull Request** is created, an AppVeyor build is triggered, but no deployment of the build artifacts takes place
35-
* Any time a commit is made into the **develop **branch, an AppVeyor build is triggered, and the build artifacts are deployed to the [MyGet Develop Feed](https://www.myget.org/feed/Packages/ghrm_develop)
36-
* Any time a commit is made into the **master **branch, an AppVeyor build is triggered, and the build artifacts are deployed to the [MyGet Master Feed](https://www.myget.org/feed/Packages/ghrm_master)
37-
* Any time a **tag **is applied to the repository, an AppVeyor build is triggered, and the build artifacts are deployed to [Chocolatey.org](https://chocolatey.org/) for public consumption.
27+
* All Issues are tracked using the [GitHub Issues List](https://github.com/chocolatey/ChocolateyGUI/issues)
28+
* Each Issue is assigned to a [project milestone](https://github.com/chocolatey/ChocolateyGUI/milestones)
29+
* Each Issue is appropriately tagged using one of the [pre-defined labels](https://github.com/chocolatey/ChocolateyGUI/labels)
3830

39-
## Ok, so where does GitReleaseManager come into play?
31+
### GitFlow
4032

41-
The role of GitReleaseManager really comes into play when moving between a **release** or **hotfix** branch and the **master **branch.
33+
* Chocolatey GUI uses the [GitFlow Branching Model](http://nvie.com/posts/a-successful-git-branching-model/)
34+
* [GitVersion](https://github.com/ParticularLabs/GitVersion) is used to
35+
determine the current version number, based on the current state of the
36+
repository, i.e. what branch is being worked on, and what tags have been
37+
assigned, and how many commits have been made to the repository
4238

43-
Let's say you have done a bunch of work on the develop branch, you want to move all of that work into the master branch, via a release branch. When you do this, you are effectively saying that the milestone that you were working on is almost ready for release. It is at this point that you should really know, via the issues list, everything that is being included in the release, and now would seem like a great time to create some release notes. And this is exactly what the build process for Chocolatey GUI does. Let's break this down further...
39+
### Build Artifacts
4440

45-
* A **release **branch is created from **develop **branch
46-
* The release branch is merged into master branch, triggering a build (with deployment to MyGet Master Feed).
47-
* During this build, GitReleaseManager is executed, using the **create** command, and the version number which was provided by GitVersion, to create a set of release notes for this milestone - [source](https://github.com/chocolatey/ChocolateyGUI/blob/09b78495ebc9d334fedf351b021fd7e215c5cf87/BuildScripts/default.ps1#L687).
48-
* This set of release notes is created in draft format, ready for review, in the GitHub UI.
49-
* The build artifacts which have been deployed to MyGet Master Feed are tested
50-
* The release notes are reviewed, and ensured to be correct
51-
* Assuming that everything is verified to be correct, the draft release is then published through the GitHub UI, which creates a tag in the repository, triggering another AppVeyor build, this time with deployment to Chocolatey.org
52-
* During this build, GitReleaseManager is executed using the **export** command, so that all release notes can be bundled into the application - [source](https://github.com/chocolatey/ChocolateyGUI/blob/09b78495ebc9d334fedf351b021fd7e215c5cf87/BuildScripts/default.ps1#L707)
53-
* In addition, GitReleaseManager is executed using the **addasset** command to add the build artifacts to the GitHub release - [source](https://github.com/chocolatey/ChocolateyGUI/blob/09b78495ebc9d334fedf351b021fd7e215c5cf87/BuildScripts/default.ps1#L731)
54-
* And finally, GitReleaseManager is executed using the **close** command to close the milestone associated with the release that has just been published - [source](https://github.com/chocolatey/ChocolateyGUI/blob/09b78495ebc9d334fedf351b021fd7e215c5cf87/BuildScripts/default.ps1#L753)
55-
56-
The end result of this process can be seen [here](https://github.com/chocolatey/ChocolateyGUI/releases/tag/0.12.0). This release included 218 commits, and 75 issues. Personally, I simply wouldn't have created such a comprehensive set of release notes manually. Instead, I would have written something like...
41+
Every build of Chocolatey GUI generates a number of Build Artifacts, these include:
5742

58-
```
43+
* An MSI package for installing Chocolatey GUI
44+
* A Chocolatey package to ease the installation of Chocolatey GUI
45+
46+
### Continuous Integration
47+
48+
* Chocolatey GUI uses [AppVeyor](http://www.appveyor.com/) as it's Continuous Integration Server.
49+
* Any time a **Pull Request** is created, an AppVeyor build is triggered, but no
50+
deployment of the build artifacts takes place
51+
* Any time a commit is made into the **develop **branch, an AppVeyor build is
52+
triggered, and the build artifacts are deployed to the
53+
[MyGet Develop Feed](https://www.myget.org/feed/Packages/ghrm_develop)
54+
* Any time a commit is made into the **master **branch, an AppVeyor build is
55+
triggered, and the build artifacts are deployed to the
56+
[MyGet Master Feed](https://www.myget.org/feed/Packages/ghrm_master)
57+
* Any time a **tag **is applied to the repository, an AppVeyor build is
58+
triggered, and the build artifacts are deployed to
59+
[Chocolatey.org](https://chocolatey.org/) for public consumption.
60+
61+
### Ok, so where does GitReleaseManager come into play?
62+
63+
The role of GitReleaseManager really comes into play when moving between a
64+
**release** or **hotfix** branch and the **master **branch.
65+
66+
Let's say you have done a bunch of work on the develop branch, you want to move
67+
all of that work into the master branch, via a release branch. When you do
68+
this, you are effectively saying that the milestone that you were working on is
69+
almost ready for release. It is at this point that you should really know, via
70+
the issues list, everything that is being included in the release, and now would
71+
seem like a great time to create some release notes. And this is exactly what
72+
the build process for Chocolatey GUI does. Let's break this down further...
73+
74+
* A **release **branch is created from **develop **branch
75+
* The release branch is merged into master branch, triggering a build (with
76+
deployment to MyGet Master Feed).
77+
* During this build, GitReleaseManager is executed, using the **create**
78+
command, and the version number which was provided by GitVersion, to create a
79+
set of release notes for this milestone - [source](https://github.com/chocolatey/ChocolateyGUI/blob/09b78495ebc9d334fedf351b021fd7e215c5cf87/BuildScripts/default.ps1#L687).
80+
* This set of release notes is created in draft format, ready for review, in the
81+
GitHub UI.
82+
* The build artifacts which have been deployed to MyGet Master Feed are tested
83+
* The release notes are reviewed, and ensured to be correct
84+
* Assuming that everything is verified to be correct, the draft release is then
85+
published through the GitHub UI, which creates a tag in the repository,
86+
triggering another AppVeyor build, this time with deployment to Chocolatey.org
87+
* During this build, GitReleaseManager is executed using the **export** command,
88+
so that all release notes can be bundled into the application - [source](https://github.com/chocolatey/ChocolateyGUI/blob/09b78495ebc9d334fedf351b021fd7e215c5cf87/BuildScripts/default.ps1#L707)
89+
* In addition, GitReleaseManager is executed using the **addasset** command to
90+
add the build artifacts to the GitHub release - [source](https://github.com/chocolatey/ChocolateyGUI/blob/09b78495ebc9d334fedf351b021fd7e215c5cf87/BuildScripts/default.ps1#L731)
91+
* And finally, GitReleaseManager is executed using the **close** command to
92+
close the milestone associated with the release that has just been published - [source](https://github.com/chocolatey/ChocolateyGUI/blob/09b78495ebc9d334fedf351b021fd7e215c5cf87/BuildScripts/default.ps1#L753)
93+
94+
The end result of this process can be seen
95+
[here](https://github.com/chocolatey/ChocolateyGUI/releases/tag/0.12.0).
96+
This release included 218 commits, and 75 issues. Personally, I simply wouldn't
97+
have created such a comprehensive set of release notes manually. Instead, I
98+
would have written something like...
99+
100+
```text
59101
#0.12.0
60102
61103
This release included lots of bug fixes, and tonnes of new features. Enjoy!
62104
```
63105

64-
By leveraging GitVersion, and GitReleaseManager, and a small amount of process (which you are likely already doing), I hope you will agree that you can very easily create a comprehensive set of release notes for your application.
106+
By leveraging GitVersion, and GitReleaseManager, and a small amount of process
107+
(which you are likely already doing), I hope you will agree that you can very
108+
easily create a comprehensive set of release notes for your application.

docs/input/docs/commands/add-assets.md

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,30 @@ Order: 20
33
Title: Add Assets
44
---
55

6-
# Add Assets
7-
8-
Once a draft set of release notes has been created, it is possible to add additional assets to the release using the addasset command.
6+
Once a draft set of release notes has been created, it is possible to add
7+
additional assets to the release using the addasset command.
98

109
## **Required Parameters**
1110

12-
* `-u, --username`: The username to access GitHub with. This can't be used when using the token parameter.
13-
* `-p, --password`: The password to access GitHub with. This can't be used when using the token parameter.
14-
* `--token`: The access token to access GitHub with. This can't be used when using the username and password parameters.
11+
* `-u, --username`: The username to access GitHub with. This can't be used when
12+
using the token parameter.
13+
* `-p, --password`: The password to access GitHub with. This can't be used when
14+
using the token parameter.
15+
* `--token`: The access token to access GitHub with. This can't be used when
16+
using the username and password parameters.
1517
* `-o, --owner`: The owner of the repository.
1618
* `-r, --repository`: The name of the repository.
17-
* `-t, --tagName`: The name of the release (Typically this is the generated SemVer Version Number).
18-
* `-a, --assets`: Path(s) to the file(s) to include in the release. This is a comma separated list of files to include
19+
* `-t, --tagName`: The name of the release (Typically this is the generated
20+
SemVer Version Number).
21+
* `-a, --assets`: Path(s) to the file(s) to include in the release. This is a
22+
comma separated list of files to include
1923

2024
## **Optional Parameters**
2125

22-
* `-d, -targetDirectory`: The directory on which GitReleaseManager should be executed. Defaults to current directory.
23-
* `-l, -logFilePath`: Path to where log file should be created. Defaults to logging to console.
26+
* `-d, -targetDirectory`: The directory on which GitReleaseManager should be
27+
executed. Defaults to current directory.
28+
* `-l, -logFilePath`: Path to where log file should be created. Defaults to
29+
logging to console.
2430

2531
## **Notes**
2632

docs/input/docs/commands/close.md

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,28 @@ Order: 40
33
Title: Close
44
---
55

6-
# Close
7-
8-
Out of the box, publishing a release on GitHub does not close the milestone associated with the release. This command, when executed, closes the specified milestone.
6+
Out of the box, publishing a release on GitHub does not close the milestone
7+
associated with the release. This command, when executed, closes the specified
8+
milestone.
99

1010
## **Required Parameters**
1111

12-
* `-u, --username`: The username to access GitHub with. This can't be used when using the token parameter.
13-
* `-p, --password`: The password to access GitHub with. This can't be used when using the token parameter.
14-
* `--token`: The access token to access GitHub with. This can't be used when using the username and password parameters.
12+
* `-u, --username`: The username to access GitHub with. This can't be used when
13+
using the token parameter.
14+
* `-p, --password`: The password to access GitHub with. This can't be used when
15+
using the token parameter.
16+
* `--token`: The access token to access GitHub with. This can't be used when
17+
using the username and password parameters.
1518
* `-o, --owner`: The owner of the repository.
1619
* `-r, --repository`: The name of the repository.
1720
* `-m, --milestone`: The milestone to use.
1821

1922
## **Optional Parameters**
2023

21-
* `-d, --targetDirectory`: The directory on which GitReleaseManager should be executed. Defaults to current directory.
22-
* `-l, --logFilePath`: Path to where log file should be created. Defaults to logging to console.
24+
* `-d, --targetDirectory`: The directory on which GitReleaseManager should be
25+
executed. Defaults to current directory.
26+
* `-l, --logFilePath`: Path to where log file should be created. Defaults to
27+
logging to console.
2328

2429
## **Notes**
2530

0 commit comments

Comments
 (0)