Thanks for taking the time to contribute!
The following is a set of guidelines for contributing to RIG and its packages, which are hosted in the Accenture Organization on GitHub. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
- Use issues for everything.
- For a small change, just send a PR.
- For bigger changes open an issue for discussion before sending a PR.
- PR should have:
- Test case
- Documentation (e.g., moduledoc, developer's guide, operator's guide)
- Changelog entry
- You can also contribute by:
- Reporting issues
- Suggesting new features or enhancements
- Improve/fix documentation
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to Kevin Bader, who is the current project maintainer.
We have a mailing list where the community chimes in with helpful advice if you have questions.
Since this is a standard mix project, typical mix commands work as expected:
- Generate documentation with
mix docs
. - Run unit tests with
mix test
and see the test coverage withMIX_ENV=test mix coveralls.html --umbrella
, which creates a report atdoc/excoveralls.html
.
For static analysis, we use credo:
- Run the linter with
mix credo --strict
.
There is a smoke-test test-suite that can be started with a mix task as well:
- Run smoke tests with
mix smoke_test
.- Alternatively, you can run the tests directly with
docker-compose -f smoke_tests.docker-compose.yml up -d --build
. - To see smoke tests logs run
docker logs -f rig
. - To re-run smoke tests without re-creating entire environment run
docker-compose -f smoke_tests.docker-compose.yml up --no-deps --build rig
.
- Alternatively, you can run the tests directly with
We follow the standard GitHub workflow. Before submitting a PR:
- Please write tests.
- Make sure you run all tests and check the linter (credo) for warnings.
- Think about whether it makes sense to document the change in some way. For smaller, internal changes, inline documentation might be sufficient (moduledoc), while more visible ones might warrant a change to the developer's guide, the operator's guide or the README.
- Update
CHANGELOG.md
file with your current change in form of[Type of change e.g. Config, Kafka, .etc] Short description what it is all about - [#NUMBER](link to issue or pull request)
, and choose a suitable section (i.e., changed, added, fixed, removed, deprecated).
When we make a significant decision in how to write code, or how to maintain the project and what we can or cannot support, we will document it using Architecture Decision Records (ADR). Take a look at the doc/architecture/decisions directory for existings ADRs. If you have a question around how we do things, check to see if it is documented there. If it is not documented there, please ask us - chances are you're not the only one wondering. Of course, also feel free to challenge the decisions by starting a discussion on the mailing list.