cookbook 'hubrel', '~> 0.2.0'
hubrel (1) Versions 0.2.0 Follow1
hubrel library cookbook
cookbook 'hubrel', '~> 0.2.0', :supermarket
knife supermarket install hubrel
knife supermarket download hubrel
hubrel
Ruby gem and Chef cookbook for a highly-opinionated GitHub release workflow.
Philosophy
Versioning
We are following Semantic Versioning with the short git commit hash integrated in the build metadata.
If a version contains multiple releases, they shall be ordered by their short git commit hashes according to the master
branch.
Release
For every push to the master branch (usually after a pull request), a build will be executed. On every successful build of the master branch, a tag/release shall be created named version+commit
. This release will be marked as prerelease
in GitHub.
Once the developer is happy with a release, the prerelease
tag may be lifted. It is highly advised to make sure all releases have different versions, and not rely on different commit hashes.
Example
master
branch (ordered from latest, descending):
message | hash |
---|---|
Merge pull request #3 | 423hgj7 |
commit | vnsdh89 |
commit | asdflkj |
Merge pull request #4 | 345ja87 |
commit | asdf345 |
commit | jlkj987 |
We will take the example of building on every merge to master. For a given version number 1.3.2
, there will be two tags/releases, both tagged as prerelease
:
- 1.3.2+423hgj7
- 1.3.2+345ja87
In this case 1.3.2+423hgj7
will take precedence over 1.3.2+345ja87
since it is later in the master
branch.
Deployment
Latest prerelase
should always be deployed to staging.
Latest release
should always be deployed to production.
Implementation
The Ruby gem is used to push releases to GitHub, and the Chef cookbook is used to get the release URL from GitHub (the remote_file
resource should be then used for downloading).
The Ruby gem may also be used to purge old releases.
Dependent cookbooks
This cookbook has no specified dependencies.
Contingent cookbooks
There are no cookbooks that are contingent upon this one.
Collaborator Number Metric
0.2.0 failed this metric
Failure: Cookbook has 1 collaborators. A cookbook must have at least 2 collaborators to pass this metric.
Contributing File Metric
0.2.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
Foodcritic Metric
0.2.0 failed this metric
FC066: Ensure chef_version is set in metadata: hubrel/metadata.rb:1
FC067: Ensure at least one platform supported in metadata: hubrel/metadata.rb:1
FC069: Ensure standardized license defined in metadata: hubrel/metadata.rb:1
Run with Foodcritic Version 16.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any
No Binaries Metric
0.2.0 passed this metric
Testing File Metric
0.2.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
0.2.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
0.2.0 failed this metric
0.2.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
Foodcritic Metric
0.2.0 failed this metric
FC066: Ensure chef_version is set in metadata: hubrel/metadata.rb:1
FC067: Ensure at least one platform supported in metadata: hubrel/metadata.rb:1
FC069: Ensure standardized license defined in metadata: hubrel/metadata.rb:1
Run with Foodcritic Version 16.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any
No Binaries Metric
0.2.0 passed this metric
Testing File Metric
0.2.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
0.2.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
0.2.0 failed this metric
FC067: Ensure at least one platform supported in metadata: hubrel/metadata.rb:1
FC069: Ensure standardized license defined in metadata: hubrel/metadata.rb:1
Run with Foodcritic Version 16.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any
0.2.0 passed this metric
Testing File Metric
0.2.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
0.2.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
0.2.0 failed this metric
0.2.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number