homeserver/roles/hifis-net.unattended_upgrades/CONTRIBUTING.md
mg b5c16eaacd Rolle aktualisiert: unattended upgrades (#461)
Co-authored-by: Michael Grote <michael.grote@posteo.de>
Reviewed-on: #461
2023-02-17 12:17:12 +01:00

189 lines
8.2 KiB
Markdown

<!--
SPDX-FileCopyrightText: 2022 Helmholtz Centre for Environmental Research (UFZ)
SPDX-FileCopyrightText: 2022 Helmholtz-Zentrum Dresden-Rossendorf (HZDR)
SPDX-License-Identifier: Apache-2.0
-->
# Contributing
## Please Help to Improve this Project
You would like to contribute to this project and want to know how to do that?
Let me tell you first that you are awesome because you take care!
Let's make this Ansible role even better.
Any contributions and help to improve this project via issues, pull requests
and more are most welcome and much appreciated.
We are here to help you with your contributions at any time.
Please mention us in issues and pull requests if you need help or if you have
questions.
## Why Do We Need Contributors and Contributions
Coding is team-work and open-source software is community-work.
In order to enhance the project or correct bugs and regressions in the project
we need you and your support because the project benefits from your expertise,
knowledge, opinions, perspectives, and labour.
Together we are improving this Ansible role step-by-step.
Please follow these guidelines and be respectful as we respect your work and
your contributions in the same manner and support you and help you with your
contributions.
Feel free to get into contact with us or with other contributors as the
community will help you with your questions and contributions.
## Contributions We are Looking For
There are different ways to contribute to this project:
1. Discuss issues and pull requests
2. Submit bug reports or contribute new feature proposals
3. Contribute fixes or implement new features
4. Do testing
### Investigate Before Contributing
Before you start contributing and create issues and pull requests we ask you
to first check whether an issue or pull request already exists for the error,
enhancement, feature or test case you have in mind.
### Discuss Issues and Pull Requests
You can contribute by participating in discussions you find in issues and
pull requests or by starting your own discussions.
### Submit Bug Reports or Contribute New Feature Proposals
If you found a bug in the Ansible role or a typo in the documentation or
if you would like to discuss or suggest functional or quality aspects of the
role you are welcome to create issues to get in contact with us.
### Contribute Fixes or Implement New Features
If you would like to provide a fix for a bug or a typo in the documentation or
even add or change specific features of the role or specific parts of the
documentation, you are welcome to fork this repository, create a separate
branch, create a pull request and add your contributions.
Please also label the pull request, refer to related issues and assign
reviewers that take care of reviewing your suggested changes.
We would like you to check that the CI pipeline passes before asking reviewers
to review your suggestions.
### Do Testing
While automated tests are by far our preferred testing method we also
acknowledge contributors doing exploratory testing.
Sometimes the existing automated tests are not sufficient to account for
specific corner cases and to reveal hidden bugs.
Testing the role manually is always a good approach to make sure that the role
passes a particular additional test case.
Even more valuable are automated tests because they are repeatable.
That is why these test methods work best in combination.
Once a bug is revealed in an exploratory test, additional automated test-cases
need to be added that mark this behaviour as a defect.
As a consequence, a fix need to be developed that makes the CI pipeline and
the new regression tests pass again.
Please feel free to support the project by providing automated test cases.
In order to do so you need to fork the repository, create a separate branch,
create a pull request and add the test cases and fixes to that new branch.
Please also use labels for your pull request, name issues that you refer to
and assign reviewers who would be able to review your suggested test cases and
fixes.
Please make sure that the CI pipeline passes before you name reviewers for your
pull request.
### GitHub Actions CI Pipeline and Code Reviews
Finally, as soon as your changes are ready and you would like to ask someone
to review your contributions you need to check that all GitHub Actions CI
pipeline jobs pass in your pull request before assigning reviewers to your
pull request.
## Contributions Workflow via Pull Requests
In summary, if you would like to contribute with pull requests for
enhancements, bug-fixes or test cases, we kindly ask you to follow this
workflow:
![Workflow Blockdiagram with Kroki](https://kroki.hzdr.de/blockdiag/svg/eNqNU8tO5DAQvPMVrTmRwwrYF7tCcNkT30A4dJyejDXGDm0bNkL8-7YfM3I0WsEpUXd1uV1VHoxT-1HjBG9nAHokhAeDAxm4hc1VB4uLDJZec2vzeJNA9oV80BMGarBfO1A7UnvQW9DeR4KL3s7RGGB6jjLQWzRMOC5Af7UPvpBtHe8blm9dqTDNzuvgeCmwgdGqXQP8LscJm6yAtVmA9bAG-eOAXK9T4DiODfRnlwvpzr1VzgbWQwza2QIOa-LrDoy2AdCOudXbLFY711uRF41Z4NzNqYCmK1xKN0y_OnjCPYGPLFuGHQb4cw8zek_-cK0XTa_EzdDvsuyhc-4rs4_TlPxx1rdWXnZinHI8O85alLkWXcafiKfW1ysJQa6dylcDk6YmdnHOEQI4js7iIjKtFNncZIxjTTZgqgjSiIRe4Uyl2Qbsy10JhHxrBuSv7pDQ7_87_MSLz5ycBBX-8BG5uJNcLxr6zzCL33nxaqP8N8ofzso6H3VNoNVb2zoz0riKuUByhJtWqPWUsKbcxkK61eYj4Pj4lTOO0x2NnnZhMJHa8K-7E9OySs1Jm_LTeT_7B8Nka6c=)
For those of you who want to know how forked-based contributions work on
_GitHub_, we would like to point to the _GitHub Docs_ about
[contributing to projects](https://docs.github.com/en/get-started/quickstart/contributing-to-projects).
## Set Up a Local Development Environment (Optional)
In order to add contributions via pull requests you most probably need to
create a local development environment to make sure that your changes
work as expected.
After cloning the project locally the _Python_ dependencies need to be
installed:
```shell
$ pipenv install --dev
```
As mentioned in the suggested contribution workflow above, linting and testing
your contributions locally is optional, but we encourage you to do so.
The following sections show how to lint and test your contributions locally.
### Linting the Project
This role is linted via
[Ansible Lint](https://ansible-lint.readthedocs.io/en/latest/)
and
[yamllint](https://yamllint.readthedocs.io/en/stable/)
which guarantees that the role adheres to a set of
[Ansible Lint rules](https://ansible-lint.readthedocs.io/en/latest/default_rules/)
and
[yamllint rules](https://yamllint.readthedocs.io/en/stable/rules.html):
```shell
$ pipenv run molecule lint
```
### REUSE Specification Compliance
Each file in this project needs to have a proper license and copyright header.
Please check that each file you add to the project contains license and
copyright information and that it thereby meets the
[REUSE Specification](https://reuse.software/spec/):
```shell
$ pipenv run reuse lint
```
### Testing the Ansible Role
This role is tested via
[Ansible Molecule](https://molecule.readthedocs.io/en/latest/).
During development of your changes we would like you to use _Molecule_ and
the existing automated test cases to verify that your changes do not break
existing test cases:
```shell
$ pipenv run molecule test
````
## How are Contributors Given Credit for Their Valuable Work?
Please add yourself to the list of contributors in file
[README.md](README.md#contributors)
via a pull request if you made significant contributions to this role.
Significant contributions are done by suggesting pull requests that fix
bugs or add features or test cases to the project.
Since all other contributions are welcome and may be significant as well
you can request to be added as a contributor which is then decided on a
case-by-case basis.
## Ground Rules and Contributions We are Not Looking For
While we welcome and appreciate all contributions we want people to be kind,
respectful and mindful and won't support people who aren't.
Please help and support each other.
In order to get an idea what this actually means and involves we would like to
ask you to read the Codes of Conduct of
[The Carpentries](https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html#code-of-conduct-detailed-view),
the
[Ansible Community](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html#community-code-of-conduct),
and the
[GitLab Community](https://about.gitlab.com/community/contribute/code-of-conduct/).