|
| 1 | +# Contributing |
| 2 | + |
| 3 | +When contributing to this repository, please describe the change you wish to make via a related issue, or a pull request. |
| 4 | + |
| 5 | +Please note we have a [code of conduct](CODE_OF_CONDUCT.md), please follow it in all your interactions with the project. |
| 6 | + |
| 7 | +## Setting Up Development Environment |
| 8 | +Before making any changes to the source code (documentation excluded) make sure you have installed all the required tools. |
| 9 | +### Prerequisites |
| 10 | +* Install [Nix Package Manager](https://nixos.org/download.html). |
| 11 | +* Install [Golang](https://go.dev/doc/install) (current version: 1.19) |
| 12 | +* Clone this repository: |
| 13 | + * ```bash |
| 14 | + git clone github.com/jetpack/devbox go.jetpack.io |
| 15 | + ``` |
| 16 | +* Setup you `GOPATH` env variable to the parent directory of `go.jetpack.io/` |
| 17 | + * Example: If the cloned repository is at `/Users/johndoe/projects/go.jetpack.io/`: |
| 18 | + ```bash |
| 19 | + export GOPATH=/Users/johndoe/projects/ |
| 20 | + ``` |
| 21 | + |
| 22 | +## Building and Testing |
| 23 | +Devbox is setup like a typical Go project. After installing the required tools and setting up your environment. You can make changes in the source code, build, and test your changes by following these steps: |
| 24 | + |
| 25 | +1. Install dependencies: |
| 26 | + ```bash |
| 27 | + go install |
| 28 | + ``` |
| 29 | +2. Build Devbox: |
| 30 | + ```bash |
| 31 | + go build -o ./devbox cmd/devbox/main.go |
| 32 | + ``` |
| 33 | + This will build an executable file. |
| 34 | +3. Run and test Devbox: |
| 35 | + ```bash |
| 36 | + ./devbox <your_test_command> |
| 37 | + ``` |
| 38 | + |
| 39 | + |
| 40 | +## Pull Request Process |
| 41 | + |
| 42 | +1. Ensure any new feature or functionality also includes tests to verify its correctness. |
| 43 | + |
| 44 | +2. Ensure any new dependency is also included in [go.mod](go.mod) file |
| 45 | + |
| 46 | +2. Ensure any binary file as a result of build (e.g., `./devbox`) are removed and/or excluded from tracking in git. |
| 47 | + |
| 48 | +3. Update the [README.md](README.md) and/or docs with details of changes to the interface, this includes new environment |
| 49 | + variables, new commands, new flags, and useful file locations. |
| 50 | + |
| 51 | +4. You may merge the Pull Request in once you have the sign-off of developers/maintainers, or if you |
| 52 | + do not have permission to do that, you may request the maintainers to merge it for you. |
| 53 | + |
| 54 | +## Developer Certificate of Origin |
| 55 | +By contributing to this project you agree to the [Developer Certificate of Origin](https://developercertificate.org/) (DCO) which was created by the Linux Foundation and is a simple statement that you, as a contributor, have the legal right to make the contribution. See the DCO description for details below: |
| 56 | +> Developer Certificate of Origin |
| 57 | +> |
| 58 | +> Version 1.1 |
| 59 | +> |
| 60 | +> Copyright (C) 2004, 2006 The Linux Foundation and its contributors. |
| 61 | +> |
| 62 | +> Everyone is permitted to copy and distribute verbatim copies of this |
| 63 | +license document, but changing it is not allowed. |
| 64 | +> |
| 65 | +> |
| 66 | +> Developer's Certificate of Origin 1.1 |
| 67 | +> |
| 68 | +> By making a contribution to this project, I certify that: |
| 69 | +> |
| 70 | +> (a) The contribution was created in whole or in part by me and I |
| 71 | + have the right to submit it under the open source license |
| 72 | + indicated in the file; or |
| 73 | +> |
| 74 | +> (b) The contribution is based upon previous work that, to the best |
| 75 | + of my knowledge, is covered under an appropriate open source |
| 76 | + license and I have the right under that license to submit that |
| 77 | + work with modifications, whether created in whole or in part |
| 78 | + by me, under the same open source license (unless I am |
| 79 | + permitted to submit under a different license), as indicated |
| 80 | + in the file; or |
| 81 | +> |
| 82 | +> (c) The contribution was provided directly to me by some other |
| 83 | + person who certified (a), (b) or (c) and I have not modified |
| 84 | + it. |
| 85 | +> |
| 86 | +> (d) I understand and agree that this project and the contribution |
| 87 | + are public and that a record of the contribution (including all |
| 88 | + personal information I submit with it, including my sign-off) is |
| 89 | + maintained indefinitely and may be redistributed consistent with |
| 90 | + this project or the open source license(s) involved. |
0 commit comments