Thank you for considering contributing to the HashiCorp Boundary and Vault Stack project! Your contributions are invaluable to the project's improvement. To ensure smooth collaboration, please follow the guidelines outlined below.
-
Fork the Repository: Begin by forking the repository to your GitHub account.
-
Clone the Repository: Clone your forked repository to your local machine:
git clone https://github.com/your-username/boundary-vault-stack.git cd boundary-vault-stack
-
Set Up Your Environment: Ensure you have the necessary dependencies installed as outlined in the documentation.
-
Review the Documentation: Familiarize yourself with the project by thoroughly reading the documentation and reviewing the automation workflow diagram.
If you encounter any bugs, errors, or have suggestions for improvements:
- Search Existing Issues: Before submitting a new issue, check if it has already been reported.
- Create a New Issue: If it’s a new issue, provide detailed information such as steps to reproduce, expected vs. actual results, and any relevant screenshots or logs.
- Link to Related Tasks: If your issue relates to any of the TODOs, reference the corresponding task.
Use Conventional Commits: The project follows semantic versioning to ensure proper releases. Start your commits with a prefix such as fix:
, feat:
, chore:
, or doc:
.
- Imperative Mood: Write commit messages as commands (e.g., "Add Vagrantfile for VM provisioning").
- Be Concise but Descriptive: Provide enough detail to understand the change.
- Commit Message Conventions: Use
doc:
for any changes related to documentation.
When submitting pull requests (PRs):
-
Create a Branch: Create a new branch for your feature or bug fix. Avoid working directly on the
main
branch.git checkout -b feature/your-feature-name
-
Make Atomic Commits: Ensure each commit is focused and addresses a single change, following the Commit Messages section.
-
Follow Best Practices: Ensure your code adheres to the project's best practices.
-
Test Your Changes: Run tests and ensure your changes do not break existing code.
-
Update Documentation: If your change requires documentation updates, include them in your PR. Use the
documentation
label and provide additional context in the PR description. -
Submit the PR: Push your branch to GitHub and open a pull request against the
main
branch. Link the PR to the corresponding issue(s).
- Use Meaningful Names: Choose descriptive names for variables and tasks.
- Keep Tasks Small and Focused: Each function should perform a single task.
- DRY (Don’t Repeat Yourself): Reuse code wherever possible.
- Comment Your Code: Add comments where the code is not self-explanatory.
- Adhere to Best Practices: Refer to the Guidelines for Specific Tasks for Terraform, Ansible, and Shell Scripting.
- State Management: Configure remote state management properly, especially when working with remote backends.
- Output Values: Make output values informative and useful.
- Avoid Unnecessary Loops: Minimize the use of
foreach
and loops for variables, and avoid hardcoding values.
- Role Organization: Keep roles modular and reusable.
- Handlers and Utilities: Use handlers and utilities for frequently repeated tasks.
- Logging: Implement consistent logging across all shell scripts. Use a custom logger function as outlined in the TODOs.
- Error Handling: Ensure scripts handle errors gracefully and provide informative messages.
- GitHub Actions: Contribute to the existing CI/CD pipeline by implementing automated testing, linting, and security scans for pull requests.
- Stay Updated: Regularly check for project updates and communicate with maintainers about significant contributions.
- Respectful Collaboration: Follow the code of conduct to maintain a respectful and inclusive environment.
By contributing to this project, you agree that your contributions will be licensed under the project's license.
Thank you for your interest in contributing to the HashiCorp Boundary and Vault Stack! We look forward to your contributions.