Contributing
Conveyor CI is an open-source project licenced under the Apache License 2.0. We welcome anyone who would be interested in contributing to urunc. As a first step, please take a look at the following document. The current document provides a high level overview of Conveyor CI's code structure, along with a few guidelines regarding contributions to the project.
Code Organisation
Conveyor CI is written in Go and it exposes an Application Programming Interface whose client libraries can be written in any language. We structure the codebase and other files as follows:
/
: The root directory contains the non-code files, such as the licence, readme and conveyor's entry pointmain.go
./documentation
: This directory contains a Docusaurous Site for all the documentation related to Conveyor CI./cmd/cli
: Contains the entrypoint for the command line and definitions for all CLI commands./cmd/api
: Contains the entrypoint for the API Server./internal/
: Contains majority of the Conveyor CI codebase./internal/config/
: This directory contains code responsible for loading and handling Conveyor CI configuration./internal/handlers
: Contains code ./internal/routes
: Contains code defining API Server routes./internal/models
: Contains code definingetcd
data models./internal/streaming
: Contains handling websocket streaming./internal/metrics
: Contains code for collecting metrics for the API Server./internal/utils
: This directory contains utility functions.
/pkg
: This contains the Publicaly available Conveyor CI SDK library/pkg/client
: Contains the Go API Client/pkg/driver-runtime/
: Contains Driver runtime and its utility finctions
/sdk
: This directory is meant to contain any Conveyor SDK implementations in other languages/helm
: This contains the Conveyor Helm Chart for deploying to Kubernetes.
How to contribute
There are plenty of ways to contribute to an open source project, even without changing or touching the code. Therefore, anyone who is interested in this project is very welcome to contribute in one of the following ways:
- Using Coveyor CI. Try it out yourself and let us know your experience. Did everything work well? Were the instructions clear?
- Improve or suggest changes to the documentation of the project. Documentation is very important for every project, hence any ideas on how to improve the documentation to make it more clear are more than welcome.
- Request new features. Any proposals for improving or adding new features are very welcome.
- Find a bug and report it. Bugs are everywhere and some are hidden very well. As a result, we would really appreciate it if someone found a bug and reported it to the maintainers.
- Make changes to the code. Improve the code, add new functionalities and make urunc even more useful.
Opening an issue
We use Github issues to track bugs and requests for new features. Anyone is welcome to open a new issue, which is either related to a bug or a request for a new feature.
Reporting Bugs
If you find a bug, you can help fix it by submiting and issue to the appropriate repository. within your issue Include:
- A clear and descriptive title
- Steps to reproduce the issue
- What you expected to happen
- What actually happened
- If the repository has an issue tempate. you should follow it.
Before submitting, check if the issue already exists in the repository issue list.
Suggesting Enhancements
We also welcome feature suggestions and ideas for improvement. When submitting a feature request:
- Explain why the feature is useful
- Provide example scenarios where it would help
- Suggest a possible implementation, if you have one
- Try to keep requests focused and concise.
Submitting Code Changes
Once you have identified and issue or an enhancement you would like to work on. you can folloe this workflow to submit your code changes.
-
Fork the repository
-
Clone your fork:
git clone https://github.com/your-username/project-name.git
cd project-name -
Create a new branch:
git checkout -b feature/your-feature-name
# OR
git checkout -b fix/your-fixture-name -
Make your changes
-
Write or update tests, if applicable
-
Commit your changes with clear messages:
git commit -m "feat: add new feature X"
# OR
git commit -m "fix: solved issue Y" -
Push your changes:
git push origin feature/your-feature-name
-
Open a Pull Request on the GitHub repository and describe what you’ve done
Pull requests should be:
- Focused on a single change
- Thoroughly tested
- Aligned with project’s code style and guidelines
Improving Tests or Documentation
Improving test coverage and documentation is highly valuable. You can:
- Add test cases for untested components
- Update outdated documentation
- Fix typos or formatting issues
No contribution is too small!
Golang code styde
We follow gofmt's rules on formatting GO code. Therefore, we ask all contributors to do the same. Go provides the gofmt tool, which can be used for formatting your code.