argo-cd/CONTRIBUTING.md
Andrew Merenbach ab00aef75e
Generate swagger files (#278)
* Generate swagger files

* Add basic Swagger definitions

* Add reposerver swagger file

* Consolidate swagger files

* Move swagger files to swagger-ui directory instead

* Put swagger files in swagger-ui

* Fix order of operations

* Move back to swagger directory

* Serve API server swagger files raw for now

* Serve reposerver swagger files from API server

* Move back to subdirectories, thanks @alexmt

* Fix comment on application Rollback

* Update two more comments

* Fix comment in session.proto

* Update generated code

* Update generated swagger docs

* Fix comment for delete actions in cluster and repository swagger

* Set expected collisions and invoke mixins

* Update generated code

* Create swagger mixins from codegen

* Move swagger.json location, thanks @jazminGonzalez-Rivero

* Add ref cleanup for swagger combined

* Make fewer temp files when generating swagger

* Delete intermediate swagger files

* Serve new file at /swagger.json

* Set up UI server

* Update package lock

* Commit generated swagger.json files

* Add install commands for swagger

* Use ReDoc server instead of Swagger UI server

* Update lockfile

* Make URL paths more consistent

* Update package lock

* Separate out handlers for Swagger UI, JSON

* Rm unnecessary CORS headers

...since we're serving from the app server

* Simplify serving

* Further simplify serving code

* Update package lock

* Factor out swagger serving into util

* Add test for Swagger server

* Use ServeSwaggerUI method to run tests

* Update package lock

* Don't generate swagger for reposerver

* Reset to master Gopkg.lock and server/server.go

* Merge in prev change to server/server.go

* Redo changes to Gopkg.lock

* Fix number of conflicts

* Update generated swagger.json for server

* Fix issue with project feature error
2018-06-25 13:49:38 -07:00

2.5 KiB

Requirements

Make sure you have following tools installed docker, golang, dep, protobuf, ksonnet, go-swagger, and jq kubectl.

$ brew tap go-swagger/go-swagger
$ brew install go dep protobuf kubectl ksonnet/tap/ks jq go-swagger
$ go get -u github.com/golang/protobuf/protoc-gen-go
$ go get -u github.com/go-swagger/go-swagger/cmd/swagger
$ go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
$ go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger

Nice to have gometalinter and goreman:

$ go get -u gopkg.in/alecthomas/gometalinter.v2 github.com/mattn/goreman && gometalinter.v2 --install

Building

$ go get -u github.com/argoproj/argo-cd
$ dep ensure
$ make

NOTE: The make command can take a while, and we recommend building the specific component you are working on

  • make cli - Make the argocd CLI tool
  • make server - Make the API/repo/controller server
  • make codegen - Builds protobuf and swagger files
  • make argocd-util - Make the administrator's utility, used for certain tasks such as import/export

Running locally

You need to have access to kubernetes cluster (including minikube or docker edge ) in order to run Argo CD on your laptop:

  • install kubectl: brew install kubectl
  • make sure kubectl is connected to your cluster (e.g. kubectl get pods should work).
  • install application CRD using following command:
$ kubectl create -f install/manifests/01_application-crd.yaml
  • start Argo CD services using goreman:
$ goreman start

Troubleshooting

  • Ensure argocd is installed: ./dist/argocd install
  • Ensure you're logged in: ./dist/argocd login --username admin --password localhost:8080
  • Ensure that roles are configured: kubectl create -f install/manifests/02c_argocd-rbac-cm.yaml
  • Ensure minikube is running: minikube stop && minikube start
  • Ensure Argo CD is aware of minikube: ./dist/argocd cluster add minikube