Skip to content

Latest commit

 

History

History
175 lines (122 loc) · 4.02 KB

development.md

File metadata and controls

175 lines (122 loc) · 4.02 KB

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.

Cloning the code

You will need to clone the main volcano repo to $GOPATH/src/volcano.sh/volcano for the below commands to work correctly.

Building the code

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

Building docker images

Build the containers in your local docker cache:

make images

To build cross-platform images:

make images DOCKER_PLATFORMS="linux/amd64,linux/arm64" BUILDX_OUTPUT_TYPE=registry IMAGE_PREFIX=[yourregistry]

Building a specific docker image

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

Building the Volcano manifests

Use the following command to build the deploy yaml files:

make generate-yaml

Cleaning outputs

You can delete any build artifacts with:

make clean

Running tests

Running unit tests

You can run all the available unit tests with:

make unit-test

Running e2e tests

You can run all the available e2e tests with:

make vcctl
make images
make e2e

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

Auto-formatting source code

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

Running the verification

You can run all the verification we require on your local repo by going to the top of the repo and entering:

make verify

Adding dependencies

Volcano uses Go Modules to manage its dependencies. If you want to add or update a dependency, running:

go get dependency-name@version
go mod tidy
go mod vendor

Note: Go's module system, introduced in Go 1.11, provides an official dependency management solution built into the go command. Make sure GO111MODULE env is not off before using it.

About testing

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.