Please do! Thanks for your help in improving the project! 🎈
All contributors are welcome. Not sure where to start? Please see the newcomers welcome guide for how, where, and why to contribute. This project is community-built and welcomes collaboration. Contributors are expected to adhere to our Code of Conduct.
All set to contribute? Grab an open issue with the help-wanted label and jump in. Join our Slack channel and engage in conversation. Create a new issue if needed. All pull requests should ideally reference an open issue. Include keywords in your pull request descriptions, as well as commit messages, to automatically close related issues in GitHub.
Sections
- General Contribution Flow
- Meshery Contribution Flow
- Meshery Documentation
- Meshery Backend
- Meshery UI Relevant coding style guidelines are the Go Code Review Comments and the Formatting and style section of Peter Bourgon's Go: Best Practices for Production Environments.
To contribute to Meshery, please follow the fork-and-pull request workflow described here.
To contribute to this project, you must agree to the Developer Certificate of Origin (DCO) for each commit you make. The DCO is a simple statement that you, as a contributor, have the legal right to make the contribution.
See the DCO file for the full text of what you must agree to and how it works here. To signify that you agree to the DCO for contributions, you simply add a line to each of your git commit messages:
Signed-off-by: Jane Smith <[email protected]>
In most cases, you can add this signoff to your commit automatically with the
-s
or --signoff
flag to git commit
. You must use your real name and a reachable email
address (sorry, no pseudonyms or anonymous contributions). An example of signing off on a commit:
$ commit -s -m “my commit message w/signoff”
To ensure all your commits are signed, you may choose to add this alias to your global .gitconfig
:
~/.gitconfig
[alias]
amend = commit -s --amend
cm = commit -s -m
commit = commit -s
Or you may configure your IDE, for example, Visual Studio Code to automatically sign-off commits for you:
Please contribute! Meshery documentation uses GitHub Pages to host the docs site. Learn more about Meshery's documentation framework. The process of contributing follows this flow:
- Create a fork, if you have not already, by following the steps described here
- In the local copy of your fork, navigate to the docs folder.
cd docs
- Create and checkout a new branch to make changes within
git checkout -b <my-changes>
- Edit/add documentation.
vi <specific page>.md
- Run site locally to preview changes.
make site
- Note: From the Makefile, this command is actually running
$ bundle exec jekyll serve --drafts --livereload
. There are two Jekyll configuration,jekyll serve
for developing locally andjekyll build
when you need to generate the site artefacts for production.
- Commit, sign-off, and push changes to your remote branch.
git push origin <my-changes>
- Open a pull request (in your web browser) against our main repo: https://github.com/layer5io/meshery.
Meshery is written in Go
(Golang) and leverages Go Modules. UI is built on React and Next.js. To make building and packaging easier a Makefile
is included in the main repository folder.
Relevant coding style guidelines are the Go Code Review Comments and the Formatting and style section of Peter Bourgon's Go: Best Practices for Production Environments.
Please note: All make
commands should be run in a terminal from within the Meshery's main folder.
Go
version 1.11+ installed if you want to build and/or make changes to the existing code.GOPATH
environment variable should be configured appropriatelynpm
andnode
should be installed on your machine, preferably the latest versions.- Fork this repository (
git clone https://github.com/layer5io/meshery.git
), clone your forked version of Meshery to your local, preferably outsideGOPATH
. If you happen to checkout Meshery inside yourGOPATH
and you have a version ofGo
prior to version 1.13, please set an environment variableGO111MODULE=on
to enable GO Modules.
To build & run the Meshery server code, run the following command:
make run-local
Any time changes are made to the GO code, you will have to stop the server and run the above command again.
Once the Meshery server is up and running, you should be able to access Meshery on your localhost
on port 9081
at http://localhost:9081
. One thing to note, you might NOT see the Meshery UI until the UI code is built as well.
After running Meshery server, you will need to select your Cloud Provider by navigating to localhost:9081
. Only then you will be able to use the Meshery UI on port 3000
.
Please note: When running make run-local
on the macOS platform, some may face errors with the crypto module in Go. This is caused due to invalid C headers in Clang installed with XCode platform tools. Replacing Clang with gcc by adding export CC=gcc
to .bashrc / .zshrc should fix the issue. More information on the issue can be found here
Users can now test their code changes on their local machine against the CI checks implemented through golang-ci lint.
To test code changes on your local machine, run the following command:
make golangci-run
To build a Docker image of Meshery, please ensure you have Docker
installed to be able to build the image. Now, run the following command to build the Docker image:
make docker
Meshery uses adapters to provision and interact with different service meshes. Follow these instructions to create a new adapter or modify and existing adapter.
- Get the proto buf spec file from Meshery repo:
wget https://raw.githubusercontent.com/layer5io/meshery/master/meshes/meshops.proto
- Generate code
- Using Go as an example, do the following:
- adding GOPATH to PATH:
export PATH=$PATH:$GOPATH/bin
- install grpc:
go get -u google.golang.org/grpc
- install protoc plugin for go:
go get -u github.com/golang/protobuf/protoc-gen-go
- Generate Go code:
protoc -I meshes/ meshes/meshops.proto --go_out=plugins=grpc:./meshes/
- adding GOPATH to PATH:
- For other languages, please refer to gRPC.io for language-specific guides.
- Using Go as an example, do the following:
- Implement the service methods and expose the gRPC server on a port of your choice (e.g. 10000).
Tip: The Meshery adapter for Istio is a good reference adapter to use as an example of a Meshery adapter written in Go.
Meshery is written in Go
(Golang) and leverages Go Modules. UI is built on React and Next.js. To make building and packaging easier a Makefile
is included in the main repository folder.
To install/update the UI dependencies:
make setup-ui-libs
To build and export the UI code:
make build-ui
Now that the UI code is built, Meshery UI will be available at http://localhost:9081
.
Any time changes are made to the UI code, the above code will have to run to rebuild the UI.
If you want to work on the UI, it will be a good idea to use the included UI development server. You can run the UI development server by running the following command:
make run-ui-dev
Once you have the server configured, and running successfully on the default port http://localhost:9081
, you may proceed to access the Meshery UI at http://localhost:3000
.
Any UI changes made now will automatically be recompiled and served in the browser.
If you want to run Meshery from IDE like Goland, VSCode. set below environment variable
SAAS_BASE_URL=https://meshery.layer5.io
PORT=9081
DEBUG=true
ADAPTER_URLS=mesherylocal.layer5.io:10000 mesherylocal.layer5.io:10001 mesherylocal.layer5.io:10002 mesherylocal.layer5.io:10003 mesherylocal.layer5.io:10004 mesherylocal.layer5.io:10005 mesherylocal.layer5.io:10006 mesherylocal.layer5.io:10007 mesherylocal.layer5.io:10008 mesherylocal.layer5.io:10009
go tool argument
-tags draft
update /etc/hosts
127.0.0.1 mesherylocal.layer5.io
We are using ES-Lint to maintain code quality & consistency in our UI Code. To make sure your PR passes all the UI & ES-Lint Tests, please see below :
- Remember to run
make run-ui-lint
&make run-provider-ui-lint
if you are making changes in Meshery-UI & Provider-UI respectively. - The above commands will only fix some basic indenting rules. You will have to manually check your code to ensure there are no duplications, un-used variables or un-declared constants.
- We will soon be adding Pre-Commit Hooks to make sure you get to know your errors before you commit the code.
- In case you are unable to fix your lint errors, ping us on our Slack.
All contributors are invited to review pull requests. See this short video on how to review a pull request.
Resources: https://lab.github.com and https://try.github.com/
This repository and site are available as open-source under the terms of the Apache 2.0 License.