The following graph shows the workflow how to develop KubeSphere backend. For the frontend part please refer to KubeSphere console
- Visit https://github.com/kubesphere/kubesphere
- Click
Fork
button to create a fork of the project to your GitHub account.
Per Go's workspace instructions, place KubeSphere code on your GOPATH
using the following cloning procedure.
Define a local working directory:
export working_dir=$GOPATH/src/kubesphere.io
export user={your github profile name}
Create your clone locally:
mkdir -p $working_dir
cd $working_dir
git clone https://github.com/$user/kubesphere.git
cd $working_dir/kubesphere
git remote add upstream https://github.com/kubesphere/kubesphere.git
# Never push to upstream master
git remote set-url --push upstream no_push
# Confirm your remotes make sense:
git remote -v
git fetch upstream
git checkout master
git rebase upstream/master
Create a branch from master:
git checkout -b myfeature
Then edit code on the myfeature
branch. You can refer to effective_go while writing code.
Currently, the make rules only contain simple checks such as vet, unit test, will add e2e tests soon.
-
For Linux OS, you can download and execute this KubeBuilder script.
-
For MacOS, you can install KubeBuilder by following this guide.
make all
# Run every unit test
make test
Run make help
for additional information on these make targets.
After the test is completed, it is a good practice to keep your local in sync with upstream to avoid conflicts.
# Rebase your master branch of your local repo.
git checkout master
git rebase upstream/master
# Then make your development branch in sync with master branch
git checkout new_feature
git rebase -i master
git add <file>
git commit -s -m "add your description"
When ready to review (or just to establish an offsite backup of your work), push your branch to your fork on GitHub:
git push -f ${your_remote_name} myfeature
- Visit your fork at https://github.com/$user/kubesphere
- Click the
Compare & Pull Request
button next to your myfeature branch. - Check out the pull request process for more details and advice.