|
| 1 | +# Contributing Guidelines |
| 2 | + |
| 3 | +The following is a set of guidelines for contributing to the NGINX Ansible role. We really appreciate that you are considering contributing! |
| 4 | + |
| 5 | +#### Table Of Contents |
| 6 | + |
| 7 | +[Ask a Question](#ask-a-question) |
| 8 | + |
| 9 | +[Getting Started](#getting-started) |
| 10 | + |
| 11 | +[Contributing](#contributing) |
| 12 | + |
| 13 | +[Code Guidelines](#code-guidelines) |
| 14 | +* [Git Guidelines](#git-guidelines) |
| 15 | +* [Ansible Guidelines](#ansible-guidelines) |
| 16 | + |
| 17 | +[Code of Conduct](https://github.com/nginxinc/ansible-role-nginx/blob/master/CODE_OF_CONDUCT.md) |
| 18 | + |
| 19 | +## Ask a Question |
| 20 | + |
| 21 | +Please open an Issue on GitHub with the label `question`. |
| 22 | + |
| 23 | +## Getting Started |
| 24 | + |
| 25 | +Follow our [Installation Guide](https://github.com/nginxinc/ansible-role-nginx/blob/master/README.md#Installation) to install Ansible and Molecule and get ready to use the NGINX Ansible role. |
| 26 | + |
| 27 | +### Project Structure |
| 28 | + |
| 29 | +* The NGINX Ansible role is written in `yaml` and supports open source NGINX, NGINX Plus, NGINX Amplify, NGINX Controller, and NGINX Unit. |
| 30 | +* The project follows the standard [Ansible role directory structure](https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html) |
| 31 | + * The main code is found at `tasks/` |
| 32 | + * The main variables can be found at `defaults/main/` |
| 33 | + * Configuration templates for NGINX can be found at `templates/` |
| 34 | + * [Molecule](https://molecule.readthedocs.io/) tests can be found in `molecule/`. |
| 35 | + * CI/CD is done via Travis using `.travis.yml` Deployment yaml files, and Helm files are found at `deployments/` |
| 36 | + |
| 37 | +## Contributing |
| 38 | + |
| 39 | +### Report a Bug |
| 40 | + |
| 41 | +To report a bug, open an issue on GitHub with the label `bug` using the available bug report issue template. Please ensure the issue has not already been reported. |
| 42 | + |
| 43 | +### Suggest an Enhancement |
| 44 | + |
| 45 | +To suggest an enhancement, please create an issue on GitHub with the label `enhancement` using the available feature issue template. |
| 46 | + |
| 47 | +### Open a Pull Request |
| 48 | + |
| 49 | +* Fork the repo, create a branch, submit a PR when your changes are tested and ready for review |
| 50 | +* Fill in [our pull request template](https://github.com/nginxinc/ansible-role-nginx/blob/master/.github/PULL_REQUEST_TEMPLATE.md) |
| 51 | + |
| 52 | +Note: if you’d like to implement a new feature, please consider creating a feature request issue first to start a discussion about the feature. |
| 53 | + |
| 54 | +## Code Guidelines |
| 55 | + |
| 56 | +### Git Guidelines |
| 57 | + |
| 58 | +* Keep a clean, concise and meaningful git commit history on your branch (within reason), rebasing locally and squashing before submitting a PR |
| 59 | +* Follow the guidelines of writing a good commit message as described here <https://chris.beams.io/posts/git-commit/> and summarised in the next few points |
| 60 | + * In the subject line, use the present tense ("Add feature" not "Added feature") |
| 61 | + * In the subject line, use the imperative mood ("Move cursor to..." not "Moves cursor to...") |
| 62 | + * Limit the subject line to 72 characters or less |
| 63 | + * Reference issues and pull requests liberally after the subject line |
| 64 | + * Add more detailed description in the body of the git message (`git commit -a` to give you more space and time in your text editor to write a good message instead of `git commit -am`) |
| 65 | + |
| 66 | +### Ansible Guidelines |
| 67 | + |
| 68 | +* Run `molecule lint` over your code to automatically resolve a lot of `yaml` and Ansible style issues. |
| 69 | +* Run `molecule test --all` on your code to catch any other issues. |
| 70 | +* Follow these guides on some good practices for Ansible: |
| 71 | + * <https://www.ansible.com/blog/ansible-best-practices-essentials> |
| 72 | + * <https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html> |
0 commit comments