Skip to content

Commit ceb48c2

Browse files
committed
Linting (wrap to 80 char columns)
1 parent 3dabd07 commit ceb48c2

File tree

1 file changed

+132
-52
lines changed

1 file changed

+132
-52
lines changed

docs/index.md

Lines changed: 132 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -45,47 +45,77 @@ You will have someone by your side in this process. The general flow is to…
4545
* At that point you can transfer your own repository.
4646
* If migrating a module from puppetlabs, re-enable github issues.
4747
* Verify that all webhooks except travis are disabled.
48-
* Update the README.md with a description of the deprecation and a link to the new module location.
48+
* Update the README.md with a description of the deprecation and a link to the
49+
new module location.
4950
* Release a copy of your module to the 'puppet' forge account.
50-
* Add the module to our [modulesync setup](https://github.com/voxpupuli/modulesync_config/blob/master/managed_modules.yml).
51-
* Add the module to our [plumbing repository](https://github.com/voxpupuli/plumbing/blob/master/share/modules)(handles travis secrets).
52-
* Ask an admin to add the `collaborators` team to the module's `Collaborators & Teams` 'Teams' list with `Write` permissions (e.g. https://github.com/voxpupuli/puppet-gitlab/settings/collaboration).
51+
* Add the module to our [modulesync
52+
setup](https://github.com/voxpupuli/modulesync_config/blob/master/managed_modules.yml).
53+
* Add the module to our [plumbing
54+
repository](https://github.com/voxpupuli/plumbing/blob/master/share/modules)(handles
55+
travis secrets).
56+
* Ask an admin to add the `collaborators` team to the module's `Collaborators &
57+
Teams` 'Teams' list with `Write` permissions (e.g.
58+
https://github.com/voxpupuli/puppet-gitlab/settings/collaboration).
5359
* Execute modulesync for this module.
54-
* Create a Jira issue at https://tickets.puppetlabs.com and ask to deprecate the old module (and approve the new one if the old one was approved as well).
55-
56-
If you have many modules you wish to migrate, this will be cumbersome.
57-
In this case we will generally create a separate group and give you
58-
administrator access to speed things up.
59-
60-
If you are interested in Vox Pupuli accepting a module *that you do not own*, the process has a few extra steps before beginning the checklist above.
61-
We do ask that you show that reasonable efforts have been made to engage the owner and they are unresponsive.
62-
If the owner has responded and is not interested in migrating their module to VP, it will be evaluated on a case by case basis.
63-
To start the process, document your request and efforts in a brief email to the [mailing list](https://groups.io/g/voxpupuli/).
64-
If the module is accepted, VP will work with you to determine the proper fork/migration steps needed in addition to the checklist above.
60+
* Create a Jira issue at https://tickets.puppetlabs.com and ask to deprecate the
61+
old module (and approve the new one if the old one was approved as well).
62+
63+
If you have many modules you wish to migrate, this will be cumbersome. In this
64+
case we will generally create a separate group and give you administrator access
65+
to speed things up.
66+
67+
If you are interested in Vox Pupuli accepting a module *that you do not own*,
68+
the process has a few extra steps before beginning the checklist above. We do
69+
ask that you show that reasonable efforts have been made to engage the owner and
70+
they are unresponsive. If the owner has responded and is not interested in
71+
migrating their module to VP, it will be evaluated on a case by case basis. To
72+
start the process, document your request and efforts in a brief email to the
73+
[mailing list](https://groups.io/g/voxpupuli/). If the module is accepted, VP
74+
will work with you to determine the proper fork/migration steps needed in
75+
addition to the checklist above.
6576

6677
## Publishing a module - setup
6778
Forge publishing is handled by travis and puppet-blacksmith.
6879

69-
To guarantee a frictionless process across all modules, we use [modulesync](https://github.com/voxpupuli/modulesync). Our modulesync configuration is available at [modulesync_config](https://github.com/voxpupuli/modulesync_config).
80+
To guarantee a frictionless process across all modules, we use
81+
[modulesync](https://github.com/voxpupuli/modulesync). Our modulesync
82+
configuration is available at
83+
[modulesync_config](https://github.com/voxpupuli/modulesync_config).
7084

71-
Most modulesync'ed settings can be overridden through a [.sync.yml](https://github.com/voxpupuli/puppet-extlib/blob/master/.sync.yml). You may also need to (re)define your travis testing matrix with respect to puppet version. This prevents the deploy hook from running once for each version of puppet defined in your testing.
85+
Most modulesync'ed settings can be overridden through a
86+
[.sync.yml](https://github.com/voxpupuli/puppet-extlib/blob/master/.sync.yml).
87+
You may also need to (re)define your travis testing matrix with respect to
88+
puppet version. This prevents the deploy hook from running once for each version
89+
of puppet defined in your testing.
7290

73-
Travis needs to be aware of the rename, this can be done by pushing a single commit. Travis needs to be enabled for the new repository, you can do that [here](https://travis-ci.org/profile/voxpupuli).
91+
Travis needs to be aware of the rename, this can be done by pushing a single
92+
commit. Travis needs to be enabled for the new repository, you can do that
93+
[here](https://travis-ci.org/profile/voxpupuli).
7494

75-
The secure line is unique per repository and often the only line in .sync.yml. To get a secure line:
95+
The secure line is unique per repository and often the only line in .sync.yml.
96+
To get a secure line:
7697

77-
Ask an admin (or submit a PR) to add your module to the list [here](https://github.com/voxpupuli/plumbing/blob/master/share/modules). Then an admin will run the encrypt_travis.sh script and push a new version of [this](https://github.com/voxpupuli/plumbing/blob/master/share/travis_secrets) which you can then copy and paste your travis secure line from.
98+
Ask an admin (or submit a PR) to add your module to the list
99+
[here](https://github.com/voxpupuli/plumbing/blob/master/share/modules). Then an
100+
admin will run the encrypt_travis.sh script and push a new version of
101+
[this](https://github.com/voxpupuli/plumbing/blob/master/share/travis_secrets)
102+
which you can then copy and paste your travis secure line from.
78103

79-
Note that you need to mask your ``secure:`` line in .travis.yml from modulesync. [Here](https://github.com/voxpupuli/puppet-iis/blob/master/.sync.yml#L35) is an example of what that looks like.
104+
Note that you need to mask your ``secure:`` line in .travis.yml from modulesync.
105+
[Here](https://github.com/voxpupuli/puppet-iis/blob/master/.sync.yml#L35) is an
106+
example of what that looks like.
80107

81-
If the forge puppet password is changed, an admin can run encrypt_travis.sh and the modules can bring in the new password on their own schedule.
108+
If the forge puppet password is changed, an admin can run encrypt_travis.sh and
109+
the modules can bring in the new password on their own schedule.
82110

83111

84-
Gem publishing is handled similarly, except there is not a unified user. Each gem owner is responsible for their own .travis.yml
112+
Gem publishing is handled similarly, except there is not a unified user. Each
113+
gem owner is responsible for their own .travis.yml
85114

86115
## Releasing a new version of a module
87116

88-
*Please note that in order to perform a release you must be in the __Collaborators__ group on Github for the module in question.*
117+
*Please note that in order to perform a release you must be in the
118+
__Collaborators__ group on Github for the module in question.*
89119

90120
Run modulesync to ensure the dotfiles are up to date.
91121

@@ -138,45 +168,95 @@ Travis will then kick off a build against the new tag created and deploy that bu
138168

139169
There are a few things that can be checked if you review a pull request against one of our modules:
140170

141-
* Does the email address used in the commits match the github email address? (This will let github display the contributor's avatar next to the commit)
142-
* Is this a bugfix, modulesync, breaking change, enhancement, docs update? Label it with `bug`, `modulesync`, `backwards-incompatible`, `enhancement`, `docs`
171+
* Does the email address used in the commits match the github email address?
172+
(This will let github display the contributor's avatar next to the commit)
173+
* Is this a bugfix, modulesync, breaking change, enhancement, docs update? Label
174+
it with `bug`, `modulesync`, `backwards-incompatible`, `enhancement`, `docs`
143175
* Are updates to the README.md needed but missing? Label it with `needs-docs`
144176
* Has the file documented params or examples in the header? This needs to be updated as well
145177
* Are there merge conflicts? Add the `needs-rebase` label
146178
* Does it need additional tests? Add the `needs-tests` label
147179
* Does it have failing tests? Add the `tests-fail` label
148180
* Are new parameters introduced? They must have datatypes
149-
* Are facts used? They should only be accessed via `$facts[]` or [fact()](https://github.com/puppetlabs/puppetlabs-stdlib#fact) from stdlib, but not topscope variables
150-
* In the majority of cases, variables shouldn't be accessed via topscope: $::modulename::$param. Instead do: $modulename::$param
151-
* Are datatypes from stdlib used? Ensure that lowest supported stdlib version is 4.13.1. Check if a newer version introduced the used datatype
152-
* Are hiera yaml files added for data-in-modules? Ensure that the lowest supported Puppet version is 4.10.0 and that the data is compatible with [hiera 5](https://puppet.com/docs/puppet/5.3/hiera_migrate.html#use-cases-for-upgrading-to-hiera-5)
153-
* Are there new params with datatype Hash or Array? If possible, they should default to empty Hash/Array instead of undef. You can also enforce the datastructure like Array[String[1]]
154-
* Are there new params with datatype Boolean? The default value is a tricky decision which needs careful reviewing. Sometimes a True/False is the better approach, sometimes undef
155-
* Is this a bugfix? Write the Pull Request Title in a way that users can easily identify if they are impacted or not
156-
* Does a new param map to an option in a config file of a service? The Parameter should accept the possible values that the service allows. For example 'on' and 'off'. Don't accept a boolean that will be converted to 'on' or 'off'
157-
* Is a new template added? The preferred language is [epp](https://puppet.com/docs/puppet/latest/lang_template_epp.html), not [erb](https://puppet.com/docs/puppet/latest/lang_template_erb.html)
158-
* Is a new class added? It should have unit tests using [rpsec-puppet-facts](https://github.com/mcanevet/rspec-puppet-facts#rspec-puppet-facts) that at least verify that the new class compiles
159-
* Files should always terminate with a newline if possible, with an exception being file or template fragments like those used with concat. This is the [POSIX standard](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206), and some tools don't handle the lack of a terminating newline properly
160-
* If you can supply one or multiple values for an attribute it's common practice to enforce the datatype for one value and an array of that datatype. An example for string is `Variant[String[1],Array[String[1]]]`. This can be used in the Puppet code as `[$var].flatten()`
181+
* Are facts used? They should only be accessed via `$facts[]` or
182+
[fact()](https://github.com/puppetlabs/puppetlabs-stdlib#fact) from stdlib,
183+
but not topscope variables
184+
* In the majority of cases, variables shouldn't be accessed via topscope:
185+
$::modulename::$param. Instead do: $modulename::$param
186+
* Are datatypes from stdlib used? Ensure that lowest supported stdlib version is
187+
4.13.1. Check if a newer version introduced the used datatype
188+
* Are hiera yaml files added for data-in-modules? Ensure that the lowest
189+
supported Puppet version is 4.10.0 and that the data is compatible with [hiera
190+
5](https://puppet.com/docs/puppet/5.3/hiera_migrate.html#use-cases-for-upgrading-to-hiera-5)
191+
* Are there new params with datatype Hash or Array? If possible, they should
192+
default to empty Hash/Array instead of undef. You can also enforce the
193+
datastructure like Array[String[1]]
194+
* Are there new params with datatype Boolean? The default value is a tricky
195+
decision which needs careful reviewing. Sometimes a True/False is the better
196+
approach, sometimes undef
197+
* Is this a bugfix? Write the Pull Request Title in a way that users can easily
198+
identify if they are impacted or not
199+
* Does a new param map to an option in a config file of a service? The Parameter
200+
should accept the possible values that the service allows. For example 'on'
201+
and 'off'. Don't accept a boolean that will be converted to 'on' or 'off'
202+
* Is a new template added? The preferred language is
203+
[epp](https://puppet.com/docs/puppet/latest/lang_template_epp.html), not
204+
[erb](https://puppet.com/docs/puppet/latest/lang_template_erb.html)
205+
* Is a new class added? It should have unit tests using
206+
[rpsec-puppet-facts](https://github.com/mcanevet/rspec-puppet-facts#rspec-puppet-facts)
207+
that at least verify that the new class compiles
208+
* Files should always terminate with a newline if possible, with an exception
209+
being file or template fragments like those used with concat. This is the
210+
[POSIX
211+
standard](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206),
212+
and some tools don't handle the lack of a terminating newline properly
213+
* If you can supply one or multiple values for an attribute it's common practice
214+
to enforce the datatype for one value and an array of that datatype. An
215+
example for string is `Variant[String[1],Array[String[1]]]`. This can be used
216+
in the Puppet code as `[$var].flatten()`
161217
* The parameter section should always be aligned at the `=` char
162-
* Is a class considered private? Then it should contain [assert_private](https://github.com/puppetlabs/puppetlabs-stdlib#assert_private)
163-
* A module should have as few public interfaces as possible. It should be aimed for the init.pp being the only public class. This is not a rule but a general guideline. Depending on the module, it is not always possible or feasible to configure everything through a single class.
164-
* Is another module added as a dependency? Add it to the `.fixtures.yml` file as a git repository (as a `https://` link, not `ssh` or `git://`). Spec tests always run against master branches to detect breaking changes as early as possible. Acceptance tests use the last release (installed by [install_module_dependencies](https://github.com/puppetlabs/beaker-module_install_helper#install_module_dependencies) which parses it from the `metadata.json`)
165-
* Only hard dependencies must be added to the metadata.json. Don't add soft dependencies! More explanation is [in the official Puppet styleguide](https://puppet.com/docs/puppet/5.5/style_guide.html#dependencies)
166-
* Ensure that the version range of any dependency doesn't include an unreleased major version (do not allow version 6.X of a dependency if the current version is 5.X)
167-
* An increase of an upper version boundary (of a module or Puppet itself) is only an enhancement if code adjustments were needed. Don't add the `enhancement` label if the only change is within the `metadata.json`. Ensure that `.fixtures.yml` doesn't pin a specific version.
218+
* Is a class considered private? Then it should contain
219+
[assert_private](https://github.com/puppetlabs/puppetlabs-stdlib#assert_private)
220+
* A module should have as few public interfaces as possible. It should be aimed
221+
for the init.pp being the only public class. This is not a rule but a general
222+
guideline. Depending on the module, it is not always possible or feasible to
223+
configure everything through a single class.
224+
* Is another module added as a dependency? Add it to the `.fixtures.yml` file as
225+
a git repository (as a `https://` link, not `ssh` or `git://`). Spec tests
226+
always run against master branches to detect breaking changes as early as
227+
possible. Acceptance tests use the last release (installed by
228+
[install_module_dependencies](https://github.com/puppetlabs/beaker-module_install_helper#install_module_dependencies)
229+
which parses it from the `metadata.json`)
230+
* Only hard dependencies must be added to the metadata.json. Don't add soft
231+
dependencies! More explanation is [in the official Puppet
232+
styleguide](https://puppet.com/docs/puppet/5.5/style_guide.html#dependencies)
233+
* Ensure that the version range of any dependency doesn't include an unreleased
234+
major version (do not allow version 6.X of a dependency if the current version
235+
is 5.X)
236+
* An increase of an upper version boundary (of a module or Puppet itself) is
237+
only an enhancement if code adjustments were needed. Don't add the
238+
`enhancement` label if the only change is within the `metadata.json`. Ensure
239+
that `.fixtures.yml` doesn't pin a specific version.
168240

169241

170242
### Approving and Merging
171243

172-
* You can merge your own PR if it was approved by someone else and travis is green. Don't merge if either one of those conditions are not true
173-
* Modulesync PRs are an exception (a PR based on changes that the msync tool did, NOT PRs on [modulesync_config](https://github.com/voxpupuli/modulesync_config#modulesync-configs)). We agreed some time ago that it's ok to merge your own modulesync PR if travis is green, without separate approval. This is okay because changes to [modulesync_config](https://github.com/voxpupuli/modulesync_config#modulesync-configs) were reviewed and tested
174-
* It's okay to approve code regardless if travis is still running or not. The code won't be merged if travis fails after the PR got approved
244+
* You can merge your own PR if it was approved by someone else and travis is
245+
green. Don't merge if either one of those conditions are not true
246+
* Modulesync PRs are an exception (a PR based on changes that the msync tool
247+
did, NOT PRs on
248+
[modulesync_config](https://github.com/voxpupuli/modulesync_config#modulesync-configs)).
249+
We agreed some time ago that it's ok to merge your own modulesync PR if
250+
travis is green, without separate approval. This is okay because changes to
251+
[modulesync_config](https://github.com/voxpupuli/modulesync_config#modulesync-configs)
252+
were reviewed and tested
253+
* It's okay to approve code regardless if travis is still running or not. The
254+
code won't be merged if travis fails after the PR got approved
175255

176256
## Project management committee
177257

178-
We defined a [governance document](https://github.com/voxpupuli/plumbing/blob/master/share/governance.md#vox-pupuli-governance)
179-
some time ago. It defines several different groups and roles. One of them is
180-
the PMC. For 2019 [we
181-
elected](https://voxpupuli.org/blog/2018/12/19/election-results-2019/) 5
182-
people.
258+
We defined a [governance
259+
document](https://github.com/voxpupuli/plumbing/blob/master/share/governance.md#vox-pupuli-governance)
260+
some time ago. It defines several different groups and roles. One of them is the
261+
PMC. For 2019 [we
262+
elected](https://voxpupuli.org/blog/2018/12/19/election-results-2019/) 5 people.

0 commit comments

Comments
 (0)