This document helps you get started using the Volcano code base. If you follow this guide and find some problem, please take a few minutes to update this file.
- Building the code
- Building docker images
- Building a specific docker image
- Building the Volcano manifests
- Cleaning outputs
- Running tests
- Auto-formatting source code
- Running the verification
- Adding dependencies
- About testing
You will need to clone the main volcano
repo to $GOPATH/src/volcano.sh/volcano
for
the below commands to work correctly.
To build volcano all components for your host architecture, go to the source root and run:
make image_bins
the binaries will be generated at .../src/volcano.sh/volcano/_output/bin/linux/amd64/ but if we just make as below
make
then the binaries would be generated at .../src/volcano.sh/volcano/_output/bin/
To build a specific component for your host architecture, go to
the source root and run make <component name>
:
make vc-scheduler
Build the containers in your local docker cache:
make images
If you want to make a local change and test some component, say vc-controller-manager
, you
could do:
Under volcano.sh/volcano repo
pwd
The path should be
.../src/volcano.sh/volcano
Set up environment variables HUB and TAG by
export HUB=docker.io/yourrepo
export TAG=citadel
Make some local change of the code, then build vc-controller-manager
make image.vc-controller-manager
Use the following command to build the deploy yaml files:
make generate-yaml
You can delete any build artifacts with:
make clean
You can run all the available unit tests with:
make unit-test
You can run all the available e2e tests with:
make vcctl
make images
make e2e-test-kind
If you want to run e2e test in a existing cluster with volcano deployed, run the following:
export VC_BIN= need to set vcctl binary path (eg:.../src/volcano.sh/volcano/_output/bin/)
KUBECONFIG=${KUBECONFIG} go test ./test/e2e
You can automatically format the source code to follow our conventions by going to the top of the repo and entering:
./hack/update-gofmt.sh
You can run all the verification we require on your local repo by going to the top of the repo and entering:
make verify
Volcano uses dep to manage its dependencies. If you want to add or update a dependency, running:
dep ensure -add dependency-name@version
Before sending pull requests you should at least make sure your changes have passed both unit and the verification. We only merge pull requests when all tests are passing.
- Unit tests should be fully hermetic
- Only access resources in the test binary.
- All packages and any significant files require unit tests.
- Unit tests are written using the standard Go testing package.
- The preferred method of testing multiple scenarios or input is table driven testing
- Concurrent unit test runs must pass.