Note: Please take a look at https://fluxcd.io/contributing/flux/ to find out about how to contribute to Flux and how to interact with the Flux Development team.
There are a number of dependencies required to be able to run the controller and its test suite locally:
In addition to the above, the following dependencies are also used by some of the make targets:
controller-gen(v0.19.0)gen-crd-api-reference-docs(v0.3.0)setup-envtest(latest)
If any of the above dependencies are not present on your system, the first invocation of a make target that requires them will install them.
Prerequisites:
- Go >= 1.25
You can run the test suite by simply doing
make testBy setting the GO_TEST_ARGS environment variable you can pass additional flags to go test:
make test GO_TEST_ARGS="-v -run=TestReadIgnoreFile/with_domain"Install the controller's CRDs on your test cluster:
make installRun the controller locally:
make runSet the name of the container image to be created from the source code. This will be used when building, pushing and referring to the image on YAML files:
export IMG=registry-path/source-controller
export TAG=latest # optionalBuild the container image, tagging it as $(IMG):$(TAG):
make docker-buildPush the image into the repository:
make docker-pushAlternatively, the three steps above can be done in a single line:
IMG=registry-path/source-controller TAG=latest BUILD_ARGS=--push \
make docker-buildFor an extensive list of BUILD_ARGS, refer to the docker buildx build options documentation.
Note: make docker-build will build images for all supported architecture by default.
Limit this to a specific architecture for faster builds:
IMG=registry-path/source-controller TAG=latest BUILD_ARGS=--push BUILD_PLATFORMS=amd64 \
make docker-buildIf you get the following error when building the docker container:
Multiple platforms feature is currently not supported for docker driver.
Please switch to a different driver (eg. "docker buildx create --use")
you may need to create and switch to a new builder that supports multiple platforms:
docker buildx create --useDeploy source-controller into the cluster that is configured in the local kubeconfig file (i.e. ~/.kube/config):
make deployCreate a .vscode/launch.json file:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${workspaceFolder}/main.go",
"args": ["--storage-adv-addr=:0", "--storage-path=${workspaceFolder}/bin/data"]
}
]
}Start debugging by either clicking Run > Start Debugging or using
the relevant shortcut.