Before You Start

Argo Rollouts is written in Golang. If you do not have a good grounding in Go, try out the tutorial.



Argo Rollout additionally uses * golangci-lint to lint the project.

Run the following commands to install them:

go get -u

Brew users can quickly install the lot:

brew install go kubectl kustomize

Set up environment variables (e.g. is ~/.bashrc):

export GOPATH=~/go
export PATH=$PATH:$GOPATH/bin

Checkout the code:

go get -u
cd ~/go/src/

Run the following command to download all the dependencies:

go mod download


go.mod is used, so the go build/test commands automatically install the needed dependencies

The make controller command will build the controller.

  • make codegen - Runs the code generator that creates the informers, client, lister, and deepcopies from the types.go and modifies the open-api spec. This command fails if the user has not run go mod download to download all the dependencies of the project.

Running Tests

To run unit tests:

make test

Running Locally

It is much easier to run and debug if you run Argo Rollout in your local machine than in the Kubernetes cluster.

cd ~/go/src/
make controller

Running Local Containers

You may need to run containers locally, so here's how:

Create login to Docker Hub, then login.

docker login

Add your username as the environment variable, e.g. to your ~/.bash_profile:

export IMAGE_NAMESPACE=argoproj

Build the images:

DOCKER_PUSH=true make image

Update the manifests:

make manifests

Install the manifests:

kubectl -n argo-rollouts apply -f manifests/install.yaml

Upgrading Kubernetes Libraries

Argo Rollouts has a dependency on the kubernetes/kubernetes repo for some of the functionality that has not been pushed into the other kubernetes repositories yet. In order to import the kubernetes/kubernetes repo, all of the associated repos have to pinned to the correct version specified by the kubernetes/kubernetes release. The ./hack/ updates all the dependencies to the those correct versions.

Documentation Changes

If you need to run the mkdocs server, you will need to do the following:

  • Follow the instruction guide to install mkDocs
  • Install the material theme with the following guide
  • Run make plugin-docs to generate kubectl plugin documentation

Afterwards, you can run mkdocs serve and access your documentation at

If you don't want to setup mkDocs locally, the following docker command should suffice:

docker run --rm -it -p 8000:8000 -v ${PWD}:/docs squidfunk/mkdocs-material