├── VERSION
├── ui
├── .nvmrc
├── tsconfig.json
├── .jshintrc
├── __mocks__
│ └── fileMock.js
├── .dockerignore
├── .gitignore
├── .babelrc
├── babel.config.js
├── src
│ ├── assets
│ │ └── images
│ │ │ ├── argo.png
│ │ │ ├── stars.gif
│ │ │ └── resources
│ │ │ ├── pod.svg
│ │ │ ├── ns.svg
│ │ │ ├── deploy.svg
│ │ │ ├── job.svg
│ │ │ ├── limits.svg
│ │ │ ├── hpa.svg
│ │ │ ├── ing.svg
│ │ │ ├── crb.svg
│ │ │ ├── crd.svg
│ │ │ ├── user.svg
│ │ │ ├── pvc.svg
│ │ │ ├── c-role.svg
│ │ │ ├── sa.svg
│ │ │ ├── svc.svg
│ │ │ ├── rb.svg
│ │ │ ├── group.svg
│ │ │ ├── cm.svg
│ │ │ ├── cronjob.svg
│ │ │ └── netpol.svg
│ └── app
│ │ ├── help
│ │ └── index.tsx
│ │ ├── login
│ │ └── index.tsx
│ │ ├── settings
│ │ ├── index.ts
│ │ └── components
│ │ │ ├── project-role-jwt-tokens
│ │ │ └── project-role-jwt-tokens.scss
│ │ │ ├── account-details
│ │ │ └── account-details.scss
│ │ │ ├── project-details
│ │ │ └── project-details.scss
│ │ │ ├── project-sync-windows-edit
│ │ │ └── project-sync-windows-edit.scss
│ │ │ └── project-events
│ │ │ └── project-events.tsx
│ │ ├── user-info
│ │ ├── index.ts
│ │ └── components
│ │ │ ├── user-info-overview
│ │ │ └── user-info-overview.scss
│ │ │ └── user-info-container.tsx
│ │ ├── applications
│ │ ├── index.ts
│ │ └── components
│ │ │ ├── applications-list
│ │ │ └── applications-tiles.scss
│ │ │ ├── resource-label.ts
│ │ │ ├── resource-label.test.ts
│ │ │ ├── application-resources-diff
│ │ │ └── application-resources-diff.scss
│ │ │ ├── application-operation-state
│ │ │ └── application-operation-state.scss
│ │ │ ├── applications-container.tsx
│ │ │ ├── application-conditions
│ │ │ └── application-conditions.scss
│ │ │ └── application-create-panel
│ │ │ └── application-create-panel.scss
│ │ ├── typings.d.ts
│ │ ├── shared
│ │ ├── components
│ │ │ ├── yaml-editor
│ │ │ │ └── yaml-editor.scss
│ │ │ ├── repo.tsx
│ │ │ ├── timestamp.tsx
│ │ │ ├── spinner.tsx
│ │ │ ├── empty-state
│ │ │ │ ├── empty-state.tsx
│ │ │ │ └── empty-state.scss
│ │ │ ├── checkbox
│ │ │ │ └── checkbox-field.tsx
│ │ │ ├── revision-help-icon.tsx
│ │ │ └── events-list
│ │ │ │ └── events-list.scss
│ │ ├── utils.ts
│ │ ├── services
│ │ │ ├── auth-service.ts
│ │ │ ├── version-service.ts
│ │ │ └── user-service.ts
│ │ └── context.ts
│ │ ├── index.tsx
│ │ ├── index.html
│ │ └── tsconfig.json
├── .prettierrc
├── scripts
│ └── build_docker.sh
├── jest.config.js
└── tslint.json
├── hack
├── custom-boilerplate.go.txt
├── .dockerignore
├── installers
│ ├── install-lint-tools.sh
│ ├── install-codegen-tools.sh
│ ├── install-dep-linux.sh
│ ├── install-jq-linux.sh
│ ├── install-swagger-linux.sh
│ ├── install-helm-linux.sh
│ ├── install-helm2-linux.sh
│ ├── install-kubectl-linux.sh
│ ├── install-protoc-linux.sh
│ ├── install-codegen-go-tools.sh
│ └── install-kubectx-linux.sh
├── versions.sh
├── gpg-wrapper.sh
├── git-ask-pass.sh
├── tool-versions.sh
├── Dockerfile.dev-tools
└── install.sh
├── util
├── app
│ ├── path
│ │ └── testdata
│ │ │ └── file.txt
│ └── discovery
│ │ └── testdata
│ │ ├── baz
│ │ └── Chart.yaml
│ │ ├── foo
│ │ └── Kustomization
│ │ └── bar
│ │ └── bar-components
│ │ └── params.libsonnet
├── lua
│ └── testdata
│ │ └── example.lua
├── helm
│ ├── testdata
│ │ ├── external
│ │ │ └── external-secret.txt
│ │ ├── redis
│ │ │ ├── .helmignore
│ │ │ ├── OWNERS
│ │ │ ├── templates
│ │ │ │ ├── redis-serviceaccount.yaml
│ │ │ │ ├── redis-role.yaml
│ │ │ │ └── redis-rolebinding.yaml
│ │ │ └── Chart.yaml
│ │ ├── api-versions
│ │ │ ├── Chart.yaml
│ │ │ └── templates
│ │ │ │ └── sample.yaml
│ │ ├── invalid-version
│ │ │ └── Chart.yaml
│ │ ├── helm2-dependency
│ │ │ ├── .helmignore
│ │ │ ├── OWNERS
│ │ │ ├── requirements.yaml
│ │ │ ├── requirements.lock
│ │ │ ├── templates
│ │ │ │ ├── externaldb-secrets.yaml
│ │ │ │ ├── tls-secrets.yaml
│ │ │ │ └── secrets.yaml
│ │ │ └── Chart.yaml
│ │ ├── minio
│ │ │ ├── .helmignore
│ │ │ ├── templates
│ │ │ │ └── secrets.yaml
│ │ │ └── Chart.yaml
│ │ └── dependency
│ │ │ └── Chart.yaml
│ ├── version.go
│ ├── version_test.go
│ └── helmver_test.go
├── kustomize
│ └── testdata
│ │ ├── Kustomization
│ │ └── Kustomization
│ │ ├── kustomization_yml
│ │ └── kustomization.yml
│ │ └── kustomization_yaml
│ │ ├── kustomization.yaml
│ │ └── deployment.yaml
├── gpg
│ └── testdata
│ │ ├── bad_signature_nodata.txt
│ │ ├── bad_signature_preeof2.txt
│ │ ├── bad_signature_preeof1.txt
│ │ ├── unknown_signature.txt
│ │ ├── bad_signature_bad.txt
│ │ ├── good_signature.txt
│ │ ├── bad_signature_badkeyid.txt
│ │ ├── bad_signature_malformed2.txt
│ │ ├── bad_signature_malformed3.txt
│ │ ├── bad_signature_malformed1.txt
│ │ └── bad_signature_manipulated.txt
├── kube
│ └── testdata
│ │ ├── svc.yaml
│ │ └── job.yaml
├── hash
│ └── hash.go
├── text
│ ├── text.go
│ └── label
│ │ ├── label_test.go
│ │ └── label.go
├── rand
│ └── rand_test.go
├── clusterauth
│ └── testdata
│ │ └── argocd-manager-sa.yaml
├── util_test.go
├── glob
│ └── glob.go
├── argo
│ └── normalizers
│ │ └── util.go
├── http
│ └── http_test.go
├── cache
│ └── client.go
├── healthz
│ └── healthz.go
└── resource
│ └── revision.go
├── test
├── e2e
│ ├── testdata
│ │ ├── helm-crd
│ │ │ ├── values.yaml
│ │ │ ├── Chart.yaml
│ │ │ └── templates
│ │ │ │ ├── instance.yaml
│ │ │ │ └── crd.yaml
│ │ ├── helm
│ │ │ ├── values.yaml
│ │ │ ├── baz.yaml
│ │ │ ├── Chart.yaml
│ │ │ └── templates
│ │ │ │ └── config-map.yaml
│ │ ├── helm2
│ │ │ ├── values.yaml
│ │ │ ├── baz.yaml
│ │ │ ├── Chart.yaml
│ │ │ └── templates
│ │ │ │ └── config-map.yaml
│ │ ├── .hidden-helm
│ │ │ ├── values.yaml
│ │ │ ├── Chart.yaml
│ │ │ └── templates
│ │ │ │ └── config-map.yaml
│ │ ├── helm3-crd
│ │ │ ├── values.yaml
│ │ │ ├── templates
│ │ │ │ └── config-map.yaml
│ │ │ ├── Chart.yaml
│ │ │ └── crds
│ │ │ │ └── crd.yaml
│ │ ├── helm-values
│ │ │ ├── values.yaml
│ │ │ ├── Chart.yaml
│ │ │ └── templates
│ │ │ │ └── config-map.yaml
│ │ ├── ksonnet
│ │ │ ├── environments
│ │ │ │ ├── dev
│ │ │ │ │ ├── globals.libsonnet
│ │ │ │ │ ├── main.jsonnet
│ │ │ │ │ └── params.libsonnet
│ │ │ │ ├── prod
│ │ │ │ │ ├── globals.libsonnet
│ │ │ │ │ ├── main.jsonnet
│ │ │ │ │ └── params.libsonnet
│ │ │ │ ├── default
│ │ │ │ │ ├── globals.libsonnet
│ │ │ │ │ ├── main.jsonnet
│ │ │ │ │ └── params.libsonnet
│ │ │ │ └── base.libsonnet
│ │ │ ├── .gitignore
│ │ │ ├── app.yaml
│ │ │ └── components
│ │ │ │ └── params.libsonnet
│ │ ├── helm2-with-dependencies
│ │ │ ├── Chart.yaml
│ │ │ └── requirements.yaml
│ │ ├── always-outofsync
│ │ │ ├── kustomization.yaml
│ │ │ └── always-outofsync.yaml
│ │ ├── invalid-kustomize
│ │ │ └── kustomization.yaml
│ │ ├── crd-creation
│ │ │ ├── kustomization.yaml
│ │ │ ├── README.md
│ │ │ ├── crd-instances.yaml
│ │ │ └── crd.yaml
│ │ ├── failure-during-sync
│ │ │ ├── kustomization.yaml
│ │ │ └── failure-during-sync.yaml
│ │ ├── helm-kube-version
│ │ │ ├── Chart.yaml
│ │ │ └── templates
│ │ │ │ └── config-map.yaml
│ │ ├── bad-servicecatalog
│ │ │ ├── kustomization.yaml
│ │ │ ├── servicecatalog-svc.yaml
│ │ │ └── servicecatalog-apiservice.yaml
│ │ ├── networking
│ │ │ ├── README.md
│ │ │ ├── guestbook-ui-svc.yaml
│ │ │ ├── guestbook-ui-internal-svc.yaml
│ │ │ └── guestbook-ui-deployment.yaml
│ │ ├── config-map
│ │ │ ├── config-map.yaml
│ │ │ └── kustomization.yaml
│ │ ├── helm-repo
│ │ │ ├── helm-1.0.0.tgz
│ │ │ ├── helm2-1.0.0.tgz
│ │ │ └── index.yaml
│ │ ├── jsonnet-nested-dir-with-imports
│ │ │ ├── include
│ │ │ │ └── common.libsonnet
│ │ │ └── apps
│ │ │ │ ├── test-root.jsonnet
│ │ │ │ └── nested
│ │ │ │ └── directory
│ │ │ │ └── test.jsonnet
│ │ ├── kustomize
│ │ │ ├── kustomization.yaml
│ │ │ └── pod.yaml
│ │ ├── hook-custom-health
│ │ │ ├── kustomization.yaml
│ │ │ └── config-map.yaml
│ │ ├── guestbook
│ │ │ ├── kustomization.yaml
│ │ │ ├── guestbook-ui-svc.yaml
│ │ │ └── guestbook-ui-deployment.yaml
│ │ ├── ssh-kustomize-base
│ │ │ └── kustomization.yaml
│ │ ├── crashing-guestbook
│ │ │ ├── kustomization.yaml
│ │ │ └── guestbook-deployment.yaml
│ │ ├── guestbook_local
│ │ │ ├── kustomization.yaml
│ │ │ ├── guestbook-ui-svc.yaml
│ │ │ └── guestbook-ui-deployment.yaml
│ │ ├── helm-with-dependencies
│ │ │ └── Chart.yaml
│ │ ├── https-kustomize-base
│ │ │ └── kustomization.yaml
│ │ ├── service
│ │ │ └── service.yaml
│ │ ├── deprecated-extensions
│ │ │ ├── network-policy.yaml
│ │ │ ├── ingress.yaml
│ │ │ └── pod-security-policy.yaml
│ │ ├── guestbook-with-namespace
│ │ │ ├── guestbook-ui-svc.yaml
│ │ │ ├── guestbook-ui-svc-ns.yaml
│ │ │ ├── kustomization.yaml
│ │ │ ├── guestbook-ui-deployment.yaml
│ │ │ └── guestbook-ui-deployment-ns.yaml
│ │ ├── jsonnet-ext-var
│ │ │ └── config-map.jsonnet
│ │ ├── hook
│ │ │ ├── pod.yaml
│ │ │ └── hook.yaml
│ │ ├── sync-waves
│ │ │ ├── pod-1.yaml
│ │ │ └── pod-2.yaml
│ │ ├── cluster-role
│ │ │ ├── pod.yaml
│ │ │ └── cluster-role.yaml
│ │ ├── global-with-no-namesapce
│ │ │ └── console.yaml
│ │ ├── two-nice-pods
│ │ │ ├── pod-1.yaml
│ │ │ └── pod-2.yaml
│ │ ├── jsonnet-tla-cm
│ │ │ └── config-map.jsonnet
│ │ ├── git-submodule
│ │ │ └── submodule-pod.yaml
│ │ ├── kustomize-cm-gen
│ │ │ └── kustomization.yaml
│ │ ├── sync-options-validate-false
│ │ │ └── invalid-cm.yaml
│ │ ├── secrets
│ │ │ └── secrets.yaml
│ │ ├── declarative-apps
│ │ │ ├── app.yaml
│ │ │ └── invalid-helm.yaml
│ │ ├── hook-and-deployment
│ │ │ └── hook.yaml
│ │ ├── self-managed-app
│ │ │ └── resources.yaml
│ │ ├── failed-conversion
│ │ │ └── apiservice.yaml
│ │ ├── deployment
│ │ │ └── deployment.yaml
│ │ ├── one-deployment
│ │ │ └── deployment.yaml
│ │ ├── crd-validation
│ │ │ └── deployment.yaml
│ │ └── openshift
│ │ │ └── manifests.yaml
│ ├── user_info_test.go
│ ├── fixture
│ │ ├── cmd.go
│ │ ├── util.go
│ │ └── tmpl.go
│ └── pruning_required_test.go
├── fixture
│ ├── testrepos
│ │ ├── .htpasswd
│ │ ├── ssh_host_ed25519_key.pub
│ │ ├── ssh_host_ecdsa_key.pub
│ │ ├── Procfile
│ │ ├── start-git.sh
│ │ ├── ssh_host_rsa_key.pub
│ │ ├── id_rsa.pub
│ │ ├── ssh_host_ed25519_key
│ │ └── ssh_host_ecdsa_key
│ ├── gpg
│ │ └── signingkey.asc
│ ├── test
│ │ ├── flaky.go
│ │ └── ci.go
│ ├── revision_metadata
│ │ ├── author_test.go
│ │ └── author.go
│ ├── log
│ │ └── log.go
│ └── certs
│ │ └── ssh_known_hosts
├── testdata
│ └── static
│ │ └── test.html
├── manifests
│ └── base
│ │ ├── kustomization.yaml
│ │ └── patches.yaml
└── container
│ └── uid_entrypoint.sh
├── manifests
├── ha
│ ├── base
│ │ ├── redis-ha
│ │ │ ├── chart
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Chart.yaml
│ │ │ │ ├── requirements.yaml
│ │ │ │ ├── values.yaml
│ │ │ │ └── requirements.lock
│ │ │ ├── overlays
│ │ │ │ ├── remove-namespace.yaml
│ │ │ │ ├── service-selector.yaml
│ │ │ │ ├── modify-labels.yaml
│ │ │ │ ├── haproxy-service-selector.yaml
│ │ │ │ └── haproxy-modify-labels.yaml
│ │ │ └── README.md
│ │ ├── overlays
│ │ │ └── argocd-application-controller-statefulset.yaml
│ │ └── kustomization.yaml
│ ├── namespace-install
│ │ └── kustomization.yaml
│ └── cluster-install
│ │ └── kustomization.yaml
├── namespace-install
│ └── kustomization.yaml
├── crds
│ └── kustomization.yaml
├── cluster-install
│ └── kustomization.yaml
├── base
│ ├── config
│ │ ├── argocd-cm.yaml
│ │ ├── argocd-rbac-cm.yaml
│ │ ├── argocd-gpg-keys-cm.yaml
│ │ ├── argocd-secret.yaml
│ │ ├── argocd-tls-certs-cm.yaml
│ │ └── kustomization.yaml
│ ├── repo-server
│ │ ├── kustomization.yaml
│ │ └── argocd-repo-server-service.yaml
│ ├── server
│ │ ├── argocd-server-sa.yaml
│ │ ├── kustomization.yaml
│ │ ├── argocd-server-metrics.yaml
│ │ ├── argocd-server-rolebinding.yaml
│ │ └── argocd-server-service.yaml
│ ├── dex
│ │ ├── argocd-dex-server-sa.yaml
│ │ ├── kustomization.yaml
│ │ ├── argocd-dex-server-role.yaml
│ │ ├── argocd-dex-server-rolebinding.yaml
│ │ └── argocd-dex-server-service.yaml
│ ├── kustomization.yaml
│ ├── application-controller
│ │ ├── argocd-application-controller-sa.yaml
│ │ ├── kustomization.yaml
│ │ ├── argocd-metrics.yaml
│ │ └── argocd-application-controller-rolebinding.yaml
│ └── redis
│ │ ├── kustomization.yaml
│ │ └── argocd-redis-service.yaml
└── cluster-rbac
│ ├── kustomization.yaml
│ ├── argocd-server-clusterrolebinding.yaml
│ ├── argocd-application-controller-clusterrole.yaml
│ └── argocd-application-controller-clusterrolebinding.yaml
├── reposerver
├── repository
│ └── testdata
│ │ ├── Kustomization
│ │ └── Kustomization
│ │ ├── invalid-helm
│ │ └── Chart.yaml
│ │ ├── invalid-kustomize
│ │ └── Kustomization
│ │ ├── my-chart
│ │ ├── my-chart-values.yaml
│ │ ├── Chart.yaml
│ │ └── templates
│ │ │ └── my-map.yaml
│ │ ├── kustomization_yaml
│ │ └── kustomization.yaml
│ │ ├── kustomization_yml
│ │ └── kustomization.yml
│ │ ├── my-chart-2
│ │ ├── my-chart-2-values.yaml
│ │ ├── Chart.yaml
│ │ └── templates
│ │ │ └── my-map.yaml
│ │ ├── app-parameters
│ │ ├── .argocd-source.yaml
│ │ ├── kustomization.yaml
│ │ └── guestbook.yaml
│ │ ├── recurse
│ │ ├── baz.yaml
│ │ └── foo
│ │ │ └── bar.yaml
│ │ ├── utf-16
│ │ └── utf-16.yaml
│ │ ├── null-list
│ │ └── null-list.yaml
│ │ ├── empty-list
│ │ └── empty-list.yaml
│ │ ├── jsonnet
│ │ ├── params.libsonnet
│ │ └── vendor
│ │ │ └── nested
│ │ │ └── service.libsonnet
│ │ ├── weird-list
│ │ └── weird-list.yaml
│ │ └── concatenated
│ │ └── concatenated.yaml
└── apiclient
│ └── mocks
│ └── Clientset.go
├── .github
├── no-response.yml
├── stale.yml
└── ISSUE_TEMPLATE
│ └── enhancement_proposal.md
├── docs
├── assets
│ ├── argo.png
│ ├── logo.png
│ ├── favicon.png
│ ├── new-app.png
│ ├── saml-1.png
│ ├── saml-2.png
│ ├── saml-3.png
│ ├── saml-4.png
│ ├── argocd-ui.gif
│ ├── create-app.png
│ ├── dashboard.jpg
│ ├── select_env.png
│ ├── sync-apps.png
│ ├── connect-repo.png
│ ├── destination.png
│ ├── filter-apps.png
│ ├── groups-claim.png
│ ├── groups-scope.png
│ ├── register-app.png
│ ├── repo-add-ssh.png
│ ├── select_repo.png
│ ├── api-management.png
│ ├── guestbook-app.png
│ ├── guestbook-tree.png
│ ├── keycloak-login.png
│ ├── new-app-of-apps.png
│ ├── oauth2-config.png
│ ├── repo-add-https.png
│ ├── selective-sync.png
│ ├── webhook-config.png
│ ├── openunison-portal.png
│ ├── repo-add-overview.png
│ ├── terminate-button.png
│ ├── app-ui-information.png
│ ├── argocd_architecture.png
│ ├── keycloak-add-client.png
│ ├── keycloak-add-scope.png
│ ├── keycloak-user-group.png
│ ├── orphaned-resources.png
│ ├── sync-option-no-prune.png
│ ├── azure-api-permissions.png
│ ├── azure-enterprise-users.png
│ ├── cert-management-remove.png
│ ├── keycloak-client-scope.png
│ ├── keycloak-client-secret.png
│ ├── keycloak-groups-mapper.png
│ ├── synchronization-button.png
│ ├── azure-enterprise-claims.png
│ ├── azure-token-configuration.png
│ ├── cert-management-add-ssh.png
│ ├── cert-management-add-tls.png
│ ├── cert-management-overview.png
│ ├── keycloak-configure-client.png
│ ├── application-of-applications.png
│ ├── azure-enterprise-saml-urls.png
│ ├── download-codegen-patch-file.png
│ ├── status-badge-healthy-synced.png
│ ├── keycloak-client-scope-selected.png
│ ├── sync-option-no-prune-sync-status.png
│ └── compare-option-ignore-needs-pruning.png
├── CONTRIBUTING.md
├── user-guide
│ ├── commands
│ │ └── argocd_cli.md
│ ├── index.md
│ └── selective_sync.md
├── developer-guide
│ ├── ci-pipeline-failed.png
│ ├── index.md
│ └── site.md
├── operator-manual
│ ├── index.md
│ └── upgrading
│ │ ├── 1.2-1.3.md
│ │ ├── 1.0-1.1.md
│ │ └── 1.5-1.6.md
└── SUPPORT.md
├── cmd
├── argocd
│ ├── commands
│ │ └── testdata
│ │ │ ├── test.cert.pem
│ │ │ └── test.key.pem
│ └── main.go
└── argocd-server
│ ├── commands
│ └── common.go
│ └── main.go
├── resource_customizations
├── apps
│ ├── DaemonSet
│ │ └── actions
│ │ │ ├── discovery.lua
│ │ │ ├── action_test.yaml
│ │ │ └── restart
│ │ │ └── action.lua
│ ├── Deployment
│ │ └── actions
│ │ │ ├── discovery.lua
│ │ │ ├── action_test.yaml
│ │ │ └── restart
│ │ │ └── action.lua
│ └── StatefulSet
│ │ └── actions
│ │ ├── discovery.lua
│ │ ├── action_test.yaml
│ │ └── restart
│ │ └── action.lua
├── extensions
│ ├── DaemonSet
│ │ └── actions
│ │ │ ├── discovery.lua
│ │ │ ├── action_test.yaml
│ │ │ └── restart
│ │ │ └── action.lua
│ └── Deployment
│ │ └── actions
│ │ ├── discovery.lua
│ │ ├── action_test.yaml
│ │ └── restart
│ │ └── action.lua
├── argoproj.io
│ ├── Rollout
│ │ ├── actions
│ │ │ ├── restart
│ │ │ │ └── action.lua
│ │ │ ├── resume
│ │ │ │ └── action.lua
│ │ │ └── discovery.lua
│ │ └── testdata
│ │ │ └── degraded_invalidSpec.yaml
│ └── AnalysisRun
│ │ └── testdata
│ │ └── pendingAnalysisRun.yaml
├── zookeeper.pravega.io
│ └── ZookeeperCluster
│ │ ├── health_test.yaml
│ │ └── health.lua
├── kafka.strimzi.io
│ └── KafkaConnect
│ │ ├── health_test.yaml
│ │ └── health.lua
├── kiali.io
│ └── Kiali
│ │ ├── health_test.yaml
│ │ └── health.lua
├── jaegertracing.io
│ └── Jaeger
│ │ ├── health_test.yaml
│ │ ├── testdata
│ │ ├── progressing.yaml
│ │ ├── degraded.yaml
│ │ └── healthy.yaml
│ │ └── health.lua
├── sparkoperator.k8s.io
│ └── SparkApplication
│ │ └── health_test.yaml
├── stacks.crossplane.io
│ └── ClusterStackInstall
│ │ ├── health_test.yaml
│ │ └── health.lua
├── operator.knative.dev
│ ├── KnativeEventing
│ │ └── health_test.yaml
│ └── KnativeServing
│ │ └── health_test.yaml
├── cert-manager.io
│ ├── Issuer
│ │ ├── health_test.yaml
│ │ ├── testdata
│ │ │ └── progressing_noStatus.yaml
│ │ └── health.lua
│ └── Certificate
│ │ └── health.lua
├── certmanager.k8s.io
│ ├── Issuer
│ │ ├── health_test.yaml
│ │ ├── testdata
│ │ │ └── progressing_noStatus.yaml
│ │ └── health.lua
│ └── Certificate
│ │ └── health.lua
├── networking.gke.io
│ └── ManagedCertificate
│ │ └── health_test.yaml
├── kafka.banzaicloud.io
│ └── KafkaCluster
│ │ └── health_test.yaml
└── install.istio.io
│ └── IstioOperator
│ └── health_test.yaml
├── pkg
├── client
│ └── clientset
│ │ └── versioned
│ │ ├── doc.go
│ │ ├── fake
│ │ └── doc.go
│ │ ├── scheme
│ │ └── doc.go
│ │ └── typed
│ │ └── application
│ │ └── v1alpha1
│ │ ├── fake
│ │ └── doc.go
│ │ ├── doc.go
│ │ └── generated_expansion.go
├── apis
│ └── application
│ │ ├── v1alpha1
│ │ └── doc.go
│ │ └── register.go
└── apiclient
│ └── project
│ └── forwarder_overwrite.go
├── OWNERS
├── examples
└── known-hosts
│ ├── argocd-known-hosts.yaml
│ └── kustomization.yaml
├── .gitignore
├── SECURITY_CONTACTS
├── server
├── settings
│ └── oidc
│ │ └── claims.proto
└── project
│ └── util.go
├── Dockerfile.dev
├── .dockerignore
├── assets
└── model.conf
├── .codecov.yml
├── .golangci.yml
└── tools
└── cmd-docs
└── main.go
/VERSION:
--------------------------------------------------------------------------------
1 | 1.8.0
2 |
--------------------------------------------------------------------------------
/ui/.nvmrc:
--------------------------------------------------------------------------------
1 | v12.18.4
2 |
--------------------------------------------------------------------------------
/hack/custom-boilerplate.go.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/util/app/path/testdata/file.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/hack/.dockerignore:
--------------------------------------------------------------------------------
1 | Dockerfile.dev-tools
--------------------------------------------------------------------------------
/test/e2e/testdata/helm-crd/values.yaml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/e2e/testdata/helm/values.yaml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/e2e/testdata/helm2/values.yaml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ui/tsconfig.json:
--------------------------------------------------------------------------------
1 | src/app/tsconfig.json
--------------------------------------------------------------------------------
/test/e2e/testdata/.hidden-helm/values.yaml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/e2e/testdata/helm/baz.yaml:
--------------------------------------------------------------------------------
1 | a: b
2 |
--------------------------------------------------------------------------------
/test/e2e/testdata/helm2/baz.yaml:
--------------------------------------------------------------------------------
1 | a: b
2 |
--------------------------------------------------------------------------------
/test/e2e/testdata/helm3-crd/values.yaml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/util/app/discovery/testdata/baz/Chart.yaml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ui/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "esversion": 6
3 | }
4 |
--------------------------------------------------------------------------------
/util/app/discovery/testdata/foo/Kustomization:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/manifests/ha/base/redis-ha/chart/.gitignore:
--------------------------------------------------------------------------------
1 | charts
--------------------------------------------------------------------------------
/test/e2e/testdata/helm-values/values.yaml:
--------------------------------------------------------------------------------
1 | foo: bar
--------------------------------------------------------------------------------
/ui/__mocks__/fileMock.js:
--------------------------------------------------------------------------------
1 | module.exports = {};
2 |
--------------------------------------------------------------------------------
/util/lua/testdata/example.lua:
--------------------------------------------------------------------------------
1 | return 'Hello World'
--------------------------------------------------------------------------------
/manifests/ha/base/redis-ha/chart/Chart.yaml:
--------------------------------------------------------------------------------
1 | name: redis-ha
--------------------------------------------------------------------------------
/reposerver/repository/testdata/Kustomization/Kustomization:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/reposerver/repository/testdata/invalid-helm/Chart.yaml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ui/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .git
3 | Dockerfile
4 |
--------------------------------------------------------------------------------
/reposerver/repository/testdata/invalid-kustomize/Kustomization:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/reposerver/repository/testdata/my-chart/my-chart-values.yaml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/util/app/discovery/testdata/bar/bar-components/params.libsonnet:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/util/helm/testdata/external/external-secret.txt:
--------------------------------------------------------------------------------
1 | YW9maWUyOTRBUwo=
--------------------------------------------------------------------------------
/reposerver/repository/testdata/kustomization_yaml/kustomization.yaml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/reposerver/repository/testdata/kustomization_yml/kustomization.yml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/e2e/testdata/helm2/Chart.yaml:
--------------------------------------------------------------------------------
1 | version: 1.0.0
2 | name: helm2
--------------------------------------------------------------------------------
/test/e2e/testdata/ksonnet/environments/dev/globals.libsonnet:
--------------------------------------------------------------------------------
1 | {
2 | }
--------------------------------------------------------------------------------
/test/e2e/testdata/ksonnet/environments/prod/globals.libsonnet:
--------------------------------------------------------------------------------
1 | {
2 | }
--------------------------------------------------------------------------------
/.github/no-response.yml:
--------------------------------------------------------------------------------
1 | # See https://github.com/probot/no-response
2 |
--------------------------------------------------------------------------------
/reposerver/repository/testdata/my-chart-2/my-chart-2-values.yaml:
--------------------------------------------------------------------------------
1 | app: go
--------------------------------------------------------------------------------
/test/e2e/testdata/.hidden-helm/Chart.yaml:
--------------------------------------------------------------------------------
1 | version: 1.0.0
2 | name: helm
--------------------------------------------------------------------------------
/test/e2e/testdata/ksonnet/environments/default/globals.libsonnet:
--------------------------------------------------------------------------------
1 | {
2 | }
--------------------------------------------------------------------------------
/util/kustomize/testdata/Kustomization/Kustomization:
--------------------------------------------------------------------------------
1 | kind: Kustomization
--------------------------------------------------------------------------------
/util/kustomize/testdata/kustomization_yml/kustomization.yml:
--------------------------------------------------------------------------------
1 | kind: Kustomization
--------------------------------------------------------------------------------
/reposerver/repository/testdata/my-chart/Chart.yaml:
--------------------------------------------------------------------------------
1 | name: my-chart
2 | version: 1.1.0
--------------------------------------------------------------------------------
/test/e2e/testdata/helm/Chart.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v2
2 | version: 1.0.0
3 | name: helm
--------------------------------------------------------------------------------
/test/e2e/testdata/helm2-with-dependencies/Chart.yaml:
--------------------------------------------------------------------------------
1 | name: helm-with-dependencies
--------------------------------------------------------------------------------
/test/fixture/testrepos/.htpasswd:
--------------------------------------------------------------------------------
1 | admin:$apr1$VuJfjgOh$H1b0xyAZCw3n3tmwqOVi01
2 |
--------------------------------------------------------------------------------
/reposerver/repository/testdata/my-chart-2/Chart.yaml:
--------------------------------------------------------------------------------
1 | name: my-chart
2 | version: 1.1.0
--------------------------------------------------------------------------------
/test/e2e/testdata/helm-crd/Chart.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v2
2 | version: 1.0.0
3 | name: helm-crd
--------------------------------------------------------------------------------
/ui/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | .vscode
4 | junit.xml
5 | coverage
6 | /yarn-error.log
--------------------------------------------------------------------------------
/util/gpg/testdata/bad_signature_nodata.txt:
--------------------------------------------------------------------------------
1 | Lorem ipsum
2 | Lorem ipsum
3 | Lorem ipsum
4 |
--------------------------------------------------------------------------------
/util/helm/testdata/redis/.helmignore:
--------------------------------------------------------------------------------
1 | .git
2 | # OWNERS file for Kubernetes
3 | OWNERS
4 |
--------------------------------------------------------------------------------
/docs/assets/argo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/argo.png
--------------------------------------------------------------------------------
/docs/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/logo.png
--------------------------------------------------------------------------------
/test/e2e/testdata/always-outofsync/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - always-outofsync.yaml
3 |
--------------------------------------------------------------------------------
/test/e2e/testdata/helm-values/Chart.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v2
2 | version: 1.0.0
3 | name: helm-values
--------------------------------------------------------------------------------
/test/e2e/testdata/invalid-kustomize/kustomization.yaml:
--------------------------------------------------------------------------------
1 | configurations:
2 | - does-not-exist.yaml
--------------------------------------------------------------------------------
/util/gpg/testdata/bad_signature_preeof2.txt:
--------------------------------------------------------------------------------
1 | gpg: Signature made Wed Feb 26 23:22:34 2020 CET
2 |
--------------------------------------------------------------------------------
/docs/assets/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/favicon.png
--------------------------------------------------------------------------------
/docs/assets/new-app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/new-app.png
--------------------------------------------------------------------------------
/docs/assets/saml-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/saml-1.png
--------------------------------------------------------------------------------
/docs/assets/saml-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/saml-2.png
--------------------------------------------------------------------------------
/docs/assets/saml-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/saml-3.png
--------------------------------------------------------------------------------
/docs/assets/saml-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/saml-4.png
--------------------------------------------------------------------------------
/manifests/ha/base/redis-ha/overlays/remove-namespace.yaml:
--------------------------------------------------------------------------------
1 | - {op: remove, path: /metadata/namespace}
2 |
--------------------------------------------------------------------------------
/test/e2e/testdata/crd-creation/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - crd.yaml
3 | - crd-instances.yaml
--------------------------------------------------------------------------------
/test/e2e/testdata/failure-during-sync/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - failure-during-sync.yaml
3 |
--------------------------------------------------------------------------------
/util/helm/testdata/api-versions/Chart.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | version: 1.0.0
3 | name: api-versions
4 |
--------------------------------------------------------------------------------
/util/helm/testdata/invalid-version/Chart.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v99
2 | version: 1.0.0
3 | name: my-chart
4 |
--------------------------------------------------------------------------------
/docs/assets/argocd-ui.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/argocd-ui.gif
--------------------------------------------------------------------------------
/docs/assets/create-app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/create-app.png
--------------------------------------------------------------------------------
/docs/assets/dashboard.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/dashboard.jpg
--------------------------------------------------------------------------------
/docs/assets/select_env.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/select_env.png
--------------------------------------------------------------------------------
/docs/assets/sync-apps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/sync-apps.png
--------------------------------------------------------------------------------
/ui/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "@babel/preset-env",
4 | "@babel/preset-react"
5 | ]
6 | }
--------------------------------------------------------------------------------
/docs/assets/connect-repo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/connect-repo.png
--------------------------------------------------------------------------------
/docs/assets/destination.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/destination.png
--------------------------------------------------------------------------------
/docs/assets/filter-apps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/filter-apps.png
--------------------------------------------------------------------------------
/docs/assets/groups-claim.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/groups-claim.png
--------------------------------------------------------------------------------
/docs/assets/groups-scope.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/groups-scope.png
--------------------------------------------------------------------------------
/docs/assets/register-app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/register-app.png
--------------------------------------------------------------------------------
/docs/assets/repo-add-ssh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/repo-add-ssh.png
--------------------------------------------------------------------------------
/docs/assets/select_repo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/select_repo.png
--------------------------------------------------------------------------------
/test/e2e/testdata/helm-kube-version/Chart.yaml:
--------------------------------------------------------------------------------
1 | version: 1.0.0
2 | name: helm-kube-version
3 | kubeVersion: 1.0.0
--------------------------------------------------------------------------------
/ui/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: ['@babel/preset-env', '@babel/preset-react'],
3 | };
4 |
--------------------------------------------------------------------------------
/cmd/argocd/commands/testdata/test.cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | test-cert-data
3 | -----END CERTIFICATE-----
--------------------------------------------------------------------------------
/docs/assets/api-management.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/api-management.png
--------------------------------------------------------------------------------
/docs/assets/guestbook-app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/guestbook-app.png
--------------------------------------------------------------------------------
/docs/assets/guestbook-tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/guestbook-tree.png
--------------------------------------------------------------------------------
/docs/assets/keycloak-login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/keycloak-login.png
--------------------------------------------------------------------------------
/docs/assets/new-app-of-apps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/new-app-of-apps.png
--------------------------------------------------------------------------------
/docs/assets/oauth2-config.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/oauth2-config.png
--------------------------------------------------------------------------------
/docs/assets/repo-add-https.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/repo-add-https.png
--------------------------------------------------------------------------------
/docs/assets/selective-sync.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/selective-sync.png
--------------------------------------------------------------------------------
/docs/assets/webhook-config.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/webhook-config.png
--------------------------------------------------------------------------------
/test/e2e/testdata/ksonnet/.gitignore:
--------------------------------------------------------------------------------
1 | /lib
2 | /.ksonnet/registries
3 | /app.override.yaml
4 | /.ks_environment
5 |
--------------------------------------------------------------------------------
/test/fixture/gpg/signingkey.asc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/test/fixture/gpg/signingkey.asc
--------------------------------------------------------------------------------
/ui/src/assets/images/argo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/ui/src/assets/images/argo.png
--------------------------------------------------------------------------------
/ui/src/assets/images/stars.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/ui/src/assets/images/stars.gif
--------------------------------------------------------------------------------
/docs/assets/openunison-portal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/openunison-portal.png
--------------------------------------------------------------------------------
/docs/assets/repo-add-overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/repo-add-overview.png
--------------------------------------------------------------------------------
/docs/assets/terminate-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/terminate-button.png
--------------------------------------------------------------------------------
/cmd/argocd/commands/testdata/test.key.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN RSA PRIVATE KEY-----
2 | test-key-data
3 | -----END RSA PRIVATE KEY-----
--------------------------------------------------------------------------------
/docs/assets/app-ui-information.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/app-ui-information.png
--------------------------------------------------------------------------------
/docs/assets/argocd_architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/argocd_architecture.png
--------------------------------------------------------------------------------
/docs/assets/keycloak-add-client.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/keycloak-add-client.png
--------------------------------------------------------------------------------
/docs/assets/keycloak-add-scope.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/keycloak-add-scope.png
--------------------------------------------------------------------------------
/docs/assets/keycloak-user-group.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/keycloak-user-group.png
--------------------------------------------------------------------------------
/docs/assets/orphaned-resources.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/orphaned-resources.png
--------------------------------------------------------------------------------
/docs/assets/sync-option-no-prune.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/sync-option-no-prune.png
--------------------------------------------------------------------------------
/resource_customizations/apps/DaemonSet/actions/discovery.lua:
--------------------------------------------------------------------------------
1 | actions = {}
2 | actions["restart"] = {}
3 | return actions
4 |
--------------------------------------------------------------------------------
/resource_customizations/apps/Deployment/actions/discovery.lua:
--------------------------------------------------------------------------------
1 | actions = {}
2 | actions["restart"] = {}
3 | return actions
4 |
--------------------------------------------------------------------------------
/resource_customizations/apps/StatefulSet/actions/discovery.lua:
--------------------------------------------------------------------------------
1 | actions = {}
2 | actions["restart"] = {}
3 | return actions
4 |
--------------------------------------------------------------------------------
/ui/src/app/help/index.tsx:
--------------------------------------------------------------------------------
1 | import {Help} from './components/help';
2 |
3 | export default {
4 | component: Help
5 | };
6 |
--------------------------------------------------------------------------------
/docs/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | Please refer to [the Contribution Guide](https://argoproj.github.io/argo-cd/developer-guide/contributing/)
2 |
--------------------------------------------------------------------------------
/docs/assets/azure-api-permissions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/azure-api-permissions.png
--------------------------------------------------------------------------------
/docs/assets/azure-enterprise-users.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/azure-enterprise-users.png
--------------------------------------------------------------------------------
/docs/assets/cert-management-remove.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/cert-management-remove.png
--------------------------------------------------------------------------------
/docs/assets/keycloak-client-scope.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/keycloak-client-scope.png
--------------------------------------------------------------------------------
/docs/assets/keycloak-client-secret.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/keycloak-client-secret.png
--------------------------------------------------------------------------------
/docs/assets/keycloak-groups-mapper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/keycloak-groups-mapper.png
--------------------------------------------------------------------------------
/docs/assets/synchronization-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/synchronization-button.png
--------------------------------------------------------------------------------
/docs/user-guide/commands/argocd_cli.md:
--------------------------------------------------------------------------------
1 | # ArgoCD Command Reference
2 |
3 | ArgoCD command reference can be found [here](./argocd.md).
--------------------------------------------------------------------------------
/reposerver/repository/testdata/my-chart-2/templates/my-map.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: my-map
--------------------------------------------------------------------------------
/reposerver/repository/testdata/my-chart/templates/my-map.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: my-map
--------------------------------------------------------------------------------
/resource_customizations/extensions/DaemonSet/actions/discovery.lua:
--------------------------------------------------------------------------------
1 | actions = {}
2 | actions["restart"] = {}
3 | return actions
4 |
--------------------------------------------------------------------------------
/resource_customizations/extensions/Deployment/actions/discovery.lua:
--------------------------------------------------------------------------------
1 | actions = {}
2 | actions["restart"] = {}
3 | return actions
4 |
--------------------------------------------------------------------------------
/test/e2e/testdata/bad-servicecatalog/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - servicecatalog-apiservice.yaml
3 | - servicecatalog-svc.yaml
--------------------------------------------------------------------------------
/test/e2e/testdata/networking/README.md:
--------------------------------------------------------------------------------
1 | Sample app which deploys application with networking resources. Useful for manual testing.
2 |
--------------------------------------------------------------------------------
/ui/src/app/login/index.tsx:
--------------------------------------------------------------------------------
1 | import {Login} from './components/login';
2 |
3 | export default {
4 | component: Login
5 | };
6 |
--------------------------------------------------------------------------------
/util/kustomize/testdata/kustomization_yaml/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - ./deployment.yaml
3 | - ./statefulset.yaml
4 |
--------------------------------------------------------------------------------
/.github/stale.yml:
--------------------------------------------------------------------------------
1 | # See https://github.com/probot/stale
2 | # See https://github.com/probot/stale
3 | exemptLabels:
4 | - backlog
5 |
--------------------------------------------------------------------------------
/docs/assets/azure-enterprise-claims.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/azure-enterprise-claims.png
--------------------------------------------------------------------------------
/docs/assets/azure-token-configuration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/azure-token-configuration.png
--------------------------------------------------------------------------------
/docs/assets/cert-management-add-ssh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/cert-management-add-ssh.png
--------------------------------------------------------------------------------
/docs/assets/cert-management-add-tls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/cert-management-add-tls.png
--------------------------------------------------------------------------------
/docs/assets/cert-management-overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/cert-management-overview.png
--------------------------------------------------------------------------------
/docs/assets/keycloak-configure-client.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/keycloak-configure-client.png
--------------------------------------------------------------------------------
/test/e2e/testdata/config-map/config-map.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: my-map
5 | data:
6 | foo: bar
--------------------------------------------------------------------------------
/docs/assets/application-of-applications.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/application-of-applications.png
--------------------------------------------------------------------------------
/docs/assets/azure-enterprise-saml-urls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/azure-enterprise-saml-urls.png
--------------------------------------------------------------------------------
/docs/assets/download-codegen-patch-file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/download-codegen-patch-file.png
--------------------------------------------------------------------------------
/docs/assets/status-badge-healthy-synced.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/status-badge-healthy-synced.png
--------------------------------------------------------------------------------
/docs/developer-guide/ci-pipeline-failed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/developer-guide/ci-pipeline-failed.png
--------------------------------------------------------------------------------
/reposerver/repository/testdata/app-parameters/.argocd-source.yaml:
--------------------------------------------------------------------------------
1 | kustomize:
2 | images:
3 | - gcr.io/heptio-images/ks-guestbook-demo:0.2
--------------------------------------------------------------------------------
/test/e2e/testdata/helm-repo/helm-1.0.0.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/test/e2e/testdata/helm-repo/helm-1.0.0.tgz
--------------------------------------------------------------------------------
/test/e2e/testdata/helm-repo/helm2-1.0.0.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/test/e2e/testdata/helm-repo/helm2-1.0.0.tgz
--------------------------------------------------------------------------------
/test/e2e/testdata/helm/templates/config-map.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: my-map
5 | data:
6 | foo: bar
--------------------------------------------------------------------------------
/test/e2e/testdata/helm2/templates/config-map.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: my-map
5 | data:
6 | foo: bar
--------------------------------------------------------------------------------
/test/e2e/testdata/jsonnet-nested-dir-with-imports/include/common.libsonnet:
--------------------------------------------------------------------------------
1 | {
2 | name: 'hello-world',
3 | rootname: 'hello-root',
4 | }
--------------------------------------------------------------------------------
/docs/assets/keycloak-client-scope-selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/keycloak-client-scope-selected.png
--------------------------------------------------------------------------------
/test/e2e/testdata/.hidden-helm/templates/config-map.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: my-map
5 | data:
6 | foo: bar
--------------------------------------------------------------------------------
/test/e2e/testdata/helm3-crd/templates/config-map.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: my-map
5 | data:
6 | foo: bar
--------------------------------------------------------------------------------
/test/e2e/testdata/kustomize/kustomization.yaml:
--------------------------------------------------------------------------------
1 | kind: Kustomization
2 | apiVersion: kustomize.config.k8s.io/v1beta1
3 | resources:
4 | - pod.yaml
--------------------------------------------------------------------------------
/cmd/argocd-server/commands/common.go:
--------------------------------------------------------------------------------
1 | package commands
2 |
3 | const (
4 | // cliName is the name of the CLI
5 | cliName = "argocd-server"
6 | )
7 |
--------------------------------------------------------------------------------
/docs/assets/sync-option-no-prune-sync-status.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/sync-option-no-prune-sync-status.png
--------------------------------------------------------------------------------
/reposerver/repository/testdata/recurse/baz.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMapList
3 | items:
4 | ---
5 | apiVersion: v1
6 | kind: ServiceAccount
7 |
--------------------------------------------------------------------------------
/test/e2e/testdata/helm-crd/templates/instance.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: stable.example.com/v1
2 | kind: CronTab
3 | metadata:
4 | name: {{ .Release.Name }}-inst
--------------------------------------------------------------------------------
/test/fixture/testrepos/ssh_host_ed25519_key.pub:
--------------------------------------------------------------------------------
1 | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAYynaOD/wo8xg3YN4BbdrEozPZ5TvQ3R/qxLzy9gMr8 root@0f72fbb593e1
2 |
--------------------------------------------------------------------------------
/util/gpg/testdata/bad_signature_preeof1.txt:
--------------------------------------------------------------------------------
1 | gpg: Signature made Wed Feb 26 23:22:34 2020 CET
2 | gpg: using RSA key 4AEE18F83AFDEB23
3 |
--------------------------------------------------------------------------------
/util/helm/testdata/helm2-dependency/.helmignore:
--------------------------------------------------------------------------------
1 | .git
2 | # OWNERS file for Kubernetes
3 | OWNERS
4 | # example production yaml
5 | values-production.yaml
--------------------------------------------------------------------------------
/docs/assets/compare-option-ignore-needs-pruning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/docs/assets/compare-option-ignore-needs-pruning.png
--------------------------------------------------------------------------------
/reposerver/repository/testdata/recurse/foo/bar.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMapList
3 | items:
4 | ---
5 | apiVersion: v1
6 | kind: ServiceAccount
7 |
--------------------------------------------------------------------------------
/reposerver/repository/testdata/utf-16/utf-16.yaml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikebryant/argo-cd/master/reposerver/repository/testdata/utf-16/utf-16.yaml
--------------------------------------------------------------------------------
/test/e2e/testdata/helm2-with-dependencies/requirements.yaml:
--------------------------------------------------------------------------------
1 | dependencies:
2 | - name: helm2
3 | repository: "@custom-repo"
4 | version: v1.0.0
5 |
--------------------------------------------------------------------------------
/manifests/ha/base/redis-ha/chart/requirements.yaml:
--------------------------------------------------------------------------------
1 | dependencies:
2 | - name: redis-ha
3 | version: 4.5.3
4 | repository: https://dandydeveloper.github.io/charts
--------------------------------------------------------------------------------
/test/e2e/testdata/helm-values/templates/config-map.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: my-map
5 | data:
6 | foo: {{.Values.foo}}
--------------------------------------------------------------------------------
/manifests/namespace-install/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - ../crds
6 | - ../base
7 |
--------------------------------------------------------------------------------
/resource_customizations/argoproj.io/Rollout/actions/restart/action.lua:
--------------------------------------------------------------------------------
1 | local os = require("os")
2 | obj.spec.restartAt = os.date("!%Y-%m-%dT%XZ")
3 | return obj
4 |
--------------------------------------------------------------------------------
/test/e2e/testdata/config-map/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 |
5 | resources:
6 | - config-map.yaml
7 |
--------------------------------------------------------------------------------
/hack/installers/install-lint-tools.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eux -o pipefail
3 |
4 | GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.26.0
5 |
--------------------------------------------------------------------------------
/manifests/ha/namespace-install/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - ../../crds
6 | - ../base
7 |
--------------------------------------------------------------------------------
/ui/src/app/settings/index.ts:
--------------------------------------------------------------------------------
1 | import {SettingsContainer} from './components/settings-container';
2 |
3 | export default {
4 | component: SettingsContainer
5 | };
6 |
--------------------------------------------------------------------------------
/ui/src/app/user-info/index.ts:
--------------------------------------------------------------------------------
1 | import {UserInfoContainer} from './components/user-info-container';
2 |
3 | export default {
4 | component: UserInfoContainer
5 | };
6 |
--------------------------------------------------------------------------------
/manifests/crds/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - application-crd.yaml
6 | - appproject-crd.yaml
7 |
--------------------------------------------------------------------------------
/pkg/client/clientset/versioned/doc.go:
--------------------------------------------------------------------------------
1 | // Code generated by client-gen. DO NOT EDIT.
2 |
3 | // This package has the automatically generated clientset.
4 | package versioned
5 |
--------------------------------------------------------------------------------
/pkg/client/clientset/versioned/fake/doc.go:
--------------------------------------------------------------------------------
1 | // Code generated by client-gen. DO NOT EDIT.
2 |
3 | // This package has the automatically generated fake clientset.
4 | package fake
5 |
--------------------------------------------------------------------------------
/manifests/cluster-install/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - ../namespace-install
6 | - ../cluster-rbac
7 |
--------------------------------------------------------------------------------
/test/e2e/testdata/helm-kube-version/templates/config-map.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: my-map
5 | data:
6 | kubeVersion: {{.Capabilities.KubeVersion}}
--------------------------------------------------------------------------------
/test/e2e/testdata/ksonnet/environments/base.libsonnet:
--------------------------------------------------------------------------------
1 | local components = std.extVar("__ksonnet/components");
2 | components + {
3 | // Insert user-specified overrides here.
4 | }
5 |
--------------------------------------------------------------------------------
/test/testdata/static/test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Static test asset page
4 |
5 |
6 | This is a static page.
7 |
8 |
--------------------------------------------------------------------------------
/ui/src/app/applications/index.ts:
--------------------------------------------------------------------------------
1 | import {ApplicationsContainer} from './components/applications-container';
2 |
3 | export default {
4 | component: ApplicationsContainer
5 | };
6 |
--------------------------------------------------------------------------------
/OWNERS:
--------------------------------------------------------------------------------
1 | owners:
2 | - alexmt
3 | - jessesuen
4 |
5 | approvers:
6 | - alexec
7 | - alexmt
8 | - dthomson25
9 | - jannfis
10 | - jessesuen
11 | - mayzhang2000
12 | - rachelwang20
13 |
--------------------------------------------------------------------------------
/manifests/ha/cluster-install/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - ../namespace-install
6 | - ../../cluster-rbac
7 |
--------------------------------------------------------------------------------
/test/e2e/testdata/helm3-crd/Chart.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v2
2 | name: argocd-helm3-crd
3 | description: A Helm chart for Kubernetes
4 | type: application
5 | version: 0.1.0
6 | appVersion: 1.16.0
7 |
--------------------------------------------------------------------------------
/util/gpg/testdata/unknown_signature.txt:
--------------------------------------------------------------------------------
1 | gpg: Signature made Mon Aug 26 20:59:48 2019 CEST
2 | gpg: using RSA key 4AEE18F83AFDEB23
3 | gpg: Can't check signature: No public key
4 |
--------------------------------------------------------------------------------
/util/helm/version.go:
--------------------------------------------------------------------------------
1 | package helm
2 |
3 | import "github.com/Masterminds/semver"
4 |
5 | func IsVersion(text string) bool {
6 | _, err := semver.NewVersion(text)
7 | return err == nil
8 | }
9 |
--------------------------------------------------------------------------------
/examples/known-hosts/argocd-known-hosts.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: ConfigMap
4 | metadata:
5 | name: argocd-known-hosts
6 | data:
7 | known_hosts: |-
8 |
9 |
--------------------------------------------------------------------------------
/hack/installers/install-codegen-tools.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eux -o pipefail
3 |
4 | KUSTOMIZE_VERSION=3.8.1 "$(dirname $0)/../install.sh" helm2-linux jq-linux kustomize-linux protoc-linux swagger-linux
--------------------------------------------------------------------------------
/pkg/client/clientset/versioned/scheme/doc.go:
--------------------------------------------------------------------------------
1 | // Code generated by client-gen. DO NOT EDIT.
2 |
3 | // This package contains the scheme of the automatically generated clientset.
4 | package scheme
5 |
--------------------------------------------------------------------------------
/pkg/client/clientset/versioned/typed/application/v1alpha1/fake/doc.go:
--------------------------------------------------------------------------------
1 | // Code generated by client-gen. DO NOT EDIT.
2 |
3 | // Package fake has the automatically generated clients.
4 | package fake
5 |
--------------------------------------------------------------------------------
/resource_customizations/apps/DaemonSet/actions/action_test.yaml:
--------------------------------------------------------------------------------
1 | actionTests:
2 | - action: restart
3 | inputPath: testdata/daemonset.yaml
4 | expectedOutputPath: testdata/daemonset-restarted.yaml
5 |
--------------------------------------------------------------------------------
/test/e2e/testdata/hook-custom-health/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | bases:
5 | - ../guestbook
6 |
7 | resources:
8 | - config-map.yaml
--------------------------------------------------------------------------------
/util/helm/testdata/api-versions/templates/sample.yaml:
--------------------------------------------------------------------------------
1 | {{ if .Capabilities.APIVersions.Has "sample/v2" }}
2 | apiVersion: "sample/v2"
3 | {{ else }}
4 | apiVersion: "sample/v1" {{ end }}
5 | kind: Test
--------------------------------------------------------------------------------
/pkg/client/clientset/versioned/typed/application/v1alpha1/doc.go:
--------------------------------------------------------------------------------
1 | // Code generated by client-gen. DO NOT EDIT.
2 |
3 | // This package has the automatically generated typed clients.
4 | package v1alpha1
5 |
--------------------------------------------------------------------------------
/resource_customizations/apps/Deployment/actions/action_test.yaml:
--------------------------------------------------------------------------------
1 | actionTests:
2 | - action: restart
3 | inputPath: testdata/deployment.yaml
4 | expectedOutputPath: testdata/deployment-restarted.yaml
5 |
--------------------------------------------------------------------------------
/test/e2e/testdata/hook-custom-health/config-map.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: my-map
5 | annotations:
6 | argocd.argoproj.io/hook: PreSync
7 | data:
8 | foo: bar
--------------------------------------------------------------------------------
/ui/src/app/typings.d.ts:
--------------------------------------------------------------------------------
1 | declare var SYSTEM_INFO: { version: string; };
2 | // suppress TS7016: Could not find a declaration file for module
3 | declare module 'react-diff-view';
4 | declare module 'unidiff';
--------------------------------------------------------------------------------
/manifests/base/config/argocd-cm.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: argocd-cm
5 | labels:
6 | app.kubernetes.io/name: argocd-cm
7 | app.kubernetes.io/part-of: argocd
8 |
--------------------------------------------------------------------------------
/resource_customizations/apps/StatefulSet/actions/action_test.yaml:
--------------------------------------------------------------------------------
1 | actionTests:
2 | - action: restart
3 | inputPath: testdata/statefulset.yaml
4 | expectedOutputPath: testdata/statefulset-restarted.yaml
5 |
--------------------------------------------------------------------------------
/resource_customizations/extensions/DaemonSet/actions/action_test.yaml:
--------------------------------------------------------------------------------
1 | actionTests:
2 | - action: restart
3 | inputPath: testdata/daemonset.yaml
4 | expectedOutputPath: testdata/daemonset-restarted.yaml
5 |
--------------------------------------------------------------------------------
/resource_customizations/extensions/Deployment/actions/action_test.yaml:
--------------------------------------------------------------------------------
1 | actionTests:
2 | - action: restart
3 | inputPath: testdata/deployment.yaml
4 | expectedOutputPath: testdata/deployment-restarted.yaml
5 |
--------------------------------------------------------------------------------
/test/e2e/testdata/guestbook/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - ./guestbook-ui-deployment.yaml
6 | - ./guestbook-ui-svc.yaml
7 |
--------------------------------------------------------------------------------
/test/e2e/testdata/ssh-kustomize-base/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | bases:
5 | - ssh://root@localhost:2222/tmp/argo-e2e/testdata.git//config-map
6 |
--------------------------------------------------------------------------------
/ui/src/app/applications/components/applications-list/applications-tiles.scss:
--------------------------------------------------------------------------------
1 | .applications-tiles {
2 | .argo-table-list__row {
3 | padding-top: 0;
4 | padding-bottom: 0;
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/manifests/base/repo-server/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - argocd-repo-server-deployment.yaml
6 | - argocd-repo-server-service.yaml
7 |
--------------------------------------------------------------------------------
/pkg/apis/application/v1alpha1/doc.go:
--------------------------------------------------------------------------------
1 | // Package v1alpha1 is the v1alpha1 version of the API.
2 | // +groupName=argoproj.io
3 | // +k8s:deepcopy-gen=package,register
4 | // +k8s:openapi-gen=true
5 | package v1alpha1
6 |
--------------------------------------------------------------------------------
/reposerver/repository/testdata/null-list/null-list.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMapList
3 | items:
4 | ---
5 | apiVersion: v1
6 | kind: ServiceAccount
7 | metadata:
8 | name: prometheus-operator-operator
9 |
--------------------------------------------------------------------------------
/test/e2e/testdata/crashing-guestbook/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | bases:
5 | - ../guestbook
6 |
7 | patches:
8 | - guestbook-deployment.yaml
9 |
--------------------------------------------------------------------------------
/test/e2e/testdata/guestbook_local/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - ./guestbook-ui-deployment.yaml
6 | - ./guestbook-ui-svc.yaml
7 |
--------------------------------------------------------------------------------
/ui/src/app/settings/components/project-role-jwt-tokens/project-role-jwt-tokens.scss:
--------------------------------------------------------------------------------
1 | .project-role-jwt-tokens__hide-token {
2 | position: absolute;
3 | right: 1em;
4 | top: 1em;
5 | cursor: pointer;
6 | }
--------------------------------------------------------------------------------
/reposerver/repository/testdata/empty-list/empty-list.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMapList
3 | items: []
4 | ---
5 | apiVersion: v1
6 | kind: ServiceAccount
7 | metadata:
8 | name: prometheus-operator-operator
9 |
--------------------------------------------------------------------------------
/test/e2e/testdata/helm-with-dependencies/Chart.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v2
2 | name: helm-with-dependencies
3 | version: v1.0.0
4 | dependencies:
5 | - name: helm
6 | repository: "@custom-repo"
7 | version: v1.0.0
8 |
--------------------------------------------------------------------------------
/ui/src/app/user-info/components/user-info-overview/user-info-overview.scss:
--------------------------------------------------------------------------------
1 | @import 'node_modules/argo-ui/src/styles/config';
2 |
3 | .user-info-overview {
4 | &__panel {
5 | margin: 18px 0;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/manifests/base/config/argocd-rbac-cm.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: argocd-rbac-cm
5 | labels:
6 | app.kubernetes.io/name: argocd-rbac-cm
7 | app.kubernetes.io/part-of: argocd
8 |
--------------------------------------------------------------------------------
/pkg/apiclient/project/forwarder_overwrite.go:
--------------------------------------------------------------------------------
1 | package project
2 |
3 | import (
4 | "github.com/argoproj/pkg/grpc/http"
5 | )
6 |
7 | func init() {
8 | forward_ProjectService_List_0 = http.UnaryForwarder
9 | }
10 |
--------------------------------------------------------------------------------
/test/fixture/testrepos/ssh_host_ecdsa_key.pub:
--------------------------------------------------------------------------------
1 | ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCk3mMbdKoeHKJvXHoPAHa0D8ZZnuGbNN0iM9Lo0o52V7vErpBmKb0qkmGajVqR7XvflAHhkmSfIDXLz4/Pxp4E= root@0f72fbb593e1
2 |
--------------------------------------------------------------------------------
/ui/src/app/applications/components/resource-label.ts:
--------------------------------------------------------------------------------
1 | import {resources} from './resources';
2 |
3 | export const ResourceLabel = ({kind}: {kind: string}) => {
4 | return resources.get(kind) || kind.toLowerCase();
5 | };
6 |
--------------------------------------------------------------------------------
/util/helm/testdata/redis/OWNERS:
--------------------------------------------------------------------------------
1 | approvers:
2 | - prydonius
3 | - tompizmor
4 | - sameersbn
5 | - carrodher
6 | - juan131
7 | reviewers:
8 | - prydonius
9 | - tompizmor
10 | - sameersbn
11 | - carrodher
12 | - juan131
--------------------------------------------------------------------------------
/test/e2e/testdata/https-kustomize-base/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | bases:
5 | - https://localhost:9443/argo-e2e/testdata.git//guestbook
6 |
7 | namePrefix: child-
--------------------------------------------------------------------------------
/hack/versions.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Update required versions of dependencies here whenever you change them in
3 | # go.mod
4 | kube_version=v0.19.2
5 | grpc_version=v1.26.0
6 | protobuf_version=v1.3.2
7 | grpc_gateway_version=v1.12.2
8 |
--------------------------------------------------------------------------------
/manifests/base/config/argocd-gpg-keys-cm.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-gpg-keys-cm
6 | app.kubernetes.io/part-of: argocd
7 | name: argocd-gpg-keys-cm
8 |
--------------------------------------------------------------------------------
/manifests/base/config/argocd-secret.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Secret
3 | metadata:
4 | name: argocd-secret
5 | labels:
6 | app.kubernetes.io/name: argocd-secret
7 | app.kubernetes.io/part-of: argocd
8 | type: Opaque
9 |
--------------------------------------------------------------------------------
/manifests/ha/base/redis-ha/overlays/service-selector.yaml:
--------------------------------------------------------------------------------
1 | - {op: remove, path: /spec/selector/app}
2 | - {op: remove, path: /spec/selector/release}
3 | - {op: add, path: /spec/selector/app.kubernetes.io~1name, value: argocd-redis-ha}
4 |
--------------------------------------------------------------------------------
/ui/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "bracketSpacing": false,
3 | "jsxSingleQuote": true,
4 | "printWidth": 180,
5 | "singleQuote": true,
6 | "tabWidth": 4,
7 | "jsxBracketSameLine": true,
8 | "quoteProps": "consistent"
9 | }
10 |
--------------------------------------------------------------------------------
/util/helm/testdata/helm2-dependency/OWNERS:
--------------------------------------------------------------------------------
1 | approvers:
2 | - prydonius
3 | - tompizmor
4 | - sameersbn
5 | - carrodher
6 | - juan131
7 | reviewers:
8 | - prydonius
9 | - tompizmor
10 | - sameersbn
11 | - carrodher
12 | - juan131
--------------------------------------------------------------------------------
/util/kube/testdata/svc.yaml:
--------------------------------------------------------------------------------
1 | kind: Service
2 | apiVersion: v1
3 | metadata:
4 | name: my-service
5 | spec:
6 | selector:
7 | app: MyApp
8 | ports:
9 | - protocol: TCP
10 | port: 80
11 | targetPort: 9376
12 |
--------------------------------------------------------------------------------
/test/e2e/testdata/guestbook/guestbook-ui-svc.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: guestbook-ui
5 | spec:
6 | ports:
7 | - port: 80
8 | targetPort: 80
9 | selector:
10 | app: guestbook-ui
11 |
--------------------------------------------------------------------------------
/test/fixture/test/flaky.go:
--------------------------------------------------------------------------------
1 | package test
2 |
3 | import (
4 | "testing"
5 | )
6 |
7 | // invoke this method to indicate it is a flaky test that should be skipped on CI
8 | func Flaky(t *testing.T) {
9 | LocalOnly(t)
10 | }
11 |
--------------------------------------------------------------------------------
/util/gpg/testdata/bad_signature_bad.txt:
--------------------------------------------------------------------------------
1 | gpg: Signature made Wed Feb 26 23:22:34 2020 CET
2 | gpg: using RSA key 4AEE18F83AFDEB23
3 | gpg: BAD signature from "GitHub (web-flow commit signing) " [ultimate]
4 |
--------------------------------------------------------------------------------
/util/gpg/testdata/good_signature.txt:
--------------------------------------------------------------------------------
1 | gpg: Signature made Wed Feb 26 23:22:34 2020 CET
2 | gpg: using RSA key 4AEE18F83AFDEB23
3 | gpg: Good signature from "GitHub (web-flow commit signing) " [ultimate]
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .vscode/
2 | .idea/
3 | .DS_Store
4 | vendor/
5 | dist/
6 | site/
7 | *.iml
8 | # delve debug binaries
9 | cmd/**/debug
10 | debug.test
11 | coverage.out
12 | test-results
13 | .scannerwork
14 | .scratch
15 | node_modules/
16 |
--------------------------------------------------------------------------------
/manifests/base/config/argocd-tls-certs-cm.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-tls-certs-cm
6 | app.kubernetes.io/part-of: argocd
7 | name: argocd-tls-certs-cm
8 | data:
--------------------------------------------------------------------------------
/manifests/ha/base/redis-ha/overlays/modify-labels.yaml:
--------------------------------------------------------------------------------
1 | - op: replace
2 | path: /metadata/labels
3 | value:
4 | app.kubernetes.io/name: argocd-redis-ha
5 | app.kubernetes.io/component: redis
6 | app.kubernetes.io/part-of: argocd
7 |
--------------------------------------------------------------------------------
/reposerver/repository/testdata/jsonnet/params.libsonnet:
--------------------------------------------------------------------------------
1 | {
2 | containerPort: 80,
3 | image: "gcr.io/heptio-images/ks-guestbook-demo:0.2",
4 | name: "guestbook-ui",
5 | replicas: 1,
6 | servicePort: 80,
7 | type: "ClusterIP",
8 | }
9 |
--------------------------------------------------------------------------------
/test/e2e/testdata/guestbook_local/guestbook-ui-svc.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: guestbook-ui
5 | spec:
6 | ports:
7 | - port: 81
8 | targetPort: 81
9 | selector:
10 | app: guestbook-ui
11 |
--------------------------------------------------------------------------------
/test/e2e/testdata/jsonnet-nested-dir-with-imports/apps/test-root.jsonnet:
--------------------------------------------------------------------------------
1 | local common = import '../include/common.libsonnet';
2 |
3 | {
4 | apiVersion: 'v1',
5 | kind: 'Namespace',
6 | metadata: {
7 | name: common.rootname,
8 | }
9 | }
--------------------------------------------------------------------------------
/test/e2e/testdata/service/service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: my-service
5 | spec:
6 | selector:
7 | app: MyApp
8 | ports:
9 | - protocol: TCP
10 | port: 80
11 | targetPort: 9376
--------------------------------------------------------------------------------
/docs/user-guide/index.md:
--------------------------------------------------------------------------------
1 | # Overview
2 |
3 | This guide is for developers who have Argo CD installed for them and are managing applications.
4 |
5 | !!! note
6 | Please make sure you've completed the [getting started guide](../getting_started.md).
--------------------------------------------------------------------------------
/manifests/ha/base/redis-ha/overlays/haproxy-service-selector.yaml:
--------------------------------------------------------------------------------
1 | - {op: remove, path: /spec/selector/app}
2 | - {op: remove, path: /spec/selector/release}
3 | - {op: add, path: /spec/selector/app.kubernetes.io~1name, value: argocd-redis-ha-haproxy}
4 |
--------------------------------------------------------------------------------
/pkg/client/clientset/versioned/typed/application/v1alpha1/generated_expansion.go:
--------------------------------------------------------------------------------
1 | // Code generated by client-gen. DO NOT EDIT.
2 |
3 | package v1alpha1
4 |
5 | type AppProjectExpansion interface{}
6 |
7 | type ApplicationExpansion interface{}
8 |
--------------------------------------------------------------------------------
/reposerver/repository/testdata/weird-list/weird-list.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: NotAList
3 | items:
4 | spec:
5 | foo: bar
6 | ---
7 | apiVersion: v1
8 | kind: ServiceAccount
9 | metadata:
10 | name: prometheus-operator-operator
11 |
--------------------------------------------------------------------------------
/util/gpg/testdata/bad_signature_badkeyid.txt:
--------------------------------------------------------------------------------
1 | gpg: Signature made Wed Feb 26 23:22:34 2020 CET
2 | gpg: using RSA key 5F4AEE18F83AFDEB23
3 | gpg: Good signature from "GitHub (web-flow commit signing) " [ultimate]
4 |
--------------------------------------------------------------------------------
/util/gpg/testdata/bad_signature_malformed2.txt:
--------------------------------------------------------------------------------
1 | gpg: Signature made Wed Feb 26 23:22:34 2020 CET
2 | gpg: using RSA key noreply@github.com
3 | gpg: Good signature from "GitHub (web-flow commit signing) " [ultimate]
4 |
--------------------------------------------------------------------------------
/util/gpg/testdata/bad_signature_malformed3.txt:
--------------------------------------------------------------------------------
1 | gpg: Signature made Wed Feb 26 23:22:34 2020 CET
2 | gpg: using RSA key 4AEE18F83AFDEB23
3 | gpg: Good signature from "GitHub (web-flow commit signing)" " [ultimate]
4 |
--------------------------------------------------------------------------------
/util/hash/hash.go:
--------------------------------------------------------------------------------
1 | package hash
2 |
3 | import (
4 | "hash/fnv"
5 | )
6 |
7 | // FNVa computes a FNVa hash on a string
8 | func FNVa(s string) uint32 {
9 | h := fnv.New32a()
10 | _, _ = h.Write([]byte(s))
11 | return h.Sum32()
12 | }
13 |
--------------------------------------------------------------------------------
/test/e2e/testdata/deprecated-extensions/network-policy.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: NetworkPolicy
3 | metadata:
4 | name: allow-default
5 | spec:
6 | podSelector: {}
7 | policyTypes:
8 | - Ingress
9 | - Egress
10 |
--------------------------------------------------------------------------------
/util/gpg/testdata/bad_signature_malformed1.txt:
--------------------------------------------------------------------------------
1 | gpg: Signature was made Wed Feb 26 23:22:34 2020 CET
2 | gpg: using RSA key 4AEE18F83AFDEB23
3 | gpg: Good signature from "GitHub (web-flow commit signing) " [ultimate]
4 |
--------------------------------------------------------------------------------
/util/helm/testdata/helm2-dependency/requirements.yaml:
--------------------------------------------------------------------------------
1 | dependencies:
2 | - name: mariadb
3 | version: 4.x.x
4 | repository: https://kubernetes-charts.storage.googleapis.com/
5 | condition: mariadb.enabled
6 | tags:
7 | - wordpress-database
8 |
--------------------------------------------------------------------------------
/manifests/ha/base/redis-ha/overlays/haproxy-modify-labels.yaml:
--------------------------------------------------------------------------------
1 | - op: replace
2 | path: /metadata/labels
3 | value:
4 | app.kubernetes.io/name: argocd-redis-ha-haproxy
5 | app.kubernetes.io/component: redis
6 | app.kubernetes.io/part-of: argocd
7 |
--------------------------------------------------------------------------------
/reposerver/repository/testdata/app-parameters/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - guestbook.yaml
6 | images:
7 | - name: gcr.io/heptio-images/ks-guestbook-demo
8 | newTag: "0.2"
9 |
--------------------------------------------------------------------------------
/test/e2e/testdata/guestbook-with-namespace/guestbook-ui-svc.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: guestbook-ui
5 | spec:
6 | ports:
7 | - port: 80
8 | targetPort: 80
9 | selector:
10 | app: guestbook-ui
11 |
--------------------------------------------------------------------------------
/test/e2e/testdata/jsonnet-ext-var/config-map.jsonnet:
--------------------------------------------------------------------------------
1 | {
2 | apiVersion: 'v1',
3 | kind: 'ConfigMap',
4 | metadata: {
5 | name: 'my-map',
6 | },
7 | data: {
8 | foo: std.extVar('foo'),
9 | bar: std.extVar('bar'),
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/test/e2e/testdata/jsonnet-nested-dir-with-imports/apps/nested/directory/test.jsonnet:
--------------------------------------------------------------------------------
1 | local common = import '../../../include/common.libsonnet';
2 |
3 | {
4 | apiVersion: 'v1',
5 | kind: 'Namespace',
6 | metadata: {
7 | name: common.name,
8 | }
9 | }
--------------------------------------------------------------------------------
/test/e2e/testdata/networking/guestbook-ui-svc.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: guestbook-ui
5 | spec:
6 | ports:
7 | - port: 80
8 | targetPort: 80
9 | selector:
10 | app: guestbook-ui
11 | type: LoadBalancer
--------------------------------------------------------------------------------
/test/fixture/revision_metadata/author_test.go:
--------------------------------------------------------------------------------
1 | package revision_metadata
2 |
3 | import (
4 | "testing"
5 |
6 | "github.com/stretchr/testify/assert"
7 | )
8 |
9 | func TestAuthor(t *testing.T) {
10 | assert.Regexp(t, ".*<.*>", Author)
11 | }
12 |
--------------------------------------------------------------------------------
/ui/src/app/shared/components/yaml-editor/yaml-editor.scss:
--------------------------------------------------------------------------------
1 | .yaml-editor {
2 | position: relative;
3 |
4 | &__buttons {
5 | position: absolute;
6 | right: 1em;
7 | top: 1em;
8 | z-index: 1;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/docs/operator-manual/index.md:
--------------------------------------------------------------------------------
1 | # Overview
2 |
3 | This guide is for administrator and operator wanting to install and configure Argo CD for other developers.
4 |
5 | !!! note
6 | Please make sure you've completed the [getting started guide](../getting_started.md).
--------------------------------------------------------------------------------
/manifests/base/server/argocd-server-sa.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ServiceAccount
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-server
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: server
8 | name: argocd-server
9 |
--------------------------------------------------------------------------------
/manifests/ha/base/redis-ha/chart/values.yaml:
--------------------------------------------------------------------------------
1 | redis-ha:
2 | persistentVolume:
3 | enabled: false
4 | redis:
5 | masterGroupName: argocd
6 | config:
7 | save: "\"\""
8 | haproxy:
9 | enabled: true
10 | image:
11 | tag: 5.0.8-alpine
--------------------------------------------------------------------------------
/test/e2e/testdata/crd-creation/README.md:
--------------------------------------------------------------------------------
1 | ```
2 | argocd app create crd-creation \
3 | --repo https://github.com/argoproj/argo-cd.git \
4 | --path test/e2e/functional/crd-creation \
5 | --dest-server https://kubernetes.default.svc \
6 | --dest-namespace default
7 | ```
--------------------------------------------------------------------------------
/test/e2e/testdata/networking/guestbook-ui-internal-svc.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: guestbook-ui-internal
5 | spec:
6 | ports:
7 | - port: 80
8 | targetPort: 80
9 | selector:
10 | app: guestbook-ui
11 | type: ClusterIP
--------------------------------------------------------------------------------
/manifests/base/dex/argocd-dex-server-sa.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ServiceAccount
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-dex-server
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: dex-server
8 | name: argocd-dex-server
9 |
--------------------------------------------------------------------------------
/test/e2e/testdata/guestbook-with-namespace/guestbook-ui-svc-ns.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: guestbook-ui
5 | namespace: namespace
6 | spec:
7 | ports:
8 | - port: 80
9 | targetPort: 80
10 | selector:
11 | app: guestbook-ui
12 |
--------------------------------------------------------------------------------
/test/e2e/testdata/kustomize/pod.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Pod
3 | metadata:
4 | name: pod
5 | spec:
6 | containers:
7 | - name: main
8 | image: alpine:3.10.2
9 | imagePullPolicy: IfNotPresent
10 | command:
11 | - "true"
12 | restartPolicy: Never
--------------------------------------------------------------------------------
/test/manifests/base/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | bases:
5 | - ../../../manifests/crds
6 | - ../../../manifests/base/config
7 | - ../../../manifests/cluster-rbac
8 |
9 | patchesStrategicMerge:
10 | - patches.yaml
--------------------------------------------------------------------------------
/ui/src/app/shared/utils.ts:
--------------------------------------------------------------------------------
1 | export function hashCode(str: string) {
2 | let hash = 0;
3 | for (let i = 0; i < str.length; i++) {
4 | // tslint:disable-next-line:no-bitwise
5 | hash = ~~((hash << 5) - hash + str.charCodeAt(i));
6 | }
7 | return hash;
8 | }
9 |
--------------------------------------------------------------------------------
/hack/installers/install-dep-linux.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eux -o pipefail
3 |
4 | [ -e $DOWNLOADS/dep ] || curl -sLf --retry 3 -o $DOWNLOADS/dep https://github.com/golang/dep/releases/download/v0.5.3/dep-linux-$ARCHITECTURE
5 | cp $DOWNLOADS/dep $BIN/
6 | chmod +x $BIN/dep
7 | dep version
8 |
--------------------------------------------------------------------------------
/test/e2e/testdata/hook/pod.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Pod
3 | metadata:
4 | name: pod
5 | spec:
6 | containers:
7 | - name: main
8 | image: alpine:latest
9 | imagePullPolicy: IfNotPresent
10 | command:
11 | - "true"
12 | restartPolicy: Never
13 |
--------------------------------------------------------------------------------
/test/e2e/testdata/sync-waves/pod-1.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Pod
3 | metadata:
4 | name: pod-1
5 | annotations:
6 | argocd.argoproj.io/sync-wave: "1"
7 | spec:
8 | containers:
9 | - name: main
10 | image: nginx:1.17.4-alpine
11 | imagePullPolicy: IfNotPresent
--------------------------------------------------------------------------------
/test/fixture/log/log.go:
--------------------------------------------------------------------------------
1 | package log
2 |
3 | import (
4 | log "github.com/sirupsen/logrus"
5 | )
6 |
7 | // used to switch logging to debug level for a single func
8 | func Debug() func() {
9 | log.SetLevel(log.DebugLevel)
10 | return func() { log.SetLevel(log.InfoLevel) }
11 | }
12 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/pod.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/manifests/ha/base/redis-ha/chart/requirements.lock:
--------------------------------------------------------------------------------
1 | dependencies:
2 | - name: redis-ha
3 | repository: https://dandydeveloper.github.io/charts
4 | version: 4.5.3
5 | digest: sha256:79e2a60f86c34dcd2c81217f111ef6dfb55e949dd71cc43aebf6a679dc27c042
6 | generated: "2020-04-06T18:11:37.013005+09:00"
7 |
--------------------------------------------------------------------------------
/test/e2e/testdata/guestbook-with-namespace/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - ./guestbook-ui-deployment.yaml
6 | - ./guestbook-ui-svc.yaml
7 | - ./guestbook-ui-deployment-ns.yaml
8 | - ./guestbook-ui-svc-ns.yaml
9 |
--------------------------------------------------------------------------------
/test/e2e/testdata/sync-waves/pod-2.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Pod
3 | metadata:
4 | name: pod-2
5 | annotations:
6 | argocd.argoproj.io/sync-wave: "2"
7 | spec:
8 | containers:
9 | - name: main
10 | image: nginx:1.17.4-alpine
11 | imagePullPolicy: IfNotPresent
12 |
--------------------------------------------------------------------------------
/test/e2e/testdata/cluster-role/pod.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Pod
3 | metadata:
4 | name: my-pod
5 | spec:
6 | containers:
7 | - name: main
8 | image: alpine:3.10.2
9 | imagePullPolicy: IfNotPresent
10 | command:
11 | - "true"
12 | restartPolicy: Never
13 |
--------------------------------------------------------------------------------
/test/e2e/testdata/global-with-no-namesapce/console.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: config.openshift.io/v1
3 | kind: Console
4 | metadata:
5 | name: cluster
6 | annotations:
7 | argocd.argoproj.io/sync-options: Prune=false
8 | spec:
9 | authentication:
10 | logoutRedirect: "https://google.com"
--------------------------------------------------------------------------------
/test/e2e/testdata/two-nice-pods/pod-1.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Pod
3 | metadata:
4 | name: pod-1
5 | spec:
6 | containers:
7 | - name: main
8 | image: alpine:3.10.2
9 | imagePullPolicy: IfNotPresent
10 | command:
11 | - "true"
12 | restartPolicy: Never
13 |
--------------------------------------------------------------------------------
/test/e2e/testdata/two-nice-pods/pod-2.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Pod
3 | metadata:
4 | name: pod-2
5 | spec:
6 | containers:
7 | - name: main
8 | image: alpine:3.10.2
9 | imagePullPolicy: IfNotPresent
10 | command:
11 | - "true"
12 | restartPolicy: Never
13 |
--------------------------------------------------------------------------------
/docs/operator-manual/upgrading/1.2-1.3.md:
--------------------------------------------------------------------------------
1 | # v1.2 to 1.3
2 |
3 | # API Changes
4 |
5 | The 1.3 release introduces backward incompatible changes in some public Argo CD APIs. Please make sure to upgrade
6 | Argo CD CLI to v1.3.
7 |
8 | From here on you can follow the [regular upgrade process](./overview.md).
--------------------------------------------------------------------------------
/manifests/base/config/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - argocd-cm.yaml
6 | - argocd-secret.yaml
7 | - argocd-rbac-cm.yaml
8 | - argocd-ssh-known-hosts-cm.yaml
9 | - argocd-tls-certs-cm.yaml
10 | - argocd-gpg-keys-cm.yaml
11 |
--------------------------------------------------------------------------------
/test/e2e/testdata/jsonnet-tla-cm/config-map.jsonnet:
--------------------------------------------------------------------------------
1 | function(foo='foo', bar='bar')
2 | {
3 | apiVersion: 'v1',
4 | kind: 'ConfigMap',
5 | metadata: {
6 | name: 'my-map',
7 | },
8 | data: {
9 | foo: foo,
10 | bar: bar,
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/ui/src/app/shared/services/auth-service.ts:
--------------------------------------------------------------------------------
1 | import {AuthSettings} from '../models';
2 | import requests from './requests';
3 |
4 | export class AuthService {
5 | public settings(): Promise {
6 | return requests.get('/settings').then(res => res.body as AuthSettings);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/util/helm/testdata/helm2-dependency/requirements.lock:
--------------------------------------------------------------------------------
1 | dependencies:
2 | - name: mariadb
3 | repository: https://kubernetes-charts.storage.googleapis.com/
4 | version: 4.3.1
5 | digest: sha256:82a0e5374376169d2ecf7d452c18a2ed93507f5d17c3393a1457f9ffad7e9b26
6 | generated: 2018-08-02T22:07:51.905271776Z
7 |
--------------------------------------------------------------------------------
/SECURITY_CONTACTS:
--------------------------------------------------------------------------------
1 | # Defined below are the security contacts for this repo.
2 | #
3 | # DO NOT REPORT SECURITY VULNERABILITIES DIRECTLY TO THESE NAMES, FOLLOW THE
4 | # INSTRUCTIONS AT https://argoproj.github.io/argo-cd/security_considerations/#reporting-vulnerabilities
5 |
6 | alexmt
7 | edlee2121
8 | jessesuen
9 |
--------------------------------------------------------------------------------
/docs/operator-manual/upgrading/1.0-1.1.md:
--------------------------------------------------------------------------------
1 | # v1.0 to 1.1
2 |
3 | The v1.1 release does not introduce backward incompatible changes. Please note that Kustomize v1.0 is deprecated and
4 | support will be removed in the Argo CD v1.2 release.
5 |
6 | From here on you can follow the [regular upgrade process](./overview.md).
--------------------------------------------------------------------------------
/manifests/base/dex/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - argocd-dex-server-deployment.yaml
6 | - argocd-dex-server-role.yaml
7 | - argocd-dex-server-rolebinding.yaml
8 | - argocd-dex-server-sa.yaml
9 | - argocd-dex-server-service.yaml
10 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/ns.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/util/gpg/testdata/bad_signature_manipulated.txt:
--------------------------------------------------------------------------------
1 | gpg: CRC error; AF65FD - 3ABB26
2 | gpg: [don't know]: invalid packet (ctb=78)
3 | gpg: no signature found
4 | gpg: the signature could not be verified.
5 | Please remember that the signature file (.sig or .asc)
6 | should be the first file given on the command line.
7 |
--------------------------------------------------------------------------------
/manifests/cluster-rbac/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - argocd-application-controller-clusterrole.yaml
6 | - argocd-application-controller-clusterrolebinding.yaml
7 | - argocd-server-clusterrole.yaml
8 | - argocd-server-clusterrolebinding.yaml
9 |
--------------------------------------------------------------------------------
/resource_customizations/argoproj.io/Rollout/actions/resume/action.lua:
--------------------------------------------------------------------------------
1 | if obj.status.pauseConditions ~= nil and table.getn(obj.status.pauseConditions) > 0 then
2 | obj.status.pauseConditions = nil
3 | end
4 |
5 | if obj.spec.paused ~= nil and obj.spec.paused then
6 | obj.spec.paused = false
7 | end
8 |
9 | return obj
--------------------------------------------------------------------------------
/test/e2e/testdata/git-submodule/submodule-pod.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Pod
3 | metadata:
4 | name: pod-in-submodule
5 | spec:
6 | containers:
7 | - name: main
8 | image: alpine:3.10.2
9 | imagePullPolicy: IfNotPresent
10 | command:
11 | - "true"
12 | restartPolicy: Never
13 |
--------------------------------------------------------------------------------
/test/e2e/testdata/kustomize-cm-gen/kustomization.yaml:
--------------------------------------------------------------------------------
1 | configMapGenerator:
2 | - name: my-map
3 | literals:
4 | - foo=bar
5 | generatorOptions:
6 | annotations:
7 | argocd.argoproj.io/compare-options: IgnoreExtraneous
8 | argocd.argoproj.io/sync-options: Prune=false
9 | kind: Kustomization
10 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/deploy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/known-hosts/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | bases:
5 | - github.com/argoproj/argo-cd//manifests/cluster-install?ref=stable
6 |
7 | patchesStrategicMerge:
8 | - argocd-known-hosts-mounts.yaml
9 |
10 | resources:
11 | - argocd-known-hosts.yaml
12 |
--------------------------------------------------------------------------------
/hack/gpg-wrapper.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Simple wrapper around gpg to prevent exit code != 0
3 | ARGS=$*
4 | OUTPUT=$(gpg $ARGS 2>&1)
5 | IFS=''
6 | RET=$?
7 | case "$RET" in
8 | 0)
9 | echo $OUTPUT
10 | ;;
11 | 1)
12 | echo $OUTPUT
13 | RET=0
14 | ;;
15 | *)
16 | echo $OUTPUT >&2
17 | ;;
18 | esac
19 | exit $RET
20 |
--------------------------------------------------------------------------------
/hack/installers/install-jq-linux.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eux -o pipefail
3 |
4 | . $(dirname $0)/../tool-versions.sh
5 |
6 | [ -e $DOWNLOADS/jq ] || curl -sLf --retry 3 -o $DOWNLOADS/jq https://github.com/stedolan/jq/releases/download/jq-${jq_version}/jq-linux64
7 | cp $DOWNLOADS/jq $BIN/jq
8 | chmod +x $BIN/jq
9 | jq --version
--------------------------------------------------------------------------------
/server/settings/oidc/claims.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | option go_package = "github.com/argoproj/argo-cd/server/settings/oidc";
3 |
4 | package github.com.argoproj.argo_cd.server.settings.oidc;
5 |
6 | message Claim {
7 | bool essential = 1;
8 | string value = 2;
9 | repeated string values = 3;
10 | }
11 |
--------------------------------------------------------------------------------
/ui/src/app/applications/components/resource-label.test.ts:
--------------------------------------------------------------------------------
1 | import {ResourceLabel} from './resource-label';
2 |
3 | test('BuiltIn', () => {
4 | expect(ResourceLabel({kind: 'ConfigMap'})).toBe('cm');
5 | });
6 |
7 | test('CustomResource', () => {
8 | expect(ResourceLabel({kind: 'Word'})).toBe('word');
9 | });
10 |
--------------------------------------------------------------------------------
/test/e2e/testdata/crashing-guestbook/guestbook-deployment.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | name: guestbook-ui
5 | spec:
6 | replicas: 0
7 | progressDeadlineSeconds: 3
8 | template:
9 | spec:
10 | containers:
11 | - name: guestbook-ui
12 | command: ["fail"]
13 |
--------------------------------------------------------------------------------
/ui/scripts/build_docker.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -e
4 |
5 | TAG=${IMAGE_TAG:-'latest'}
6 |
7 | docker build --build-arg ARGO_VERSION=${TAG} -t ${IMAGE_NAMESPACE:-`whoami`}/argocd-ui:${TAG} .
8 |
9 | if [ "$DOCKER_PUSH" == "true" ]
10 | then
11 | docker push ${IMAGE_NAMESPACE:-`whoami`}/argocd-ui:${TAG}
12 | fi
13 |
--------------------------------------------------------------------------------
/hack/git-ask-pass.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # This script is used as the command supplied to GIT_ASKPASS as a way to supply username/password
3 | # credentials to git, without having to use git credentials helpers, or having on-disk config.
4 | case "$1" in
5 | Username*) echo "${GIT_USERNAME}" ;;
6 | Password*) echo "${GIT_PASSWORD}" ;;
7 | esac
8 |
--------------------------------------------------------------------------------
/manifests/base/server/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - argocd-server-deployment.yaml
6 | - argocd-server-role.yaml
7 | - argocd-server-rolebinding.yaml
8 | - argocd-server-sa.yaml
9 | - argocd-server-service.yaml
10 | - argocd-server-metrics.yaml
11 |
--------------------------------------------------------------------------------
/reposerver/repository/testdata/concatenated/concatenated.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: ServiceAccount
4 | metadata:
5 | name: sa1
6 | ---
7 | apiVersion: v1
8 | kind: ServiceAccount
9 | metadata:
10 | name: sa2
11 | ---
12 | ---
13 | apiVersion: v1
14 | kind: ServiceAccount
15 | metadata:
16 | name: sa3
17 | ---
18 |
--------------------------------------------------------------------------------
/util/kube/testdata/job.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: batch/v1
2 | kind: Job
3 | metadata:
4 | name: pi
5 | spec:
6 | template:
7 | spec:
8 | containers:
9 | - name: pi
10 | image: perl
11 | command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
12 | restartPolicy: Never
13 | backoffLimit: 4
14 |
--------------------------------------------------------------------------------
/Dockerfile.dev:
--------------------------------------------------------------------------------
1 | ####################################################################################################
2 | # argocd-dev
3 | ####################################################################################################
4 | FROM argocd-base
5 | COPY argocd* /usr/local/bin/
6 | COPY --from=argocd-ui ./src/dist/app /shared/app
7 |
--------------------------------------------------------------------------------
/manifests/base/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 |
5 | images:
6 | - name: argoproj/argocd
7 | newName: argoproj/argocd
8 | newTag: latest
9 | resources:
10 | - ./application-controller
11 | - ./dex
12 | - ./repo-server
13 | - ./server
14 | - ./config
15 | - ./redis
16 |
--------------------------------------------------------------------------------
/manifests/base/application-controller/argocd-application-controller-sa.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ServiceAccount
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-application-controller
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: application-controller
8 | name: argocd-application-controller
9 |
--------------------------------------------------------------------------------
/test/e2e/testdata/bad-servicecatalog/servicecatalog-svc.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: service-catalog-apiserver
5 | namespace: default
6 | spec:
7 | ports:
8 | - name: secure
9 | port: 443
10 | protocol: TCP
11 | targetPort: 8443
12 | selector:
13 | app: service-catalog-apiserver
14 |
--------------------------------------------------------------------------------
/test/e2e/testdata/hook/hook.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Pod
3 | metadata:
4 | annotations:
5 | argocd.argoproj.io/hook: Sync
6 | name: hook
7 | spec:
8 | containers:
9 | - command:
10 | - "true"
11 | image: "alpine:latest"
12 | imagePullPolicy: IfNotPresent
13 | name: main
14 | restartPolicy: Never
--------------------------------------------------------------------------------
/ui/src/app/shared/services/version-service.ts:
--------------------------------------------------------------------------------
1 | import {VersionMessage} from '../models';
2 | import requests from './requests';
3 |
4 | export class VersionService {
5 | public version(): Promise {
6 | return requests.agent.get(requests.toAbsURL('/api/version')).then(res => res.body as VersionMessage);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/job.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/util/helm/version_test.go:
--------------------------------------------------------------------------------
1 | package helm
2 |
3 | import (
4 | "testing"
5 |
6 | "github.com/stretchr/testify/assert"
7 | )
8 |
9 | func TestIsVersion(t *testing.T) {
10 | assert.False(t, IsVersion("*"))
11 | assert.False(t, IsVersion("1.*"))
12 | assert.False(t, IsVersion("1.0.*"))
13 | assert.True(t, IsVersion("1.0.0"))
14 | }
15 |
--------------------------------------------------------------------------------
/test/e2e/testdata/sync-options-validate-false/invalid-cm.yaml:
--------------------------------------------------------------------------------
1 | # This configmap fails when running `kubectl apply`, but succeeds when running `kubectl apply --validate=false`
2 | apiVersion: v1
3 | kind: ConfigMap
4 | metadata:
5 | name: invalid-cm
6 | annotations:
7 | argocd.argoproj.io/sync-options: Validate=false
8 | invalidKey: this-fails
9 |
--------------------------------------------------------------------------------
/util/text/text.go:
--------------------------------------------------------------------------------
1 | package text
2 |
3 | import "strings"
4 |
5 | // truncates messages to n characters
6 | func Trunc(message string, n int) string {
7 | if len(message) > n {
8 | return message[0:n-3] + "..."
9 | }
10 | return message
11 | }
12 |
13 | func SemVer(s string) string {
14 | return strings.ReplaceAll(s, "+", "")
15 | }
16 |
--------------------------------------------------------------------------------
/test/container/uid_entrypoint.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -e
3 |
4 | if test "$(id -u)" == "0" -a "${USER_ID}" != ""; then
5 | useradd -u ${USER_ID} -d /home/user -s /bin/bash ${USER_NAME:-default}
6 | chown -R "${USER_NAME:-default}" ${GOCACHE}
7 | fi
8 |
9 | export PATH=$PATH:/usr/local/go/bin:/go/bin
10 | export GOROOT=/usr/local/go
11 |
12 | exec "$@"
--------------------------------------------------------------------------------
/test/e2e/testdata/secrets/secrets.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: Secret
4 | metadata:
5 | name: test-secret
6 | stringData:
7 | username: test-username
8 | data:
9 | password: dGVzdC1wYXNzd29yZA==
10 |
11 | ---
12 | apiVersion: v1
13 | kind: Secret
14 | metadata:
15 | name: test-secret2
16 | stringData:
17 | username: test-username
18 |
--------------------------------------------------------------------------------
/test/e2e/testdata/deprecated-extensions/ingress.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Ingress
3 | metadata:
4 | name: extensions-ingress
5 | spec:
6 | rules:
7 | - host: extensions-ingress
8 | http:
9 | paths:
10 | - backend:
11 | serviceName: extensions-service
12 | servicePort: 8080
13 | path: /
14 |
--------------------------------------------------------------------------------
/ui/src/app/shared/components/repo.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import {repoUrl} from './urls';
3 |
4 | export const Repo = ({url, children}: {url: string; children?: React.ReactNode}) => {
5 | const href = repoUrl(url);
6 | const content = children || url;
7 | return href !== null ? {content} : {content};
8 | };
9 |
--------------------------------------------------------------------------------
/ui/src/app/shared/components/timestamp.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import Moment from 'react-moment';
3 |
4 | export const Timestamp = ({date}: {date: string | number}) => {
5 | return (
6 |
7 | {date} ({date})
8 |
9 | );
10 | };
11 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/limits.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | # Prevent vendor directory from being copied to ensure we are not not pulling unexpected cruft from
2 | # a user's workspace, and are only building off of what is locked by dep.
3 | .vscode/
4 | .idea/
5 | .DS_Store
6 | vendor/
7 | dist/
8 | *.iml
9 | # delve debug binaries
10 | cmd/**/debug
11 | debug.test
12 | coverage.out
13 | ui/node_modules/
14 |
--------------------------------------------------------------------------------
/docs/user-guide/selective_sync.md:
--------------------------------------------------------------------------------
1 | # Selective Sync
2 |
3 | A *selective sync* is one where only some resources are sync'd. You can choose which resources from the UI:
4 |
5 | 
6 |
7 | When doing so, bear in mind:
8 |
9 | * Your sync is not recorded in the history, and so rollback is not possible.
10 | * Hooks are not run.
--------------------------------------------------------------------------------
/manifests/base/application-controller/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - argocd-application-controller-sa.yaml
6 | - argocd-application-controller-role.yaml
7 | - argocd-application-controller-rolebinding.yaml
8 | - argocd-application-controller-statefulset.yaml
9 | - argocd-metrics.yaml
10 |
--------------------------------------------------------------------------------
/test/e2e/testdata/failure-during-sync/failure-during-sync.yaml:
--------------------------------------------------------------------------------
1 | # This manifest will fail to sync because the spec is invalid. This manifest is useful for testing
2 | # auto-sync and ensuring sure it does not fall into a sync loop.
3 | apiVersion: v1
4 | kind: ServiceAccount
5 | metadata:
6 | name: failure-during-sync
7 | labels:
8 | my-label: has-inva/id-character!
9 |
--------------------------------------------------------------------------------
/test/fixture/testrepos/Procfile:
--------------------------------------------------------------------------------
1 | sshd: mkdir -p /var/run/sshd && mkdir -p ~/.ssh && cat ./test/fixture/testrepos/id_rsa.pub > ~/.ssh/authorized_keys && /usr/sbin/sshd -p 2222 -D -e
2 | fcgiwrap: fcgiwrap -s unix:/var/run/fcgiwrap.socket & sleep 1 && chmod 777 /var/run/fcgiwrap.socket && wait
3 | nginx: nginx -prefix=$(pwd) -g 'daemon off;' -c $(pwd)/test/fixture/testrepos/nginx.conf
4 |
--------------------------------------------------------------------------------
/hack/tool-versions.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # The checksum of this file is used as cache key in our integration toolchain
3 | #
4 | helm2_version=2.15.2
5 | helm3_version=3.3.1
6 | jq_version=1.6
7 | ksonnet_version=0.13.1
8 | kubectl_version=1.17.8
9 | kubectx_version=0.6.3
10 | kustomize3_version=3.8.1
11 | packr_version=1.21.9
12 | protoc_version=3.7.1
13 | swagger_version=0.19.0
14 |
--------------------------------------------------------------------------------
/manifests/base/redis/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 | resources:
5 | - argocd-redis-deployment.yaml
6 | - argocd-redis-service.yaml
7 |
8 | vars:
9 | - name: ARGOCD_REDIS_SERVICE
10 | objref:
11 | kind: Service
12 | name: argocd-redis
13 | apiVersion: v1
14 | fieldref:
15 | fieldpath: metadata.name
--------------------------------------------------------------------------------
/resource_customizations/zookeeper.pravega.io/ZookeeperCluster/health_test.yaml:
--------------------------------------------------------------------------------
1 | tests:
2 | - healthStatus:
3 | status: Progressing
4 | message: "Waiting for ZK Nodes to join the ensemble"
5 | inputPath: testdata/progressing.yaml
6 | - healthStatus:
7 | status: Healthy
8 | message: "All ZK Nodes have joined the ensemble"
9 | inputPath: testdata/healthy.yaml
10 |
--------------------------------------------------------------------------------
/test/e2e/testdata/helm-crd/templates/crd.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apiextensions.k8s.io/v1beta1
2 | kind: CustomResourceDefinition
3 | metadata:
4 | name: crontabs.stable.example.com
5 | spec:
6 | group: stable.example.com
7 | version: v1
8 | scope: Namespaced
9 | names:
10 | plural: crontabs
11 | singular: crontab
12 | kind: CronTab
13 | shortNames:
14 | - ct
--------------------------------------------------------------------------------
/test/e2e/testdata/helm3-crd/crds/crd.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apiextensions.k8s.io/v1beta1
2 | kind: CustomResourceDefinition
3 | metadata:
4 | name: crontabs.stable.example.com
5 | spec:
6 | group: stable.example.com
7 | version: v1
8 | scope: Namespaced
9 | names:
10 | plural: crontabs
11 | singular: crontab
12 | kind: CronTab
13 | shortNames:
14 | - ct
--------------------------------------------------------------------------------
/test/fixture/testrepos/start-git.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | docker run --name e2e-git --rm -i \
4 | -p 2222:2222 -p 9080:9080 -p 9443:9443 -p 9444:9444 -p 9445:9445 \
5 | -w /go/src/github.com/argoproj/argo-cd -v $(pwd):/go/src/github.com/argoproj/argo-cd -v /tmp:/tmp argoproj/argo-cd-ci-builder:v1.0.0 \
6 | bash -c "goreman -f ./test/fixture/testrepos/Procfile start"
7 |
--------------------------------------------------------------------------------
/assets/model.conf:
--------------------------------------------------------------------------------
1 | [request_definition]
2 | r = sub, res, act, obj
3 |
4 | [policy_definition]
5 | p = sub, res, act, obj, eft
6 |
7 | [role_definition]
8 | g = _, _
9 |
10 | [policy_effect]
11 | e = some(where (p.eft == allow)) && !some(where (p.eft == deny))
12 |
13 | [matchers]
14 | m = g(r.sub, p.sub) && globMatch(r.res, p.res) && globMatch(r.act, p.act) && globMatch(r.obj, p.obj)
15 |
--------------------------------------------------------------------------------
/hack/installers/install-swagger-linux.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eux -o pipefail
3 |
4 | . $(dirname $0)/../tool-versions.sh
5 |
6 | [ -e $DOWNLOADS/swagger ] || curl -sLf --retry 3 -o $DOWNLOADS/swagger https://github.com/go-swagger/go-swagger/releases/download/v${swagger_version}/swagger_linux_$ARCHITECTURE
7 | cp $DOWNLOADS/swagger $BIN/swagger
8 | chmod +x $BIN/swagger
9 | swagger version
10 |
--------------------------------------------------------------------------------
/resource_customizations/argoproj.io/Rollout/testdata/degraded_invalidSpec.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: argoproj.io/v1alpha1
2 | kind: Rollout
3 | metadata:
4 | name: invalidSpec
5 | status:
6 | conditions:
7 | - type: AnotherValidCondition
8 | status: true
9 | - type: InvalidSpec
10 | status: true
11 | message: Rollout has missing field '.Spec.Strategy.Type'
12 | reason: MissingStrategy
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/hpa.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/ing.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ui/src/app/applications/components/application-resources-diff/application-resources-diff.scss:
--------------------------------------------------------------------------------
1 | .application-resources-diff {
2 | &__checkboxes {
3 | text-align: right;
4 | label {
5 | padding-right: 2em;
6 | }
7 | }
8 | &__diff {
9 | font-size: 10pt;
10 | &__title {
11 | font-weight: bold;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/crb.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/util/rand/rand_test.go:
--------------------------------------------------------------------------------
1 | package rand
2 |
3 | import (
4 | "testing"
5 | )
6 |
7 | func TestRandString(t *testing.T) {
8 | ss := RandStringCharset(10, "A")
9 | if ss != "AAAAAAAAAA" {
10 | t.Errorf("Expected 10 As, but got %q", ss)
11 | }
12 | ss = RandStringCharset(5, "ABC123")
13 | if len(ss) != 5 {
14 | t.Errorf("Expected random string of length 10, but got %q", ss)
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ui/src/app/shared/components/spinner.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import {COLORS} from './colors';
3 |
4 | export const Spinner = ({show, style = {}}: {show: boolean; style?: React.CSSProperties}) =>
5 | show ? (
6 |
7 |
8 |
9 | ) : null;
10 |
--------------------------------------------------------------------------------
/test/e2e/testdata/ksonnet/environments/dev/main.jsonnet:
--------------------------------------------------------------------------------
1 | local base = import "base.libsonnet";
2 | // uncomment if you reference ksonnet-lib
3 | // local k = import "k.libsonnet";
4 |
5 | base + {
6 | // Insert user-specified overrides here. For example if a component is named \"nginx-deployment\", you might have something like:\n")
7 | // "nginx-deployment"+: k.deployment.mixin.metadata.labels({foo: "bar"})
8 | }
9 |
--------------------------------------------------------------------------------
/test/e2e/testdata/ksonnet/environments/prod/main.jsonnet:
--------------------------------------------------------------------------------
1 | local base = import "base.libsonnet";
2 | // uncomment if you reference ksonnet-lib
3 | // local k = import "k.libsonnet";
4 |
5 | base + {
6 | // Insert user-specified overrides here. For example if a component is named \"nginx-deployment\", you might have something like:\n")
7 | // "nginx-deployment"+: k.deployment.mixin.metadata.labels({foo: "bar"})
8 | }
9 |
--------------------------------------------------------------------------------
/util/clusterauth/testdata/argocd-manager-sa.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ServiceAccount
3 | metadata:
4 | creationTimestamp: "2019-06-13T04:20:26Z"
5 | name: argocd-manager
6 | namespace: kube-system
7 | resourceVersion: "133015"
8 | selfLink: /api/v1/namespaces/kube-system/serviceaccounts/argocd-manager
9 | uid: 91dd37cf-8d92-11e9-a091-d65f2ae7fa8d
10 | secrets:
11 | - name: argocd-manager-token-tj79r
--------------------------------------------------------------------------------
/util/util_test.go:
--------------------------------------------------------------------------------
1 | package util_test
2 |
3 | import (
4 | "testing"
5 |
6 | "github.com/argoproj/argo-cd/util"
7 | )
8 |
9 | func TestMakeSignature(t *testing.T) {
10 | for size := 1; size <= 64; size++ {
11 | s, err := util.MakeSignature(size)
12 | if err != nil {
13 | t.Errorf("Could not generate signature of size %d: %v", size, err)
14 | }
15 | t.Logf("Generated token: %v", s)
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/resource_customizations/kafka.strimzi.io/KafkaConnect/health_test.yaml:
--------------------------------------------------------------------------------
1 | tests:
2 | - healthStatus:
3 | status: Progressing
4 | message: "Waiting for Kafka Connect"
5 | inputPath: testdata/progressing_noStatus.yaml
6 | - healthStatus:
7 | status: Degraded
8 | message: "Error"
9 | inputPath: testdata/degraded.yaml
10 | - healthStatus:
11 | status: Healthy
12 | inputPath: testdata/healthy.yaml
13 |
--------------------------------------------------------------------------------
/test/e2e/testdata/bad-servicecatalog/servicecatalog-apiservice.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apiregistration.k8s.io/v1
2 | kind: APIService
3 | metadata:
4 | name: v1beta1.servicecatalog.k8s.io
5 | spec:
6 | caBundle: null
7 | group: servicecatalog.k8s.io
8 | groupPriorityMinimum: 10000
9 | service:
10 | name: service-catalog-apiserver
11 | namespace: default
12 | version: v1beta1
13 | versionPriority: 20
14 |
--------------------------------------------------------------------------------
/test/e2e/testdata/declarative-apps/app.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: argoproj.io/v1alpha1
2 | kind: Application
3 | metadata:
4 | name: {{.Name}}
5 | namespace: {{.ArgoCDNamespace}}
6 | spec:
7 | project: {{.Project}}
8 | source:
9 | repoURL: {{.RepoURL}}
10 | targetRevision: HEAD
11 | path: {{.Path}}
12 | destination:
13 | server: https://kubernetes.default.svc
14 | namespace: {{.DeploymentNamespace}}
--------------------------------------------------------------------------------
/test/e2e/testdata/ksonnet/environments/default/main.jsonnet:
--------------------------------------------------------------------------------
1 | local base = import "base.libsonnet";
2 | // uncomment if you reference ksonnet-lib
3 | // local k = import "k.libsonnet";
4 |
5 | base + {
6 | // Insert user-specified overrides here. For example if a component is named \"nginx-deployment\", you might have something like:\n")
7 | // "nginx-deployment"+: k.deployment.mixin.metadata.labels({foo: "bar"})
8 | }
9 |
--------------------------------------------------------------------------------
/test/manifests/base/patches.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: Secret
4 | metadata:
5 | name: argocd-secret
6 | labels:
7 | app.kubernetes.io/name: argocd-secret
8 | app.kubernetes.io/part-of: argocd
9 | stringData:
10 | # admin.password is "password"
11 | admin.password: $2a$10$RncPyHW/B5ll2Z3J8s.IBOnbZ9uoJ4JhHLKzj5lzG/kU1KN1Oj3/K
12 | admin.passwordMtime: 2019-03-20T17:54:53Z
13 | type: Opaque
14 |
--------------------------------------------------------------------------------
/util/helm/testdata/redis/templates/redis-serviceaccount.yaml:
--------------------------------------------------------------------------------
1 | {{- if .Values.serviceAccount.create -}}
2 | apiVersion: v1
3 | kind: ServiceAccount
4 | metadata:
5 | name: {{ template "redis.serviceAccountName" . }}
6 | labels:
7 | app: {{ template "redis.name" . }}
8 | chart: {{ template "redis.chart" . }}
9 | release: "{{ .Release.Name }}"
10 | heritage: "{{ .Release.Service }}"
11 | {{- end -}}
12 |
--------------------------------------------------------------------------------
/resource_customizations/apps/DaemonSet/actions/restart/action.lua:
--------------------------------------------------------------------------------
1 | local os = require("os")
2 | if obj.spec.template.metadata == nil then
3 | obj.spec.template.metadata = {}
4 | end
5 | if obj.spec.template.metadata.annotations == nil then
6 | obj.spec.template.metadata.annotations = {}
7 | end
8 | obj.spec.template.metadata.annotations["kubectl.kubernetes.io/restartedAt"] = os.date("!%Y-%m-%dT%XZ")
9 | return obj
10 |
--------------------------------------------------------------------------------
/test/e2e/testdata/hook-and-deployment/hook.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: batch/v1
2 | kind: Job
3 | metadata:
4 | name: my-hook
5 | annotations:
6 | argocd.argoproj.io/hook: Sync
7 | spec:
8 | template:
9 | spec:
10 | containers:
11 | - command:
12 | - "true"
13 | image: "alpine:3.10.2"
14 | imagePullPolicy: IfNotPresent
15 | name: main
16 | restartPolicy: Never
--------------------------------------------------------------------------------
/ui/src/app/shared/components/empty-state/empty-state.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 |
3 | require('./empty-state.scss');
4 |
5 | export const EmptyState = ({icon, children}: {icon: string; children: React.ReactNode}) => (
6 |
7 |
8 |
9 |
10 | {children}
11 |
12 | );
13 |
--------------------------------------------------------------------------------
/docs/SUPPORT.md:
--------------------------------------------------------------------------------
1 | # Support
2 |
3 | 1. Make sure you've read [understanding the basics](understand_the_basics.md) the [getting started guide](getting_started.md).
4 | 2. Looked for an answer [the frequently asked questions](faq.md).
5 | 3. Ask a question in [the Argo CD Slack channel ⧉](https://argoproj.github.io/community/join-slack).
6 | 4. [Read issues, report a bug, or request a feature ⧉](https://github.com/argoproj/argo-cd/issues)
7 |
--------------------------------------------------------------------------------
/hack/installers/install-helm-linux.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eux -o pipefail
3 |
4 | . $(dirname $0)/../tool-versions.sh
5 |
6 | [ -e $DOWNLOADS/helm.tar.gz ] || curl -sLf --retry 3 -o $DOWNLOADS/helm.tar.gz https://get.helm.sh/helm-v${helm3_version}-linux-$ARCHITECTURE.tar.gz
7 | mkdir -p /tmp/helm && tar -C /tmp/helm -xf $DOWNLOADS/helm.tar.gz
8 | cp /tmp/helm/linux-$ARCHITECTURE/helm $BIN/helm
9 | helm version --client
10 |
--------------------------------------------------------------------------------
/manifests/base/redis/argocd-redis-service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-redis
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: redis
8 | name: argocd-redis
9 | spec:
10 | ports:
11 | - name: tcp-redis
12 | port: 6379
13 | targetPort: 6379
14 | selector:
15 | app.kubernetes.io/name: argocd-redis
16 |
--------------------------------------------------------------------------------
/resource_customizations/apps/Deployment/actions/restart/action.lua:
--------------------------------------------------------------------------------
1 | local os = require("os")
2 | if obj.spec.template.metadata == nil then
3 | obj.spec.template.metadata = {}
4 | end
5 | if obj.spec.template.metadata.annotations == nil then
6 | obj.spec.template.metadata.annotations = {}
7 | end
8 | obj.spec.template.metadata.annotations["kubectl.kubernetes.io/restartedAt"] = os.date("!%Y-%m-%dT%XZ")
9 | return obj
10 |
--------------------------------------------------------------------------------
/resource_customizations/apps/StatefulSet/actions/restart/action.lua:
--------------------------------------------------------------------------------
1 | local os = require("os")
2 | if obj.spec.template.metadata == nil then
3 | obj.spec.template.metadata = {}
4 | end
5 | if obj.spec.template.metadata.annotations == nil then
6 | obj.spec.template.metadata.annotations = {}
7 | end
8 | obj.spec.template.metadata.annotations["kubectl.kubernetes.io/restartedAt"] = os.date("!%Y-%m-%dT%XZ")
9 | return obj
10 |
--------------------------------------------------------------------------------
/util/glob/glob.go:
--------------------------------------------------------------------------------
1 | package glob
2 |
3 | import (
4 | "github.com/gobwas/glob"
5 | log "github.com/sirupsen/logrus"
6 | )
7 |
8 | func Match(pattern, text string, separators ...rune) bool {
9 | compiledGlob, err := glob.Compile(pattern, separators...)
10 | if err != nil {
11 | log.Warnf("failed to compile pattern %s due to error %v", pattern, err)
12 | return false
13 | }
14 | return compiledGlob.Match(text)
15 | }
16 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/enhancement_proposal.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Enhancement proposal
3 | about: Propose an enhancement for this project
4 | title: ''
5 | labels: 'enhancement'
6 | assignees: ''
7 | ---
8 | # Summary
9 |
10 | What change you think needs making.
11 |
12 | # Motivation
13 |
14 | Please give examples of your use case, e.g. when would you use this.
15 |
16 | # Proposal
17 |
18 | How do you think this should be implemented?
--------------------------------------------------------------------------------
/docs/developer-guide/index.md:
--------------------------------------------------------------------------------
1 | # Overview
2 |
3 | !!! warning "You probably don't want to be reading this section of the docs."
4 | This part of the manual is aimed at people wanting to develop third-party applications that interact with Argo CD, e.g.
5 |
6 | * An chat bot
7 | * An Slack integration
8 |
9 | !!! note
10 | Please make sure you've completed the [getting started guide](../getting_started.md).
11 |
--------------------------------------------------------------------------------
/resource_customizations/extensions/DaemonSet/actions/restart/action.lua:
--------------------------------------------------------------------------------
1 | local os = require("os")
2 | if obj.spec.template.metadata == nil then
3 | obj.spec.template.metadata = {}
4 | end
5 | if obj.spec.template.metadata.annotations == nil then
6 | obj.spec.template.metadata.annotations = {}
7 | end
8 | obj.spec.template.metadata.annotations["kubectl.kubernetes.io/restartedAt"] = os.date("!%Y-%m-%dT%XZ")
9 | return obj
10 |
--------------------------------------------------------------------------------
/resource_customizations/extensions/Deployment/actions/restart/action.lua:
--------------------------------------------------------------------------------
1 | local os = require("os")
2 | if obj.spec.template.metadata == nil then
3 | obj.spec.template.metadata = {}
4 | end
5 | if obj.spec.template.metadata.annotations == nil then
6 | obj.spec.template.metadata.annotations = {}
7 | end
8 | obj.spec.template.metadata.annotations["kubectl.kubernetes.io/restartedAt"] = os.date("!%Y-%m-%dT%XZ")
9 | return obj
10 |
--------------------------------------------------------------------------------
/test/fixture/testrepos/ssh_host_rsa_key.pub:
--------------------------------------------------------------------------------
1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcBar/5tNRUw2MIeY2wzLllG4Opt9h4i/8dRnyxCdDQb30ioH0ervPFRoR1ZJVF/jVI4waHZJ74m/70OxwhSBVA/oPFtRl6C+at2BTgj5uLb9TqVoLSP/VT5M31ohWwBuIsYoQrbwpxwXpgLAQ65M+ghegW3SALnyxEuCWEd/mqCOmwcXWPKNDM32AB3OU/qhW3ID66aIo26LJ8OQ7yZSv/2xWWGiVbRShNjDLqGfkbk5+R+vpVdaIhJn22nX5d1i/modeBepJN8eo4gO7p0vkmCTFxq6aUrRtPPs2h7z61GsYG7miWn4hjjeGVrT1Xv0BTrnuWHxcJU1bSmKCx4rV root@0f72fbb593e1
2 |
--------------------------------------------------------------------------------
/docs/operator-manual/upgrading/1.5-1.6.md:
--------------------------------------------------------------------------------
1 | # v1.5 to 1.6
2 |
3 | ## Removed Deprecated Field of /managed-resources API
4 |
5 | The deprecated `diff` field had been removed from `/api/v1/applications//managed-resources` API. The field is not used
6 | by Argo CD CLI or UI, so it might affect you only if you programmatically use the `managed-resources` API.
7 |
8 | From here on you can follow the [regular upgrade process](./overview.md).
--------------------------------------------------------------------------------
/test/fixture/testrepos/id_rsa.pub:
--------------------------------------------------------------------------------
1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiXrlNhSdBElh/nMoc3wEJapKy08pvVrQzi+BV56doNzUyiqFhW9cmlMlFOcft5QmL9LWh5MmiiPW4qLhG5iDprjLgS+occh5BvM6o7dgGKZO8WrhJ3zUa+9XUSw9qTWZ2WFOHJbEo0Te3Q9SMRYg30tD5N903mwF4ViY0tPSH89cOcQT925L7CppXAl0/gbV0tz/O6Hba/MkOendhSi4LQAtHqWU69kXHVJgkE0M+9TpUiD59xLXp/JOAmjgPhJhOb3+BHHYVeox1DTNfSrpXCEkkeuePsirmwET9q8xIsSjKV4byrMDTOgzGtyAVmfYWG8GLYyMnxO4hCxIChIrd amatyushentsev@MTVL160740224.local
2 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/crd.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/resource_customizations/kiali.io/Kiali/health_test.yaml:
--------------------------------------------------------------------------------
1 | tests:
2 | - healthStatus:
3 | status: Progressing
4 | message: "Reconciling"
5 | inputPath: testdata/progressing.yaml
6 | - healthStatus:
7 | status: Degraded
8 | message: "Error Reconciling"
9 | inputPath: testdata/degraded.yaml
10 | - healthStatus:
11 | status: Healthy
12 | message: "Awaiting next reconciliation"
13 | inputPath: testdata/healthy.yaml
14 |
--------------------------------------------------------------------------------
/test/e2e/testdata/ksonnet/environments/prod/params.libsonnet:
--------------------------------------------------------------------------------
1 | local params = std.extVar("__ksonnet/params");
2 | local globals = import "globals.libsonnet";
3 | local envParams = params + {
4 | components +: {
5 | "guestbook-ui" +: {
6 | type: "LoadBalancer",
7 | },
8 | },
9 | };
10 |
11 | {
12 | components: {
13 | [x]: envParams.components[x] + globals, for x in std.objectFields(envParams.components)
14 | },
15 | }
16 |
--------------------------------------------------------------------------------
/ui/src/app/index.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import * as ReactDOM from 'react-dom';
3 | import {App} from './app';
4 |
5 | ReactDOM.render(, document.getElementById('app'));
6 |
7 | const mdl = module as any;
8 | if (mdl.hot) {
9 | mdl.hot.accept('./app.tsx', () => {
10 | const UpdatedApp = require('./app.tsx').App;
11 | ReactDOM.render(, document.getElementById('app'));
12 | });
13 | }
14 |
--------------------------------------------------------------------------------
/manifests/base/dex/argocd-dex-server-role.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: rbac.authorization.k8s.io/v1
2 | kind: Role
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-dex-server
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: dex-server
8 | name: argocd-dex-server
9 | rules:
10 | - apiGroups:
11 | - ""
12 | resources:
13 | - secrets
14 | - configmaps
15 | verbs:
16 | - get
17 | - list
18 | - watch
19 |
--------------------------------------------------------------------------------
/ui/src/app/settings/components/account-details/account-details.scss:
--------------------------------------------------------------------------------
1 | .account-details {
2 | &__new-token {
3 | white-space: nowrap;
4 | position: relative;
5 |
6 | p {
7 | word-wrap: break-word;
8 | white-space: pre-wrap;
9 | }
10 | }
11 |
12 | &__remove-token {
13 | position: absolute;
14 | top: 1em;
15 | right: 1em;
16 | cursor: pointer;
17 | }
18 | }
--------------------------------------------------------------------------------
/.codecov.yml:
--------------------------------------------------------------------------------
1 | ignore:
2 | - "**/*.pb.go"
3 | - "**/*.pb.gw.go"
4 | - "**/*generated.go"
5 | - "**/*generated.deepcopy.go"
6 | - "**/*_test.go"
7 | - "pkg/apis/client/.*"
8 | - "pkg/client/.*"
9 | - "vendor/.*"
10 | coverage:
11 | status:
12 | # we've found this not to be useful
13 | patch: off
14 | project:
15 | default:
16 | # allow test coverage to drop by 2%, assume that it's typically due to CI problems
17 | threshold: 2
--------------------------------------------------------------------------------
/resource_customizations/jaegertracing.io/Jaeger/health_test.yaml:
--------------------------------------------------------------------------------
1 | tests:
2 | - healthStatus:
3 | status: Progressing
4 | message: "Waiting for Jaeger"
5 | inputPath: testdata/progressing.yaml
6 | - healthStatus:
7 | status: Degraded
8 | message: "Jaeger Failed For Some Reason"
9 | inputPath: testdata/degraded.yaml
10 | - healthStatus:
11 | status: Healthy
12 | message: "Jaeger is Running"
13 | inputPath: testdata/healthy.yaml
14 |
--------------------------------------------------------------------------------
/test/e2e/testdata/self-managed-app/resources.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: argoproj.io/v1alpha1
2 | kind: Application
3 | metadata:
4 | name: test-self-managed-apps
5 | namespace: argocd-e2e
6 | spec:
7 | project: default
8 |
9 | source:
10 | repoURL: https://github.com/argoproj/argo-cd.git
11 | targetRevision: HEAD
12 | path: self-managed-app
13 |
14 | destination:
15 | server: https://kubernetes.default.svc
16 | namespace: argocd-e2e
17 |
--------------------------------------------------------------------------------
/ui/src/app/user-info/components/user-info-container.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import {Route, RouteComponentProps, Switch} from 'react-router';
3 |
4 | import {UserInfoOverview} from './user-info-overview/user-info-overview';
5 |
6 | export const UserInfoContainer = (props: RouteComponentProps) => (
7 |
8 |
9 |
10 | );
11 |
--------------------------------------------------------------------------------
/hack/installers/install-helm2-linux.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eux -o pipefail
3 |
4 | . $(dirname $0)/../tool-versions.sh
5 |
6 | [ -e $DOWNLOADS/helm2.tar.gz ] || curl -sLf --retry 3 -o $DOWNLOADS/helm2.tar.gz https://storage.googleapis.com/kubernetes-helm/helm-v${helm2_version}-linux-$ARCHITECTURE.tar.gz
7 | mkdir -p /tmp/helm2 && tar -C /tmp/helm2 -xf $DOWNLOADS/helm2.tar.gz
8 | cp /tmp/helm2/linux-$ARCHITECTURE/helm $BIN/helm2
9 | helm2 version --client
10 |
--------------------------------------------------------------------------------
/manifests/base/server/argocd-server-metrics.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-server-metrics
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: server
8 | name: argocd-server-metrics
9 | spec:
10 | ports:
11 | - name: metrics
12 | protocol: TCP
13 | port: 8083
14 | targetPort: 8083
15 | selector:
16 | app.kubernetes.io/name: argocd-server
17 |
--------------------------------------------------------------------------------
/resource_customizations/jaegertracing.io/Jaeger/testdata/progressing.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: jaegertracing.io/v1
2 | kind: Jaeger
3 | metadata:
4 | generation: 3
5 | labels:
6 | argocd.argoproj.io/instance: jaeger-operator-default
7 | name: jaeger
8 | namespace: jaeger
9 | resourceVersion: "226432"
10 | selfLink: /apis/jaegertracing.io/v1/namespaces/2269-jaeger/jaegers/jaeger
11 | uid: 48d186c8-47d7-494b-8b6a-435747e406a4
12 | spec: {}
13 | status: {}
--------------------------------------------------------------------------------
/test/e2e/testdata/cluster-role/cluster-role.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: rbac.authorization.k8s.io/v1beta1
2 | kind: ClusterRoleBinding
3 | metadata:
4 | namespace: cert-manager
5 | name: my-cluster-role-binding
6 | annotations:
7 | argocd.argoproj.io/hook: PreSync
8 | roleRef:
9 | apiGroup: rbac.authorization.k8s.io
10 | kind: ClusterRole
11 | name: cluster-admin
12 | subjects:
13 | - kind: ServiceAccount
14 | name: default
15 | namespace: default
--------------------------------------------------------------------------------
/test/e2e/testdata/helm-repo/index.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | entries:
3 | helm:
4 | - created: 2019-07-08T23:26:50.723856689Z
5 | urls:
6 | - http://localhost:9080/argo-e2e/testdata.git/helm-repo/helm-1.0.0.tgz
7 | version: 1.0.0
8 | helm2:
9 | - created: "2020-03-02T08:16:19.960425-08:00"
10 | name: helm2
11 | urls:
12 | - http://localhost:9080/argo-e2e/testdata.git/helm-repo/helm2-1.0.0.tgz
13 | version: 1.0.0
--------------------------------------------------------------------------------
/test/e2e/user_info_test.go:
--------------------------------------------------------------------------------
1 | package e2e
2 |
3 | import (
4 | "testing"
5 |
6 | "github.com/stretchr/testify/assert"
7 |
8 | . "github.com/argoproj/argo-cd/test/e2e/fixture"
9 | )
10 |
11 | func TestUserInfo(t *testing.T) {
12 | EnsureCleanState(t)
13 |
14 | output, err := RunCli("account", "get-user-info")
15 |
16 | assert.NoError(t, err)
17 | assert.Equal(t, `Logged In: true
18 | Username: admin
19 | Issuer: argocd
20 | Groups: `, output)
21 | }
22 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/user.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/util/helm/testdata/minio/.helmignore:
--------------------------------------------------------------------------------
1 | # Patterns to ignore when building packages.
2 | # This supports shell glob matching, relative path matching, and
3 | # negation (prefixed with !). Only one pattern per line.
4 | .DS_Store
5 | # Common VCS dirs
6 | .git/
7 | .gitignore
8 | .bzr/
9 | .bzrignore
10 | .hg/
11 | .hgignore
12 | .svn/
13 | # Common backup files
14 | *.swp
15 | *.bak
16 | *.tmp
17 | *~
18 | # Various IDEs
19 | .project
20 | .idea/
21 | *.tmproj
22 |
--------------------------------------------------------------------------------
/test/e2e/testdata/failed-conversion/apiservice.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apiregistration.k8s.io/v1beta1
2 | kind: APIService
3 | metadata:
4 | name: v1beta1.metrics.k8s.io
5 | labels:
6 | app: metrics-server
7 | chart: metrics-server
8 | spec:
9 | service:
10 | name: metrics-server
11 | namespace: kube-system
12 | group: metrics.k8s.io
13 | version: v1beta1
14 | insecureSkipTLSVerify: true
15 | groupPriorityMinimum: 100
16 | versionPriority: 100
--------------------------------------------------------------------------------
/test/fixture/testrepos/ssh_host_ed25519_key:
--------------------------------------------------------------------------------
1 | -----BEGIN OPENSSH PRIVATE KEY-----
2 | b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
3 | QyNTUxOQAAACAGMp2jg/8KPMYN2DeAW3axKMz2eU70N0f6sS88vYDK/AAAAJjZDaih2Q2o
4 | oQAAAAtzc2gtZWQyNTUxOQAAACAGMp2jg/8KPMYN2DeAW3axKMz2eU70N0f6sS88vYDK/A
5 | AAAEAXkp8IShMHn+V4jsmjsyZyEwT7j9d170SJJPuDwu9SGgYynaOD/wo8xg3YN4BbdrEo
6 | zPZ5TvQ3R/qxLzy9gMr8AAAAEXJvb3RAMGY3MmZiYjU5M2UxAQIDBA==
7 | -----END OPENSSH PRIVATE KEY-----
8 |
--------------------------------------------------------------------------------
/.golangci.yml:
--------------------------------------------------------------------------------
1 | run:
2 | timeout: 2m
3 | skip-files:
4 | - ".*\\.pb\\.go"
5 | skip-dirs:
6 | - pkg/client/
7 | - vendor/
8 | linters:
9 | enable:
10 | - vet
11 | - deadcode
12 | - goimports
13 | - varcheck
14 | - structcheck
15 | - ineffassign
16 | - unconvert
17 | - unparam
18 | linters-settings:
19 | goimports:
20 | local-prefixes: github.com/argoproj/argo-cd
21 | service:
22 | golangci-lint-version: 1.21.0
23 |
--------------------------------------------------------------------------------
/manifests/base/server/argocd-server-rolebinding.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: rbac.authorization.k8s.io/v1
2 | kind: RoleBinding
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-server
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: server
8 | name: argocd-server
9 | roleRef:
10 | apiGroup: rbac.authorization.k8s.io
11 | kind: Role
12 | name: argocd-server
13 | subjects:
14 | - kind: ServiceAccount
15 | name: argocd-server
16 |
--------------------------------------------------------------------------------
/server/project/util.go:
--------------------------------------------------------------------------------
1 | package project
2 |
3 | func difference(a, b []string) []string {
4 | return unique(append(a, b...))
5 | }
6 |
7 | func unique(slice []string) []string {
8 | encountered := map[string]int{}
9 | for _, v := range slice {
10 | encountered[v] = encountered[v] + 1
11 | }
12 |
13 | diff := make([]string, 0)
14 | for _, v := range slice {
15 | if encountered[v] == 1 {
16 | diff = append(diff, v)
17 | }
18 | }
19 | return diff
20 | }
21 |
--------------------------------------------------------------------------------
/manifests/base/application-controller/argocd-metrics.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-metrics
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: metrics
8 | name: argocd-metrics
9 | spec:
10 | ports:
11 | - name: metrics
12 | protocol: TCP
13 | port: 8082
14 | targetPort: 8082
15 | selector:
16 | app.kubernetes.io/name: argocd-application-controller
17 |
--------------------------------------------------------------------------------
/ui/src/app/shared/components/checkbox/checkbox-field.tsx:
--------------------------------------------------------------------------------
1 | import {Checkbox} from 'argo-ui';
2 | import * as React from 'react';
3 | import * as ReactForm from 'react-form';
4 |
5 | export const CheckboxField = ReactForm.FormField((props: {fieldApi: ReactForm.FieldApi; className: string; checked: boolean}) => {
6 | const {
7 | fieldApi: {getValue, setValue}
8 | } = props;
9 |
10 | return ;
11 | });
12 |
--------------------------------------------------------------------------------
/ui/src/app/shared/components/revision-help-icon.tsx:
--------------------------------------------------------------------------------
1 | import {HelpIcon} from 'argo-ui';
2 | import * as React from 'react';
3 |
4 | export const RevisionHelpIcon = ({type, top}: {type: string; top?: string}) => (
5 |
6 | {type === 'helm' ? : }
7 |
8 | );
9 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/pvc.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/hack/installers/install-kubectl-linux.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eux -o pipefail
3 |
4 | . $(dirname $0)/../tool-versions.sh
5 |
6 | # NOTE: keep the version synced with https://storage.googleapis.com/kubernetes-release/release/stable.txt
7 | [ -e $DOWNLOADS/kubectl ] || curl -sLf --retry 3 -o $DOWNLOADS/kubectl https://storage.googleapis.com/kubernetes-release/release/v${kubectl_version}/bin/linux/$ARCHITECTURE/kubectl
8 | cp $DOWNLOADS/kubectl $BIN/
9 | chmod +x $BIN/kubectl
10 |
--------------------------------------------------------------------------------
/reposerver/apiclient/mocks/Clientset.go:
--------------------------------------------------------------------------------
1 | package mocks
2 |
3 | import (
4 | apiclient "github.com/argoproj/argo-cd/reposerver/apiclient"
5 |
6 | io "github.com/argoproj/gitops-engine/pkg/utils/io"
7 | )
8 |
9 | type Clientset struct {
10 | RepoServerServiceClient apiclient.RepoServerServiceClient
11 | }
12 |
13 | func (c *Clientset) NewRepoServerClient() (io.Closer, apiclient.RepoServerServiceClient, error) {
14 | return io.NopCloser, c.RepoServerServiceClient, nil
15 | }
16 |
--------------------------------------------------------------------------------
/test/e2e/testdata/crd-creation/crd-instances.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: argoproj.io/v1alpha1
3 | kind: Dummy
4 | metadata:
5 | name: dummy-crd-instance
6 | spec:
7 | requests:
8 | cpu: 2000m
9 | memory: 32Mi
10 | ---
11 | apiVersion: argoproj.io/v1alpha1
12 | kind: Dummy
13 | metadata:
14 | name: dummy-crd-instance
15 | namespace: kube-system
16 | ---
17 | apiVersion: argoproj.io/v1alpha1
18 | kind: ClusterDummy
19 | metadata:
20 | name: cluster-dummy-crd-instance
21 |
--------------------------------------------------------------------------------
/test/e2e/testdata/deprecated-extensions/pod-security-policy.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: PodSecurityPolicy
3 | metadata:
4 | name: pod-security-example
5 | spec:
6 | privileged: false # Don't allow privileged pods!
7 | # The rest fills in some required fields.
8 | seLinux:
9 | rule: RunAsAny
10 | supplementalGroups:
11 | rule: RunAsAny
12 | runAsUser:
13 | rule: RunAsAny
14 | fsGroup:
15 | rule: RunAsAny
16 | volumes:
17 | - '*'
--------------------------------------------------------------------------------
/resource_customizations/sparkoperator.k8s.io/SparkApplication/health_test.yaml:
--------------------------------------------------------------------------------
1 | tests:
2 | - healthStatus:
3 | status: Progressing
4 | message: "SparkApplication is Pending Rerun"
5 | inputPath: testdata/progressing.yaml
6 | - healthStatus:
7 | status: Degraded
8 | message: "Job Failed"
9 | inputPath: testdata/degraded.yaml
10 | - healthStatus:
11 | status: Healthy
12 | message: "SparkApplication is in RunningState"
13 | inputPath: testdata/healthy.yaml
14 |
--------------------------------------------------------------------------------
/util/helm/testdata/redis/templates/redis-role.yaml:
--------------------------------------------------------------------------------
1 | {{- if and .Values.rbac.create .Values.rbac.role.rules -}}
2 | apiVersion: rbac.authorization.k8s.io/v1
3 | kind: Role
4 | metadata:
5 | name: {{ template "redis.fullname" . }}
6 | labels:
7 | app: {{ template "redis.name" . }}
8 | chart: {{ template "redis.chart" . }}
9 | release: "{{ .Release.Name }}"
10 | heritage: "{{ .Release.Service }}"
11 | rules:
12 | {{ toYaml .Values.rbac.role.rules }}
13 | {{- end -}}
14 |
--------------------------------------------------------------------------------
/util/kustomize/testdata/kustomization_yaml/deployment.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | name: nginx-deployment
5 | labels:
6 | app: nginx
7 | spec:
8 | replicas: 3
9 | selector:
10 | matchLabels:
11 | app: nginx
12 | template:
13 | metadata:
14 | labels:
15 | app: nginx
16 | spec:
17 | containers:
18 | - name: nginx
19 | image: nginx:1.15.4
20 | ports:
21 | - containerPort: 80
--------------------------------------------------------------------------------
/manifests/base/dex/argocd-dex-server-rolebinding.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: rbac.authorization.k8s.io/v1
2 | kind: RoleBinding
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-dex-server
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: dex-server
8 | name: argocd-dex-server
9 | roleRef:
10 | apiGroup: rbac.authorization.k8s.io
11 | kind: Role
12 | name: argocd-dex-server
13 | subjects:
14 | - kind: ServiceAccount
15 | name: argocd-dex-server
16 |
--------------------------------------------------------------------------------
/reposerver/repository/testdata/jsonnet/vendor/nested/service.libsonnet:
--------------------------------------------------------------------------------
1 | local new(params) = {
2 | apiVersion: 'v1',
3 | kind: 'Service',
4 | metadata: {
5 | name: params.name,
6 | },
7 | spec: {
8 | ports: [
9 | {
10 | port: params.servicePort,
11 | targetPort: params.containerPort,
12 | },
13 | ],
14 | selector: {
15 | app: params.name,
16 | },
17 | type: params.type,
18 | },
19 | };
20 |
21 | {
22 | new:: new,
23 | }
24 |
--------------------------------------------------------------------------------
/test/e2e/testdata/deployment/deployment.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | name: nginx-deployment
5 | labels:
6 | app: nginx
7 | spec:
8 | replicas: 0
9 | selector:
10 | matchLabels:
11 | app: nginx
12 | template:
13 | metadata:
14 | labels:
15 | app: nginx
16 | spec:
17 | containers:
18 | - name: nginx
19 | image: nginx:1.17.4-alpine
20 | ports:
21 | - containerPort: 80
22 |
--------------------------------------------------------------------------------
/reposerver/repository/testdata/app-parameters/guestbook.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | name: guestbook-ui
5 | spec:
6 | selector:
7 | matchLabels:
8 | app: guestbook-ui
9 | template:
10 | metadata:
11 | labels:
12 | app: guestbook-ui
13 | spec:
14 | containers:
15 | - image: gcr.io/heptio-images/ks-guestbook-demo:0.1
16 | name: guestbook-ui
17 | ports:
18 | - containerPort: 81
19 |
--------------------------------------------------------------------------------
/resource_customizations/jaegertracing.io/Jaeger/testdata/degraded.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: jaegertracing.io/v1
2 | kind: Jaeger
3 | metadata:
4 | generation: 3
5 | labels:
6 | argocd.argoproj.io/instance: jaeger-operator-default
7 | name: jaeger
8 | namespace: jaeger
9 | resourceVersion: "226432"
10 | selfLink: /apis/jaegertracing.io/v1/namespaces/2269-jaeger/jaegers/jaeger
11 | uid: 48d186c8-47d7-494b-8b6a-435747e406a4
12 | spec: {}
13 | status:
14 | phase: Failed
15 | version: 1.17.0
--------------------------------------------------------------------------------
/resource_customizations/jaegertracing.io/Jaeger/testdata/healthy.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: jaegertracing.io/v1
2 | kind: Jaeger
3 | metadata:
4 | generation: 3
5 | labels:
6 | argocd.argoproj.io/instance: jaeger-operator-default
7 | name: jaeger
8 | namespace: jaeger
9 | resourceVersion: "226432"
10 | selfLink: /apis/jaegertracing.io/v1/namespaces/2269-jaeger/jaegers/jaeger
11 | uid: 48d186c8-47d7-494b-8b6a-435747e406a4
12 | spec: {}
13 | status:
14 | phase: Running
15 | version: 1.17.0
--------------------------------------------------------------------------------
/hack/installers/install-protoc-linux.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eux -o pipefail
3 |
4 | . $(dirname $0)/../tool-versions.sh
5 |
6 | [ -e $DOWNLOADS/protoc.zip ] || curl -sLf --retry 3 -o $DOWNLOADS/protoc.zip https://github.com/protocolbuffers/protobuf/releases/download/v${protoc_version}/protoc-${protoc_version}-linux-x86_64.zip
7 | unzip $DOWNLOADS/protoc.zip bin/protoc -d /usr/local/
8 | chmod +x /usr/local/bin/protoc
9 | unzip $DOWNLOADS/protoc.zip include/* -d /usr/local/
10 | protoc --version
11 |
--------------------------------------------------------------------------------
/ui/src/app/settings/components/project-details/project-details.scss:
--------------------------------------------------------------------------------
1 | @import 'node_modules/argo-ui/src/styles/config';
2 |
3 | .project-details {
4 | .white-box__details-row .fa-times {
5 | position: absolute;
6 | top: 1em;
7 | right: 0;
8 | cursor: pointer;
9 | }
10 |
11 | .select.argo-field {
12 | padding: 0;
13 | }
14 |
15 | .white-box {
16 | .help-tip {
17 | color: $argo-color-gray-6;
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/test/e2e/testdata/declarative-apps/invalid-helm.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: argoproj.io/v1alpha1
2 | kind: Application
3 | metadata:
4 | name: {{.Name}}
5 | namespace: {{.ArgoCDNamespace}}
6 | spec:
7 | project: {{.Project}}
8 | source:
9 | repoURL: {{.RepoURL}}
10 | targetRevision: HEAD
11 | path: {{.Path}}
12 | helm:
13 | valueFiles:
14 | - does-not-exist-values.yaml
15 | destination:
16 | server: https://kubernetes.default.svc
17 | namespace: {{.DeploymentNamespace}}
--------------------------------------------------------------------------------
/tools/cmd-docs/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "log"
5 | "os"
6 |
7 | "github.com/argoproj/argo-cd/cmd/argocd/commands"
8 |
9 | "github.com/spf13/cobra/doc"
10 | )
11 |
12 | func main() {
13 | // set HOME env var so that default values involve user's home directory do not depend on the running user.
14 | os.Setenv("HOME", "/home/user")
15 |
16 | err := doc.GenMarkdownTree(commands.NewCommand(), "./docs/user-guide/commands")
17 | if err != nil {
18 | log.Fatal(err)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/resource_customizations/zookeeper.pravega.io/ZookeeperCluster/health.lua:
--------------------------------------------------------------------------------
1 | health_status = {}
2 | if obj.status ~= nil then
3 | if obj.status.readyReplicas ~= 0 and obj.status.readyReplicas == obj.status.replicas then
4 | health_status.status = "Healthy"
5 | health_status.message = "All ZK Nodes have joined the ensemble"
6 | return health_status
7 | end
8 | end
9 | health_status.status = "Progressing"
10 | health_status.message = "Waiting for ZK Nodes to join the ensemble"
11 | return health_status
--------------------------------------------------------------------------------
/manifests/cluster-rbac/argocd-server-clusterrolebinding.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: rbac.authorization.k8s.io/v1
2 | kind: ClusterRoleBinding
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-server
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: server
8 | name: argocd-server
9 | roleRef:
10 | apiGroup: rbac.authorization.k8s.io
11 | kind: ClusterRole
12 | name: argocd-server
13 | subjects:
14 | - kind: ServiceAccount
15 | name: argocd-server
16 | namespace: argocd
17 |
--------------------------------------------------------------------------------
/manifests/ha/base/redis-ha/README.md:
--------------------------------------------------------------------------------
1 | # Redis HA Manifests
2 |
3 | The Redis HA manifests are taken from the upstream helm chart, and tweaked slightly to add
4 | Argo CD labels.
5 | * `chart` is a helm chart that references the upstream redis-ha chart. To update redis, update the
6 | version in `chart/requirements.yaml` with a later version of the chart.
7 | * `overlays` is a directory containing kustomize overlays for Argo CD, namely label modifications
8 | * `generate.sh` is a script to regenerate the final kustomize
9 |
--------------------------------------------------------------------------------
/resource_customizations/stacks.crossplane.io/ClusterStackInstall/health_test.yaml:
--------------------------------------------------------------------------------
1 | tests:
2 | - healthStatus:
3 | status: Progressing
4 | message: Waiting for stack to be installed
5 | inputPath: testdata/wait_stack.yaml
6 | - healthStatus:
7 | status: Progressing
8 | message: 'Resource is being created'
9 | inputPath: testdata/being_created_stack.yaml
10 | - healthStatus:
11 | status: Healthy
12 | message: 'Resource is available for use'
13 | inputPath: testdata/installed_stack.yaml
14 |
--------------------------------------------------------------------------------
/ui/src/app/applications/components/application-operation-state/application-operation-state.scss:
--------------------------------------------------------------------------------
1 | .application-operation-state {
2 | &__icons_container {
3 | position: absolute;
4 | left: 0;
5 | }
6 |
7 | &__icons_container_padding {
8 | left: 15px;
9 | position: relative;
10 | }
11 |
12 | &__message {
13 | white-space: normal;
14 | line-height: 16px;
15 | display: inline-block;
16 | vertical-align: middle;
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/ui/src/app/settings/components/project-sync-windows-edit/project-sync-windows-edit.scss:
--------------------------------------------------------------------------------
1 | .project-sync-windows-panel {
2 | &__form-row {
3 | position: relative;
4 | input.argo-field {
5 | margin-top: 29px;
6 | }
7 |
8 | .fa-times {
9 | position: absolute;
10 | cursor: pointer;
11 | left: -1.2em;
12 | top: 2.2em;
13 | }
14 | }
15 |
16 | form > .row > .columns {
17 | padding-left: 0;
18 | }
19 | }
--------------------------------------------------------------------------------
/test/e2e/testdata/one-deployment/deployment.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | name: main
5 | spec:
6 | replicas: 1
7 | progressDeadlineSeconds: 10
8 | selector:
9 | matchLabels:
10 | my-label: whatever
11 | template:
12 | metadata:
13 | labels:
14 | my-label: whatever
15 | spec:
16 | containers:
17 | - name: main
18 | command: ["sleep", "999"]
19 | image: alpine:3.10.2
20 | imagePullPolicy: IfNotPresent
21 |
22 |
--------------------------------------------------------------------------------
/ui/src/app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Argo CD
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/manifests/base/server/argocd-server-service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-server
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: server
8 | name: argocd-server
9 | spec:
10 | ports:
11 | - name: http
12 | protocol: TCP
13 | port: 80
14 | targetPort: 8080
15 | - name: https
16 | protocol: TCP
17 | port: 443
18 | targetPort: 8080
19 | selector:
20 | app.kubernetes.io/name: argocd-server
21 |
--------------------------------------------------------------------------------
/manifests/cluster-rbac/argocd-application-controller-clusterrole.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: rbac.authorization.k8s.io/v1
2 | kind: ClusterRole
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-application-controller
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: application-controller
8 | name: argocd-application-controller
9 | rules:
10 | - apiGroups:
11 | - '*'
12 | resources:
13 | - '*'
14 | verbs:
15 | - '*'
16 | - nonResourceURLs:
17 | - '*'
18 | verbs:
19 | - '*'
20 |
--------------------------------------------------------------------------------
/manifests/ha/base/overlays/argocd-application-controller-statefulset.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: StatefulSet
3 | metadata:
4 | name: argocd-application-controller
5 | spec:
6 | template:
7 | spec:
8 | containers:
9 | - name: argocd-application-controller
10 | command:
11 | - argocd-application-controller
12 | - --status-processors
13 | - "20"
14 | - --operation-processors
15 | - "10"
16 | - --redis
17 | - "argocd-redis-ha-haproxy:6379"
18 |
--------------------------------------------------------------------------------
/test/e2e/testdata/networking/guestbook-ui-deployment.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | name: guestbook-ui
5 | spec:
6 | replicas: 0
7 | revisionHistoryLimit: 3
8 | selector:
9 | matchLabels:
10 | app: guestbook-ui
11 | template:
12 | metadata:
13 | labels:
14 | app: guestbook-ui
15 | spec:
16 | containers:
17 | - image: gcr.io/heptio-images/ks-guestbook-demo:0.2
18 | name: guestbook-ui
19 | ports:
20 | - containerPort: 80
21 |
--------------------------------------------------------------------------------
/resource_customizations/operator.knative.dev/KnativeEventing/health_test.yaml:
--------------------------------------------------------------------------------
1 | tests:
2 | - healthStatus:
3 | status: Progressing
4 | message: "1: InstallSucceeded | True\n2: Ready | Unknown\n"
5 | inputPath: testdata/progressing.yaml
6 | - healthStatus:
7 | status: Degraded
8 | message: "1: InstallSucceeded | True\n2: Ready | randomstatus\n"
9 | inputPath: testdata/degraded.yaml
10 | - healthStatus:
11 | status: Healthy
12 | message: "KnativeEventing is healthy."
13 | inputPath: testdata/healthy.yaml
14 |
--------------------------------------------------------------------------------
/test/e2e/testdata/crd-validation/deployment.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | name: nginx-deployment
5 | labels:
6 | app: nginx
7 | spec:
8 | replicas: 0
9 | selector:
10 | matchLabels:
11 | app: nginx
12 | template:
13 | metadata:
14 | labels:
15 | app: nginx
16 | spec:
17 | containers:
18 | - name: nginx
19 | image: nginx:1.17.4-alpine
20 | ports:
21 | - containerPort: "80"
22 | imagePullPolicy: IfNotPresent
--------------------------------------------------------------------------------
/test/e2e/testdata/guestbook_local/guestbook-ui-deployment.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | name: guestbook-ui
5 | spec:
6 | replicas: 0
7 | revisionHistoryLimit: 3
8 | selector:
9 | matchLabels:
10 | app: guestbook-ui
11 | template:
12 | metadata:
13 | labels:
14 | app: guestbook-ui
15 | spec:
16 | containers:
17 | - image: gcr.io/heptio-images/ks-guestbook-demo:0.3
18 | name: guestbook-ui
19 | ports:
20 | - containerPort: 81
21 |
22 |
--------------------------------------------------------------------------------
/util/argo/normalizers/util.go:
--------------------------------------------------------------------------------
1 | package normalizers
2 |
3 | import (
4 | "fmt"
5 | "strings"
6 | )
7 |
8 | func getGroupKindForOverrideKey(key string) (string, string, error) {
9 | var group, kind string
10 | parts := strings.Split(key, "/")
11 |
12 | if len(parts) == 2 {
13 | group = parts[0]
14 | kind = parts[1]
15 | } else if len(parts) == 1 {
16 | kind = parts[0]
17 | } else {
18 | return "", "", fmt.Errorf("override key must be / or , got: '%s' ", key)
19 | }
20 | return group, kind, nil
21 | }
22 |
--------------------------------------------------------------------------------
/util/http/http_test.go:
--------------------------------------------------------------------------------
1 | package http
2 |
3 | import (
4 | "strings"
5 | "testing"
6 |
7 | "github.com/stretchr/testify/assert"
8 | )
9 |
10 | func TestCookieMaxLength(t *testing.T) {
11 |
12 | cookie, err := MakeCookieMetadata("foo", "bar")
13 | assert.NoError(t, err)
14 | assert.Equal(t, "foo=bar", cookie)
15 |
16 | cookie, err = MakeCookieMetadata("foo", strings.Repeat("_", 4093-3))
17 | assert.EqualError(t, err, "invalid cookie, at 4094 long it is longer than the max length of 4093")
18 | assert.Equal(t, "", cookie)
19 | }
20 |
--------------------------------------------------------------------------------
/resource_customizations/cert-manager.io/Issuer/health_test.yaml:
--------------------------------------------------------------------------------
1 | tests:
2 | - healthStatus:
3 | status: Progressing
4 | message: Initializing issuer
5 | inputPath: testdata/progressing_noStatus.yaml
6 | - healthStatus:
7 | status: Healthy
8 | message: The ACME account was registered with the ACME server
9 | inputPath: testdata/healthy_registered.yaml
10 | - healthStatus:
11 | status: Degraded
12 | message: "Failed to verify ACME account: acme: : 404 page not found\n"
13 | inputPath: testdata/degraded_acmeFailed.yaml
14 |
15 |
--------------------------------------------------------------------------------
/resource_customizations/certmanager.k8s.io/Issuer/health_test.yaml:
--------------------------------------------------------------------------------
1 | tests:
2 | - healthStatus:
3 | status: Progressing
4 | message: Initializing issuer
5 | inputPath: testdata/progressing_noStatus.yaml
6 | - healthStatus:
7 | status: Healthy
8 | message: The ACME account was registered with the ACME server
9 | inputPath: testdata/healthy_registered.yaml
10 | - healthStatus:
11 | status: Degraded
12 | message: "Failed to verify ACME account: acme: : 404 page not found\n"
13 | inputPath: testdata/degraded_acmeFailed.yaml
14 |
15 |
--------------------------------------------------------------------------------
/test/e2e/testdata/ksonnet/environments/dev/params.libsonnet:
--------------------------------------------------------------------------------
1 | local params = std.extVar("__ksonnet/params");
2 | local globals = import "globals.libsonnet";
3 | local envParams = params + {
4 | components +: {
5 | // Insert component parameter overrides here. Ex:
6 | // guestbook +: {
7 | // name: "guestbook-dev",
8 | // replicas: params.global.replicas,
9 | // },
10 | },
11 | };
12 |
13 | {
14 | components: {
15 | [x]: envParams.components[x] + globals, for x in std.objectFields(envParams.components)
16 | },
17 | }
18 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/c-role.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/sa.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/util/helm/testdata/dependency/Chart.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v2
2 | name: foobar
3 | description: A Helm chart for Kubernetes
4 | home: https://localhost
5 | dependencies:
6 | - name: mongodb
7 | version: 7.8.10
8 | repository: https://charts.bitnami.com/bitnami
9 | condition: mongodb.enabled
10 | - name: eventstore
11 | version: 0.2.5
12 | repository: https://eventstore.github.io/EventStore.Charts
13 | condition: eventstore.enabled
14 | maintainers:
15 | - name: estahn
16 | type: application
17 | version: 0.1.0
18 | appVersion: 1.16.0
--------------------------------------------------------------------------------
/util/helm/testdata/helm2-dependency/templates/externaldb-secrets.yaml:
--------------------------------------------------------------------------------
1 | {{- if not .Values.mariadb.enabled }}
2 | apiVersion: v1
3 | kind: Secret
4 | metadata:
5 | name: {{ printf "%s-%s" .Release.Name "externaldb" }}
6 | labels:
7 | app: {{ printf "%s-%s" .Release.Name "externaldb" }}
8 | chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
9 | release: "{{ .Release.Name }}"
10 | heritage: "{{ .Release.Service }}"
11 | type: Opaque
12 | data:
13 | db-password: {{ .Values.externalDatabase.password | b64enc | quote }}
14 | {{- end }}
15 |
--------------------------------------------------------------------------------
/resource_customizations/networking.gke.io/ManagedCertificate/health_test.yaml:
--------------------------------------------------------------------------------
1 | tests:
2 | - healthStatus:
3 | status: Progressing
4 | message: "At least one certificate is still being provisioned"
5 | inputPath: testdata/provisioning.yaml
6 | - healthStatus:
7 | status: Degraded
8 | message: "At least one certificate has failed to be provisioned"
9 | inputPath: testdata/failed.yaml
10 | - healthStatus:
11 | status: Healthy
12 | message: "All certificates are active"
13 | inputPath: testdata/active.yaml
14 |
--------------------------------------------------------------------------------
/test/e2e/testdata/ksonnet/environments/default/params.libsonnet:
--------------------------------------------------------------------------------
1 | local params = std.extVar("__ksonnet/params");
2 | local globals = import "globals.libsonnet";
3 | local envParams = params + {
4 | components +: {
5 | // Insert component parameter overrides here. Ex:
6 | // guestbook +: {
7 | // name: "guestbook-dev",
8 | // replicas: params.global.replicas,
9 | // },
10 | },
11 | };
12 |
13 | {
14 | components: {
15 | [x]: envParams.components[x] + globals, for x in std.objectFields(envParams.components)
16 | },
17 | }
18 |
--------------------------------------------------------------------------------
/manifests/base/repo-server/argocd-repo-server-service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-repo-server
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: repo-server
8 | name: argocd-repo-server
9 | spec:
10 | ports:
11 | - name: server
12 | protocol: TCP
13 | port: 8081
14 | targetPort: 8081
15 | - name: metrics
16 | protocol: TCP
17 | port: 8084
18 | targetPort: 8084
19 | selector:
20 | app.kubernetes.io/name: argocd-repo-server
21 |
--------------------------------------------------------------------------------
/util/helm/testdata/helm2-dependency/templates/tls-secrets.yaml:
--------------------------------------------------------------------------------
1 | {{- if .Values.ingress.enabled }}
2 | {{- range .Values.ingress.secrets }}
3 | apiVersion: v1
4 | kind: Secret
5 | metadata:
6 | name: {{ .name }}
7 | labels:
8 | app: {{ template "fullname" $ }}
9 | chart: "{{ $.Chart.Name }}-{{ $.Chart.Version }}"
10 | release: "{{ $.Release.Name }}"
11 | heritage: "{{ $.Release.Service }}"
12 | type: kubernetes.io/tls
13 | data:
14 | tls.crt: {{ .certificate | b64enc }}
15 | tls.key: {{ .key | b64enc }}
16 | ---
17 | {{- end }}
18 | {{- end }}
--------------------------------------------------------------------------------
/util/helm/testdata/minio/templates/secrets.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Secret
3 | metadata:
4 | name: {{ template "minio.fullname" . }}
5 | labels:
6 | app: {{ template "minio.name" . }}
7 | chart: {{ template "minio.chart" . }}
8 | release: {{ .Release.Name }}
9 | heritage: {{ .Release.Service }}
10 | type: Opaque
11 | data:
12 | accesskey: {{ .Values.accessKey | b64enc }}
13 | secretkey: {{ .Values.secretKey | b64enc }}
14 | {{- if .Values.gcsgateway.enabled }}
15 | gcs_key.json: {{ .Values.gcsgateway.gcsKeyJson | b64enc }}
16 | {{- end }}
--------------------------------------------------------------------------------
/util/helm/testdata/minio/Chart.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v2
2 | description: Minio is a high performance distributed object storage server, designed for large-scale private cloud infrastructure.
3 | name: minio
4 | version: 1.6.0
5 | appVersion: RELEASE.2018-07-10T01-42-11Z
6 | keywords:
7 | - storage
8 | - object-storage
9 | - S3
10 | home: https://minio.io
11 | icon: https://www.minio.io/img/logo_160x160.png
12 | sources:
13 | - https://github.com/minio/minio
14 | maintainers:
15 | - name: Acaleph
16 | email: hello@acale.ph
17 | - name: Minio
18 | email: dev@minio.io
19 |
--------------------------------------------------------------------------------
/resource_customizations/argoproj.io/Rollout/actions/discovery.lua:
--------------------------------------------------------------------------------
1 | actions = {}
2 | actions["resume"] = {["disabled"] = false}
3 | actions["restart"] = {["disabled"] = false}
4 |
5 | local paused = false
6 |
7 | if obj.status ~= nil and obj.status.pauseConditions ~= nil then
8 | paused = table.getn(obj.status.pauseConditions) > 0
9 | elseif obj.spec.paused ~= nil then
10 | paused = obj.spec.paused
11 | end
12 | if paused then
13 | actions["resume"]["disabled"] = false
14 | else
15 | actions["resume"]["disabled"] = true
16 | end
17 |
18 | return actions
19 |
--------------------------------------------------------------------------------
/test/e2e/testdata/guestbook/guestbook-ui-deployment.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | name: guestbook-ui
5 | spec:
6 | replicas: 0
7 | revisionHistoryLimit: 3
8 | selector:
9 | matchLabels:
10 | app: guestbook-ui
11 | template:
12 | metadata:
13 | labels:
14 | app: guestbook-ui
15 | spec:
16 | containers:
17 | - image: gcr.io/heptio-images/ks-guestbook-demo:0.2
18 | imagePullPolicy: IfNotPresent
19 | name: guestbook-ui
20 | ports:
21 | - containerPort: 80
22 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/svc.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/util/helm/testdata/helm2-dependency/Chart.yaml:
--------------------------------------------------------------------------------
1 | name: wordpress
2 | version: 2.1.10
3 | appVersion: 4.9.8
4 | description: Web publishing platform for building blogs and websites.
5 | icon: https://bitnami.com/assets/stacks/wordpress/img/wordpress-stack-220x234.png
6 | keywords:
7 | - wordpress
8 | - cms
9 | - blog
10 | - http
11 | - web
12 | - application
13 | - php
14 | home: http://www.wordpress.com/
15 | sources:
16 | - https://github.com/bitnami/bitnami-docker-wordpress
17 | maintainers:
18 | - name: bitnami-bot
19 | email: containers@bitnami.com
20 | engine: gotpl
21 |
--------------------------------------------------------------------------------
/manifests/base/application-controller/argocd-application-controller-rolebinding.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: rbac.authorization.k8s.io/v1
2 | kind: RoleBinding
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-application-controller
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: application-controller
8 | name: argocd-application-controller
9 | roleRef:
10 | apiGroup: rbac.authorization.k8s.io
11 | kind: Role
12 | name: argocd-application-controller
13 | subjects:
14 | - kind: ServiceAccount
15 | name: argocd-application-controller
16 |
--------------------------------------------------------------------------------
/manifests/ha/base/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 |
4 |
5 | patchesStrategicMerge:
6 | - overlays/argocd-repo-server-deployment.yaml
7 | - overlays/argocd-server-deployment.yaml
8 | - overlays/argocd-application-controller-statefulset.yaml
9 |
10 |
11 | images:
12 | - name: argoproj/argocd
13 | newName: argoproj/argocd
14 | newTag: latest
15 | resources:
16 | - ../../base/application-controller
17 | - ../../base/dex
18 | - ../../base/repo-server
19 | - ../../base/server
20 | - ../../base/config
21 | - ./redis-ha
22 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/rb.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/fixture/testrepos/ssh_host_ecdsa_key:
--------------------------------------------------------------------------------
1 | -----BEGIN OPENSSH PRIVATE KEY-----
2 | b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
3 | 1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQQpN5jG3SqHhyib1x6DwB2tA/GWZ7hm
4 | zTdIjPS6NKOdle7xK6QZim9KpJhmo1ake1735QB4ZJknyA1y8+Pz8aeBAAAAsI/h/DWP4f
5 | w1AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCk3mMbdKoeHKJvX
6 | HoPAHa0D8ZZnuGbNN0iM9Lo0o52V7vErpBmKb0qkmGajVqR7XvflAHhkmSfIDXLz4/Pxp4
7 | EAAAAgUhE0Inf5lP5ph20d/AbP0Ng8Q4c8hesBF4RKEFYFXGUAAAARcm9vdEAwZjcyZmJi
8 | NTkzZTEBAgMEBQYH
9 | -----END OPENSSH PRIVATE KEY-----
10 |
--------------------------------------------------------------------------------
/hack/installers/install-codegen-go-tools.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eux -o pipefail
3 |
4 | GO111MODULE=on go get github.com/gogo/protobuf/gogoproto@v1.3.1
5 | GO111MODULE=on go get sigs.k8s.io/controller-tools/cmd/controller-gen@v0.2.3
6 | GO111MODULE=on go get github.com/golang/protobuf/protoc-gen-go@v1.4.2
7 | GO111MODULE=on go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v1.12.2
8 | GO111MODULE=on go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger@v1.12.2
9 | GO111MODULE=on go get golang.org/x/tools/cmd/goimports@v0.0.0-20190627203933-19ff4fff8850
10 |
--------------------------------------------------------------------------------
/test/e2e/testdata/guestbook-with-namespace/guestbook-ui-deployment.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | name: guestbook-ui
5 | spec:
6 | replicas: 0
7 | revisionHistoryLimit: 3
8 | selector:
9 | matchLabels:
10 | app: guestbook-ui
11 | template:
12 | metadata:
13 | labels:
14 | app: guestbook-ui
15 | spec:
16 | containers:
17 | - image: gcr.io/heptio-images/ks-guestbook-demo:0.2
18 | imagePullPolicy: IfNotPresent
19 | name: guestbook-ui
20 | ports:
21 | - containerPort: 80
22 |
--------------------------------------------------------------------------------
/util/cache/client.go:
--------------------------------------------------------------------------------
1 | package cache
2 |
3 | import (
4 | "context"
5 | "errors"
6 | "time"
7 | )
8 |
9 | var ErrCacheMiss = errors.New("cache: key is missing")
10 |
11 | type Item struct {
12 | Key string
13 | Object interface{}
14 | // Expiration is the cache expiration time.
15 | Expiration time.Duration
16 | }
17 |
18 | type CacheClient interface {
19 | Set(item *Item) error
20 | Get(key string, obj interface{}) error
21 | Delete(key string) error
22 | OnUpdated(ctx context.Context, key string, callback func() error) error
23 | NotifyUpdated(key string) error
24 | }
25 |
--------------------------------------------------------------------------------
/resource_customizations/jaegertracing.io/Jaeger/health.lua:
--------------------------------------------------------------------------------
1 | health_status = {}
2 | if obj.status ~= nil then
3 | if obj.status.phase == "Running" then
4 | health_status.status = "Healthy"
5 | health_status.message = "Jaeger is Running"
6 | return health_status
7 | end
8 | if obj.status.phase == "Failed" then
9 | health_status.status = "Degraded"
10 | health_status.message = "Jaeger Failed For Some Reason"
11 | return health_status
12 | end
13 | end
14 | health_status.status = "Progressing"
15 | health_status.message = "Waiting for Jaeger"
16 | return health_status
--------------------------------------------------------------------------------
/test/e2e/testdata/always-outofsync/always-outofsync.yaml:
--------------------------------------------------------------------------------
1 | # This manifest will always be out of sync because the empty string for apiGroup will get defaulted
2 | # to rbac.authorization.k8s.io by kubernetes, resulting in a difference. This manifest is useful for
3 | # testing auto-sync and ensuring sure it does not fall into a sync loop.
4 | apiVersion: rbac.authorization.k8s.io/v1
5 | kind: RoleBinding
6 | metadata:
7 | name: always-outofsync
8 | subjects:
9 | - apiGroup: ""
10 | kind: User
11 | name: jane
12 | roleRef:
13 | apiGroup: ""
14 | kind: Role
15 | name: doesnt-matter
16 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/group.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/developer-guide/site.md:
--------------------------------------------------------------------------------
1 | # Site
2 |
3 | ## Developing And Testing
4 |
5 | The web site is build using `mkdocs` and `mkdocs-material`.
6 |
7 | To test:
8 |
9 | ```bash
10 | make serve-docs
11 | ```
12 |
13 | Check for broken external links:
14 |
15 | ```bash
16 | make lint-docs
17 | ```
18 |
19 | ## Deploying
20 |
21 | ```bash
22 | make publish-docs
23 | ```
24 |
25 | ## Analytics
26 |
27 | !!! tip
28 | Don't forget to disable your ad-blocker when testing.
29 |
30 | We collect [Google Analytics](https://analytics.google.com/analytics/web/#/report-home/a105170809w198079555p192782995).
--------------------------------------------------------------------------------
/hack/installers/install-kubectx-linux.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eux -o pipefail
3 |
4 | . $(dirname $0)/../tool-versions.sh
5 |
6 | [ -e $DOWNLOADS/kubectx.zip ] || curl -sLf --retry 3 -o $DOWNLOADS/kubectx.zip https://github.com/ahmetb/kubectx/archive/v${kubectx_version}.zip
7 | unzip $DOWNLOADS/kubectx.zip kubectx-${kubectx_version}/kubectx -d $DOWNLOADS
8 | unzip $DOWNLOADS/kubectx.zip kubectx-${kubectx_version}/kubens -d $DOWNLOADS
9 | mv $DOWNLOADS/kubectx-${kubectx_version}/kubectx $BIN/
10 | mv $DOWNLOADS/kubectx-${kubectx_version}/kubens $BIN/
11 | chmod +x $BIN/kubectx
12 | chmod +x $BIN/kubens
13 |
--------------------------------------------------------------------------------
/manifests/cluster-rbac/argocd-application-controller-clusterrolebinding.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: rbac.authorization.k8s.io/v1
2 | kind: ClusterRoleBinding
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-application-controller
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: application-controller
8 | name: argocd-application-controller
9 | roleRef:
10 | apiGroup: rbac.authorization.k8s.io
11 | kind: ClusterRole
12 | name: argocd-application-controller
13 | subjects:
14 | - kind: ServiceAccount
15 | name: argocd-application-controller
16 | namespace: argocd
17 |
--------------------------------------------------------------------------------
/test/e2e/testdata/crd-creation/crd.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: apiextensions.k8s.io/v1beta1
3 | kind: CustomResourceDefinition
4 | metadata:
5 | name: dummies.argoproj.io
6 | spec:
7 | group: argoproj.io
8 | version: v1alpha1
9 | scope: Namespaced
10 | names:
11 | kind: Dummy
12 | plural: dummies
13 | ---
14 | apiVersion: apiextensions.k8s.io/v1beta1
15 | kind: CustomResourceDefinition
16 | metadata:
17 | name: clusterdummies.argoproj.io
18 | spec:
19 | group: argoproj.io
20 | version: v1alpha1
21 | scope: Cluster
22 | names:
23 | kind: ClusterDummy
24 | plural: clusterdummies
25 |
--------------------------------------------------------------------------------
/test/e2e/testdata/ksonnet/app.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: 0.1.0
2 | environments:
3 | default:
4 | destination:
5 | namespace: default
6 | server: https://kubernetes.default.svc
7 | k8sVersion: v1.10.0
8 | path: default
9 | dev:
10 | destination:
11 | namespace: dev
12 | server: https://kubernetes.default.svc
13 | k8sVersion: v1.10.0
14 | path: dev
15 | prod:
16 | destination:
17 | namespace: prod
18 | server: https://kubernetes.default.svc
19 | k8sVersion: v1.10.0
20 | path: prod
21 | kind: ksonnet.io/app
22 | name: guestbook
23 | version: 0.0.1
24 |
--------------------------------------------------------------------------------
/util/helm/testdata/redis/Chart.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v2
2 | name: redis
3 | version: 3.6.5
4 | appVersion: 4.0.10
5 | description: Open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.
6 | keywords:
7 | - redis
8 | - keyvalue
9 | - database
10 | home: http://redis.io/
11 | icon: https://bitnami.com/assets/stacks/redis/img/redis-stack-220x234.png
12 | sources:
13 | - https://github.com/bitnami/bitnami-docker-redis
14 | maintainers:
15 | - name: bitnami-bot
16 | email: containers@bitnami.com
17 | engine: gotpl
18 |
--------------------------------------------------------------------------------
/test/e2e/testdata/guestbook-with-namespace/guestbook-ui-deployment-ns.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | name: guestbook-ui
5 | namespace: namespace
6 | spec:
7 | replicas: 0
8 | revisionHistoryLimit: 3
9 | selector:
10 | matchLabels:
11 | app: guestbook-ui
12 | template:
13 | metadata:
14 | labels:
15 | app: guestbook-ui
16 | spec:
17 | containers:
18 | - image: gcr.io/heptio-images/ks-guestbook-demo:0.2
19 | imagePullPolicy: IfNotPresent
20 | name: guestbook-ui
21 | ports:
22 | - containerPort: 80
23 |
--------------------------------------------------------------------------------
/ui/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | preset: 'ts-jest',
3 | testEnvironment: 'node',
4 | reporters: ['default', 'jest-junit'],
5 | collectCoverage: true,
6 | transformIgnorePatterns: ['node_modules/(?!(argo-ui)/)'],
7 | globals: {
8 | 'ts-jest': {
9 | isolatedModules: true,
10 | },
11 | },
12 | moduleNameMapper: {
13 | // https://github.com/facebook/jest/issues/3094
14 | '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/__mocks__/fileMock.js',
15 | '.+\\.(css|styl|less|sass|scss)$': 'jest-transform-css',
16 | },
17 | };
18 |
--------------------------------------------------------------------------------
/test/e2e/fixture/cmd.go:
--------------------------------------------------------------------------------
1 | package fixture
2 |
3 | import (
4 | "os"
5 | "os/exec"
6 | "strings"
7 |
8 | argoexec "github.com/argoproj/pkg/exec"
9 | )
10 |
11 | func Run(workDir, name string, args ...string) (string, error) {
12 | return RunWithStdin("", workDir, name, args...)
13 | }
14 |
15 | func RunWithStdin(stdin, workDir, name string, args ...string) (string, error) {
16 | cmd := exec.Command(name, args...)
17 | if stdin != "" {
18 | cmd.Stdin = strings.NewReader(stdin)
19 | }
20 | cmd.Env = os.Environ()
21 | cmd.Dir = workDir
22 |
23 | return argoexec.RunCommandExt(cmd, argoexec.CmdOpts{})
24 | }
25 |
--------------------------------------------------------------------------------
/util/text/label/label_test.go:
--------------------------------------------------------------------------------
1 | package label
2 |
3 | import (
4 | "testing"
5 |
6 | "github.com/stretchr/testify/assert"
7 | )
8 |
9 | func TestParseLabels(t *testing.T) {
10 | validLabels := []string{"key=value", "foo=bar", "intuit=inc"}
11 |
12 | result, err := Parse(validLabels)
13 | assert.NoError(t, err)
14 | assert.Len(t, result, 3)
15 |
16 | invalidLabels := []string{"key=value", "too=many=equals"}
17 | _, err = Parse(invalidLabels)
18 | assert.Error(t, err)
19 |
20 | emptyLabels := []string{}
21 | result, err = Parse(emptyLabels)
22 | assert.NoError(t, err)
23 | assert.Len(t, result, 0)
24 | }
25 |
--------------------------------------------------------------------------------
/hack/Dockerfile.dev-tools:
--------------------------------------------------------------------------------
1 | FROM argocd-test-tools:latest as base
2 |
3 | RUN ./install.sh codegen-tools
4 | RUN ./install.sh codegen-go-tools
5 | RUN ./install.sh lint-tools
6 |
7 | RUN mkdir -p /home/user && chmod 777 /home/user
8 | RUN HELM_HOME=/home/user/.helm helm2 init --client-only
9 |
10 | RUN git config --system user.name "ArgoCD Test User"
11 | RUN git config --system user.email "noreply@example.com"
12 |
13 | RUN mkdir -p /go/pkg && chmod 777 /go/pkg
14 |
15 | RUN mkdir -p /home/user/.cache && chmod 777 /home/user/.cache
16 |
17 | RUN apt-get clean && \
18 | rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
19 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/cm.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/cronjob.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/util/healthz/healthz.go:
--------------------------------------------------------------------------------
1 | package healthz
2 |
3 | import (
4 | "fmt"
5 | "net/http"
6 |
7 | log "github.com/sirupsen/logrus"
8 | )
9 |
10 | // ServeHealthCheck serves the health check endpoint.
11 | // ServeHealthCheck relies on the provided function to return an error if unhealthy and nil otherwise.
12 | func ServeHealthCheck(mux *http.ServeMux, f func() error) {
13 | mux.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
14 | if err := f(); err != nil {
15 | w.WriteHeader(http.StatusServiceUnavailable)
16 | log.Errorln(w, err)
17 | } else {
18 | fmt.Fprintln(w, "ok")
19 | }
20 | })
21 | }
22 |
--------------------------------------------------------------------------------
/manifests/base/dex/argocd-dex-server-service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | labels:
5 | app.kubernetes.io/name: argocd-dex-server
6 | app.kubernetes.io/part-of: argocd
7 | app.kubernetes.io/component: dex-server
8 | name: argocd-dex-server
9 | spec:
10 | ports:
11 | - name: http
12 | protocol: TCP
13 | port: 5556
14 | targetPort: 5556
15 | - name: grpc
16 | protocol: TCP
17 | port: 5557
18 | targetPort: 5557
19 | - name: metrics
20 | port: 5558
21 | protocol: TCP
22 | targetPort: 5558
23 | selector:
24 | app.kubernetes.io/name: argocd-dex-server
25 |
--------------------------------------------------------------------------------
/ui/src/app/applications/components/applications-container.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import {Route, RouteComponentProps, Switch} from 'react-router';
3 | import {ApplicationDetails} from './application-details/application-details';
4 | import {ApplicationsList} from './applications-list/applications-list';
5 |
6 | export const ApplicationsContainer = (props: RouteComponentProps) => (
7 |
8 |
9 |
10 |
11 | );
12 |
--------------------------------------------------------------------------------
/util/helm/testdata/redis/templates/redis-rolebinding.yaml:
--------------------------------------------------------------------------------
1 | {{- if .Values.rbac.create -}}
2 | apiVersion: rbac.authorization.k8s.io/v1beta1
3 | kind: RoleBinding
4 | metadata:
5 | name: {{ template "redis.fullname" . }}
6 | labels:
7 | app: {{ template "redis.name" . }}
8 | chart: {{ template "redis.chart" . }}
9 | release: "{{ .Release.Name }}"
10 | heritage: "{{ .Release.Service }}"
11 | roleRef:
12 | apiGroup: rbac.authorization.k8s.io
13 | kind: Role
14 | name: {{ template "redis.fullname" . }}
15 | subjects:
16 | - kind: ServiceAccount
17 | name: {{ template "redis.serviceAccountName" . }}
18 | {{- end -}}
19 |
--------------------------------------------------------------------------------
/test/e2e/testdata/openshift/manifests.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: authorization.openshift.io/v1
2 | kind: Role
3 | metadata:
4 | name: test-role
5 | rules:
6 | - apiGroups:
7 | - ""
8 | resources:
9 | - configmaps
10 | - secrets
11 | verbs:
12 | - get
13 | - list
14 | - watch
15 |
16 | ---
17 | apiVersion: authorization.openshift.io/v1
18 | kind: RoleBinding
19 | metadata:
20 | name: test-role-binding
21 | roleRef:
22 | name: test-role
23 | subjects:
24 | - kind: ServiceAccount
25 | name: test
26 |
27 | ---
28 | apiVersion: project.openshift.io/v1
29 | kind: Project
30 | metadata:
31 | name: test
32 |
--------------------------------------------------------------------------------
/test/fixture/revision_metadata/author.go:
--------------------------------------------------------------------------------
1 | package revision_metadata
2 |
3 | import (
4 | "fmt"
5 | "strings"
6 |
7 | argoexec "github.com/argoproj/pkg/exec"
8 |
9 | "github.com/argoproj/gitops-engine/pkg/utils/errors"
10 | )
11 |
12 | var Author string
13 |
14 | func init() {
15 | userName, err := argoexec.RunCommand("git", argoexec.CmdOpts{}, "config", "--get", "user.name")
16 | errors.CheckError(err)
17 | userEmail, err := argoexec.RunCommand("git", argoexec.CmdOpts{}, "config", "--get", "user.email")
18 | errors.CheckError(err)
19 | Author = fmt.Sprintf("%s <%s>", strings.TrimSpace(userName), strings.TrimSpace(userEmail))
20 | }
21 |
--------------------------------------------------------------------------------
/ui/src/app/settings/components/project-events/project-events.tsx:
--------------------------------------------------------------------------------
1 | import {MockupList} from 'argo-ui';
2 | import * as React from 'react';
3 |
4 | import {DataLoader, EventsList} from '../../../shared/components';
5 | import {services} from '../../../shared/services';
6 |
7 | export const ProjectEvents = (props: {projectName: string}) => (
8 |
9 | services.projects.events(props.projectName)} loadingRenderer={() => }>
10 | {events => }
11 |
12 |
13 | );
14 |
--------------------------------------------------------------------------------
/util/text/label/label.go:
--------------------------------------------------------------------------------
1 | package label
2 |
3 | import (
4 | "fmt"
5 | "strings"
6 | )
7 |
8 | const labelFieldDelimiter = "="
9 |
10 | func Parse(labels []string) (map[string]string, error) {
11 | var selectedLabels map[string]string
12 | if labels != nil {
13 | selectedLabels = map[string]string{}
14 | for _, r := range labels {
15 | fields := strings.Split(r, labelFieldDelimiter)
16 | if len(fields) != 2 {
17 | return nil, fmt.Errorf("labels should have key%svalue, but instead got: %s", labelFieldDelimiter, r)
18 | }
19 | selectedLabels[fields[0]] = fields[1]
20 | }
21 | }
22 | return selectedLabels, nil
23 | }
24 |
--------------------------------------------------------------------------------
/resource_customizations/cert-manager.io/Issuer/testdata/progressing_noStatus.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: cert-manager.io/v1alpha2
2 | kind: Issuer
3 | metadata:
4 | creationTimestamp: "2018-11-06T23:14:18Z"
5 | generation: 1
6 | name: test-issuer
7 | namespace: argocd
8 | resourceVersion: "48889060"
9 | selfLink: /apis/cert-manager.io/v1alpha2/namespaces/argocd/issuers/argo-cd-issuer
10 | uid: b0045219-e219-11e8-9f93-42010a80021d
11 | spec:
12 | acme:
13 | email: myemail@test.com
14 | http01: {}
15 | privateKeySecretRef:
16 | key: ""
17 | name: letsencrypt
18 | server: https://acme-v02.api.letsencrypt.org/directory
19 |
--------------------------------------------------------------------------------
/ui/src/app/shared/components/events-list/events-list.scss:
--------------------------------------------------------------------------------
1 | @import 'node_modules/argo-ui/src/styles/config';
2 |
3 | .events-list {
4 | &__event {
5 | border-left: 5px solid $argo-color-gray-4;
6 |
7 | &--Warning {
8 | border-left-color: $argo-failed-color;
9 | }
10 |
11 | &--Normal {
12 | border-left-color: $argo-success-color;
13 | }
14 |
15 | .row {
16 | line-height: 2;
17 | padding-top: 15px;
18 | padding-bottom: 15px;
19 | }
20 |
21 | .columns {
22 | white-space: normal;
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/util/resource/revision.go:
--------------------------------------------------------------------------------
1 | package resource
2 |
3 | import (
4 | "strconv"
5 |
6 | "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
7 | )
8 |
9 | func GetRevision(obj *unstructured.Unstructured) int64 {
10 | if obj == nil {
11 | return 0
12 | }
13 | for _, name := range []string{"deployment.kubernetes.io/revision", "rollout.argoproj.io/revision"} {
14 | text, ok := obj.GetAnnotations()[name]
15 | if ok {
16 | revision, _ := strconv.ParseInt(text, 10, 64)
17 | return revision
18 | }
19 | }
20 |
21 | text, ok := obj.UnstructuredContent()["revision"].(int64)
22 | if ok {
23 | return text
24 | }
25 |
26 | return 0
27 | }
28 |
--------------------------------------------------------------------------------
/resource_customizations/certmanager.k8s.io/Issuer/testdata/progressing_noStatus.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: certmanager.k8s.io/v1alpha1
2 | kind: Issuer
3 | metadata:
4 | creationTimestamp: "2018-11-06T23:14:18Z"
5 | generation: 1
6 | name: test-issuer
7 | namespace: argocd
8 | resourceVersion: "48889060"
9 | selfLink: /apis/certmanager.k8s.io/v1alpha1/namespaces/argocd/issuers/argo-cd-issuer
10 | uid: b0045219-e219-11e8-9f93-42010a80021d
11 | spec:
12 | acme:
13 | email: myemail@test.com
14 | http01: {}
15 | privateKeySecretRef:
16 | key: ""
17 | name: letsencrypt
18 | server: https://acme-v02.api.letsencrypt.org/directory
19 |
--------------------------------------------------------------------------------
/resource_customizations/operator.knative.dev/KnativeServing/health_test.yaml:
--------------------------------------------------------------------------------
1 | tests:
2 | - healthStatus:
3 | status: Progressing
4 | message: "1: DependenciesInstalled | True\n2: DeploymentsAvailable | True\n3: InstallSucceeded | True\n4: Ready | Unknown\n"
5 | inputPath: testdata/progressing.yaml
6 | - healthStatus:
7 | status: Degraded
8 | message: "1: DependenciesInstalled | True\n2: DeploymentsAvailable | True\n3: InstallSucceeded | True\n4: Ready | randomstatus\n"
9 | inputPath: testdata/degraded.yaml
10 | - healthStatus:
11 | status: Healthy
12 | message: "KnativeServing is healthy."
13 | inputPath: testdata/healthy.yaml
14 |
--------------------------------------------------------------------------------
/ui/src/app/applications/components/application-conditions/application-conditions.scss:
--------------------------------------------------------------------------------
1 | @import 'node_modules/argo-ui/src/styles/config';
2 |
3 | .application-conditions {
4 | &__condition {
5 | border-left: 5px solid $argo-color-gray-4;
6 |
7 | &--error {
8 | border-left-color: $argo-failed-color-dark;
9 | }
10 |
11 | &--warning {
12 | border-left-color: $argo-failed-color-light;
13 | }
14 |
15 | &--info {
16 | border-left-color: $argo-success-color;
17 | }
18 |
19 | .columns {
20 | white-space: normal;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/hack/install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eux -o pipefail
3 |
4 | export DOWNLOADS=/tmp/dl
5 | export BIN=${BIN:-/usr/local/bin}
6 |
7 | mkdir -p $DOWNLOADS
8 |
9 | ARCHITECTURE=""
10 | case $(uname -m) in
11 | x86_64) ARCHITECTURE="amd64" ;;
12 | arm|armv7l|armv8l|aarch64) dpkg --print-architecture | grep -q "arm64" && ARCHITECTURE="arm64" || ARCHITECTURE="arm" ;;
13 | esac
14 |
15 | if [ -z "$ARCHITECTURE" ]; then
16 | echo "Could not detect the architecture of the system"
17 | exit 1
18 | fi
19 |
20 | for product in $*; do
21 | ARCHITECTURE=$ARCHITECTURE "$(dirname $0)/installers/install-${product}.sh"
22 | done
23 |
--------------------------------------------------------------------------------
/ui/src/app/shared/context.ts:
--------------------------------------------------------------------------------
1 | import {AppContext as ArgoAppContext, NavigationApi, NotificationsApi, PopupApi} from 'argo-ui';
2 | import {History} from 'history';
3 | import * as React from 'react';
4 |
5 | export type AppContext = ArgoAppContext & {apis: {popup: PopupApi; notifications: NotificationsApi; navigation: NavigationApi; baseHref: string}};
6 |
7 | export interface ContextApis {
8 | popup: PopupApi;
9 | notifications: NotificationsApi;
10 | navigation: NavigationApi;
11 | baseHref: string;
12 | }
13 | export const Context = React.createContext(null);
14 | export const {Provider, Consumer} = Context;
15 |
--------------------------------------------------------------------------------
/ui/src/app/applications/components/application-create-panel/application-create-panel.scss:
--------------------------------------------------------------------------------
1 | @import 'node_modules/argo-ui/src/styles/config';
2 |
3 | .application-create-panel {
4 |
5 | &__yaml-button {
6 | position: absolute;
7 | right: 1em;
8 | top: 1em;
9 | }
10 |
11 | &__sync-params {
12 | padding-top: 5px;
13 | }
14 |
15 | .checkbox-container {
16 | margin: 0.5em ;
17 | }
18 |
19 | pre {
20 | font-family: monospace;
21 | line-height: normal;
22 | white-space: pre;
23 | }
24 |
25 | .row.argo-form-row .columns {
26 | padding-left: 0;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/util/helm/testdata/helm2-dependency/templates/secrets.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Secret
3 | metadata:
4 | name: {{ template "fullname" . }}
5 | labels:
6 | app: {{ template "fullname" . }}
7 | chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
8 | release: "{{ .Release.Name }}"
9 | heritage: "{{ .Release.Service }}"
10 | type: Opaque
11 | data:
12 | {{ if .Values.wordpressPassword }}
13 | wordpress-password: {{ default "" .Values.wordpressPassword | b64enc | quote }}
14 | {{ else }}
15 | wordpress-password: {{ randAlphaNum 10 | b64enc | quote }}
16 | {{ end }}
17 | smtp-password: {{ default "" .Values.smtpPassword | b64enc | quote }}
18 |
--------------------------------------------------------------------------------
/test/fixture/test/ci.go:
--------------------------------------------------------------------------------
1 | package test
2 |
3 | import (
4 | "os"
5 | "testing"
6 | )
7 |
8 | // invoke this method to indicate test that should be skipped on CI, i.e. you only need it for manual testing/locally
9 | func LocalOnly(t *testing.T) {
10 | if os.Getenv("CI") == "true" {
11 | t.Skipf("test %s skipped when envvar CI=true", t.Name())
12 | }
13 | }
14 |
15 | // invoke this method to indicate test should only run on CI, i.e. edge-case test on code that rarely changes and needs
16 | // extra software install
17 | func CIOnly(t *testing.T) {
18 | if os.Getenv("CI") != "true" {
19 | t.Skipf("test %s skipped when envvar CI!=true", t.Name())
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/ui/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "tslint:recommended", "tslint-react", "tslint-plugin-prettier", "tslint-config-prettier"
4 | ],
5 | "jsRules": {},
6 | "rules": {
7 | "prettier": true,
8 | "quotemark": [true, "single"],
9 | "no-var-requires": false,
10 | "interface-name": false,
11 | "jsx-no-multiline-js": false,
12 | "object-literal-sort-keys": false,
13 | "jsx-alignment": false,
14 | "max-line-length": [true, 180],
15 | "jsx-no-lambda": false,
16 | "array-type": false,
17 | "max-classes-per-file": false
18 | },
19 | "rulesDirectory": []
20 | }
21 |
--------------------------------------------------------------------------------
/test/e2e/pruning_required_test.go:
--------------------------------------------------------------------------------
1 | package e2e
2 |
3 | import (
4 | "testing"
5 |
6 | . "github.com/argoproj/gitops-engine/pkg/sync/common"
7 |
8 | . "github.com/argoproj/argo-cd/test/e2e/fixture/app"
9 | )
10 |
11 | // check we fail with message if we delete a non-prunable resource
12 | func TestPruningRequired(t *testing.T) {
13 | Given(t).
14 | Path("two-nice-pods").
15 | Prune(false).
16 | When().
17 | IgnoreErrors().
18 | Create().
19 | Sync().
20 | Then().
21 | Expect(OperationPhaseIs(OperationSucceeded)).
22 | When().
23 | DeleteFile("pod-2.yaml").
24 | Sync().
25 | Then().
26 | Expect(Error("", "1 resources require pruning"))
27 | }
28 |
--------------------------------------------------------------------------------
/test/e2e/testdata/ksonnet/components/params.libsonnet:
--------------------------------------------------------------------------------
1 | {
2 | global: {
3 | // User-defined global parameters; accessible to all component and environments, Ex:
4 | // replicas: 4,
5 | },
6 | components: {
7 | // Component-level parameters, defined initially from 'ks prototype use ...'
8 | // Each object below should correspond to a component in the components/ directory
9 | "guestbook-ui": {
10 | containerPort: 80,
11 | image: "gcr.io/heptio-images/ks-guestbook-demo:0.2",
12 | name: "ks-guestbook-ui",
13 | replicas: 0,
14 | servicePort: 80,
15 | type: "ClusterIP",
16 | command: null,
17 | },
18 | },
19 | }
20 |
--------------------------------------------------------------------------------
/cmd/argocd/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "github.com/argoproj/gitops-engine/pkg/utils/errors"
5 |
6 | commands "github.com/argoproj/argo-cd/cmd/argocd/commands"
7 |
8 | // load the gcp plugin (required to authenticate against GKE clusters).
9 | _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
10 | // load the oidc plugin (required to authenticate with OpenID Connect).
11 | _ "k8s.io/client-go/plugin/pkg/client/auth/oidc"
12 | // load the azure plugin (required to authenticate with AKS clusters).
13 | _ "k8s.io/client-go/plugin/pkg/client/auth/azure"
14 | )
15 |
16 | func main() {
17 | err := commands.NewCommand().Execute()
18 | errors.CheckError(err)
19 | }
20 |
--------------------------------------------------------------------------------
/resource_customizations/kafka.banzaicloud.io/KafkaCluster/health_test.yaml:
--------------------------------------------------------------------------------
1 | tests:
2 | - healthStatus:
3 | status: Progressing
4 | message: "Kafka Cluster is Reconciling."
5 | inputPath: testdata/reconciling.yaml
6 | - healthStatus:
7 | status: Progressing
8 | message: "Waiting for KafkaCluster"
9 | inputPath: testdata/updating.yaml
10 | - healthStatus:
11 | status: Degraded
12 | message: "Broker Config is out of Sync or CruiseControlState is not Ready"
13 | inputPath: testdata/degraded.yaml
14 | - healthStatus:
15 | status: Healthy
16 | message: "Kafka Brokers, CruiseControl and cluster are in Healthy State."
17 | inputPath: testdata/healthy.yaml
18 |
--------------------------------------------------------------------------------
/ui/src/app/shared/components/empty-state/empty-state.scss:
--------------------------------------------------------------------------------
1 | @import 'node_modules/argo-ui/src/styles/config';
2 |
3 | .empty-state {
4 | text-align: center;
5 | &__icon {
6 | position: relative;
7 | background-color: $argo-color-gray-4;
8 | width: 15em;
9 | height: 15em;
10 | border-radius: 7.5em;
11 | margin: 2em auto;
12 | i {
13 | position: absolute;
14 | top: 50%;
15 | left: 50%;
16 | transform: translateY(-50%) translateX(-50%);
17 | color: white;
18 | &::before {
19 | font-size: 10em;
20 | }
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ui/src/app/shared/services/user-service.ts:
--------------------------------------------------------------------------------
1 | import {UserInfo} from '../models';
2 | import requests from './requests';
3 |
4 | export class UserService {
5 | public login(username: string, password: string): Promise<{token: string}> {
6 | return requests
7 | .post('/session')
8 | .send({username, password})
9 | .then(res => ({token: res.body.token}));
10 | }
11 |
12 | public logout(): Promise {
13 | return requests.delete('/session').then(() => true);
14 | }
15 |
16 | public get(): Promise {
17 | return requests.get('/session/userinfo').then(res => res.body as UserInfo);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/ui/src/app/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "outDir": "./../../dist/app",
4 | "sourceMap": true,
5 | "noImplicitAny": true,
6 | "module": "esnext",
7 | "moduleResolution": "node",
8 | "target": "es5",
9 | "jsx": "react",
10 | "experimentalDecorators": true,
11 | "noUnusedLocals": true,
12 | "declaration": false,
13 | "lib": [
14 | "es2017",
15 | "dom"
16 | ]
17 | },
18 | "include": [
19 | "./**/*"
20 | ],
21 | "exclude": [
22 | "node_modules",
23 | "./**/*.test.ts",
24 | "./**/*.test.tsx"
25 | ]
26 | }
27 |
--------------------------------------------------------------------------------
/cmd/argocd-server/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "github.com/argoproj/gitops-engine/pkg/utils/errors"
5 |
6 | commands "github.com/argoproj/argo-cd/cmd/argocd-server/commands"
7 |
8 | // load the gcp plugin (required to authenticate against GKE clusters).
9 | _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
10 | // load the oidc plugin (required to authenticate with OpenID Connect).
11 | _ "k8s.io/client-go/plugin/pkg/client/auth/oidc"
12 | // load the azure plugin (required to authenticate with AKS clusters).
13 | _ "k8s.io/client-go/plugin/pkg/client/auth/azure"
14 | )
15 |
16 | func main() {
17 | err := commands.NewCommand().Execute()
18 | errors.CheckError(err)
19 | }
20 |
--------------------------------------------------------------------------------
/resource_customizations/stacks.crossplane.io/ClusterStackInstall/health.lua:
--------------------------------------------------------------------------------
1 | hs = {
2 | status = "Progressing",
3 | message = "Waiting for stack to be installed"
4 | }
5 | if obj.status ~= nil then
6 | if obj.status.conditionedStatus ~= nil then
7 | if obj.status.conditionedStatus.conditions ~= nil then
8 | for i, condition in ipairs(obj.status.conditionedStatus.conditions) do
9 | if condition.type == "Ready" then
10 | hs.message = condition.reason
11 | if condition.status == "True" then
12 | hs.status = "Healthy"
13 | return hs
14 | end
15 | end
16 | end
17 | end
18 | end
19 | end
20 | return hs
21 |
--------------------------------------------------------------------------------
/test/e2e/fixture/util.go:
--------------------------------------------------------------------------------
1 | package fixture
2 |
3 | import (
4 | "regexp"
5 | "strings"
6 | )
7 |
8 | var (
9 | matchFirstCap = regexp.MustCompile("(.)([A-Z][a-z]+)")
10 | matchAllCap = regexp.MustCompile("([a-z0-9])([A-Z])")
11 | )
12 |
13 | // returns dns friends string which is no longer than 63 characters and has specified postfix at the end
14 | func DnsFriendly(str string, postfix string) string {
15 | str = matchFirstCap.ReplaceAllString(str, "${1}-${2}")
16 | str = matchAllCap.ReplaceAllString(str, "${1}-${2}")
17 | str = strings.ToLower(str)
18 |
19 | if diff := len(str) + len(postfix) - 63; diff > 0 {
20 | str = str[:len(str)-diff]
21 | }
22 | return str + postfix
23 | }
24 |
--------------------------------------------------------------------------------
/util/helm/helmver_test.go:
--------------------------------------------------------------------------------
1 | package helm
2 |
3 | import (
4 | "testing"
5 |
6 | "github.com/stretchr/testify/assert"
7 | )
8 |
9 | func TestGetHelmVersion_Helm3(t *testing.T) {
10 | ver, err := getHelmVersion("./testdata/minio")
11 | assert.NoError(t, err)
12 | assert.Equal(t, ver.binaryName, HelmV3.binaryName)
13 | }
14 |
15 | func TestGetHelmVersion_Helm2(t *testing.T) {
16 | ver, err := getHelmVersion("./testdata/helm2-dependency")
17 | assert.NoError(t, err)
18 | assert.Equal(t, ver.binaryName, HelmV2.binaryName)
19 | }
20 |
21 | func TestGetHelmVersion_InvalidVersion(t *testing.T) {
22 | _, err := getHelmVersion("./testdata/invalid-version")
23 | assert.Error(t, err)
24 | }
25 |
--------------------------------------------------------------------------------
/resource_customizations/argoproj.io/AnalysisRun/testdata/pendingAnalysisRun.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: argoproj.io/v1alpha1
2 | kind: AnalysisRun
3 | metadata:
4 | name: analysis-template
5 | spec:
6 | metrics:
7 | - name: memory-usage
8 | interval: 10
9 | successCondition: result > 95
10 | failureCondition: result < 92
11 | provider:
12 | prometheus:
13 | address: http://prometheus-operator-prometheus.prometheus-operator:9090
14 | query: |
15 | sum(rate(nginx_ingress_controller_requests{ingress="canary-demo-preview",status!~"[4-5].*"}[2m])) / sum(rate(nginx_ingress_controller_requests{ingress="canary-demo-preview"}[2m]))
16 | status:
17 | phase: Pending
--------------------------------------------------------------------------------
/resource_customizations/cert-manager.io/Issuer/health.lua:
--------------------------------------------------------------------------------
1 | hs = {}
2 | if obj.status ~= nil then
3 | if obj.status.conditions ~= nil then
4 | for i, condition in ipairs(obj.status.conditions) do
5 | if condition.type == "Ready" and condition.status == "False" then
6 | hs.status = "Degraded"
7 | hs.message = condition.message
8 | return hs
9 | end
10 | if condition.type == "Ready" and condition.status == "True" then
11 | hs.status = "Healthy"
12 | hs.message = condition.message
13 | return hs
14 | end
15 | end
16 | end
17 | end
18 |
19 | hs.status = "Progressing"
20 | hs.message = "Initializing issuer"
21 | return hs
22 |
--------------------------------------------------------------------------------
/resource_customizations/kafka.strimzi.io/KafkaConnect/health.lua:
--------------------------------------------------------------------------------
1 | hs = {}
2 | if obj.status ~= nil then
3 | if obj.status.conditions ~= nil then
4 | for i, condition in ipairs(obj.status.conditions) do
5 | if condition.type == "NotReady" and condition.status == "True" then
6 | hs.status = "Degraded"
7 | hs.message = condition.message
8 | return hs
9 | end
10 | if condition.type == "Ready" and condition.status == "True" then
11 | hs.status = "Healthy"
12 | hs.message = ""
13 | return hs
14 | end
15 | end
16 | end
17 | end
18 |
19 | hs.status = "Progressing"
20 | hs.message = "Waiting for Kafka Connect"
21 | return hs
22 |
--------------------------------------------------------------------------------
/resource_customizations/kiali.io/Kiali/health.lua:
--------------------------------------------------------------------------------
1 | health_status = {}
2 | if obj.status ~= nil then
3 | if obj.status.conditions ~= nil then
4 | for i, condition in ipairs(obj.status.conditions) do
5 | health_status.message = condition.message
6 | if condition.reason == "Successful" then
7 | health_status.status = "Healthy"
8 | elseif condition.reason == "Running" then
9 | health_status.status = "Progressing"
10 | else
11 | health_status.status = "Degraded"
12 | end
13 | return health_status
14 | end
15 | end
16 | end
17 | health_status.status = "Progressing"
18 | health_status.message = "Waiting for Kiali"
19 | return health_status
--------------------------------------------------------------------------------
/test/fixture/certs/ssh_known_hosts:
--------------------------------------------------------------------------------
1 | [localhost]:2222 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLle3IiLWy+Cwz6/JT3K8PSGAEZAJnaxiWk0u9wkAvbZ9wHTffctg25coBa8J4Oo1l5GTIkezib2C4PjCE01BZM=
2 | [localhost]:2222 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDhRWyu6rg0Kd0ugLxNGZ8gzUjasF4Z0oT16RUC/L9EkJWATAu4TkkoozZ5AcejlS29jUZXTkKt0La4dmIooeMDNd8b5vg1dWzSDDHwxd8Wa/4XZsUlL6zkUFrnqOPaFc/7EwM3I30064zT/Gt0BVvQUxKoT/TTea2KhQqeLmlWh4cVWJBuhZ8YODUf2VD4TSYfvpcqW/jVw2oG8Pj3WIaaG2+Bcp4Q4sJS2K+2kkiqmZ/hiPK1X/UbMRN2zWQBp5UPWFY2ctuC9B8yhLwAyMkHzuWLfB39dNEdn1jTjDsOUWbC3kDsWHsY5gtBxN30NizBWC+83NpaWbrzAlGb0JV1
3 | [localhost]:2222 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG2t7Tcavp5oUqbbSwEKRaGwEq94b8BFK16AEBbgRCTp
4 |
--------------------------------------------------------------------------------
/resource_customizations/certmanager.k8s.io/Issuer/health.lua:
--------------------------------------------------------------------------------
1 | hs = {}
2 | if obj.status ~= nil then
3 | if obj.status.conditions ~= nil then
4 | for i, condition in ipairs(obj.status.conditions) do
5 | if condition.type == "Ready" and condition.status == "False" then
6 | hs.status = "Degraded"
7 | hs.message = condition.message
8 | return hs
9 | end
10 | if condition.type == "Ready" and condition.status == "True" then
11 | hs.status = "Healthy"
12 | hs.message = condition.message
13 | return hs
14 | end
15 | end
16 | end
17 | end
18 |
19 | hs.status = "Progressing"
20 | hs.message = "Initializing issuer"
21 | return hs
22 |
--------------------------------------------------------------------------------
/test/e2e/fixture/tmpl.go:
--------------------------------------------------------------------------------
1 | package fixture
2 |
3 | import (
4 | "bytes"
5 | "regexp"
6 | "strings"
7 | "text/template"
8 |
9 | . "github.com/argoproj/gitops-engine/pkg/utils/errors"
10 | )
11 |
12 | // utility method to template a string using a map
13 | func Tmpl(text string, values interface{}) string {
14 | parse, err := template.New(text).Parse(text)
15 | CheckError(err)
16 | buf := new(bytes.Buffer)
17 | err = parse.Execute(buf, values)
18 | CheckError(err)
19 | return buf.String()
20 | }
21 |
22 | // utility method to deal with white-space
23 | func NormalizeOutput(text string) string {
24 | return regexp.MustCompile(` +`).
25 | ReplaceAllString(strings.TrimSpace(text), " ")
26 | }
27 |
--------------------------------------------------------------------------------
/ui/src/assets/images/resources/netpol.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/pkg/apis/application/register.go:
--------------------------------------------------------------------------------
1 | package application
2 |
3 | const (
4 | // API Group
5 | Group string = "argoproj.io"
6 |
7 | // Application constants
8 | ApplicationKind string = "Application"
9 | ApplicationSingular string = "application"
10 | ApplicationPlural string = "applications"
11 | ApplicationShortName string = "app"
12 | ApplicationFullName string = ApplicationPlural + "." + Group
13 |
14 | // AppProject constants
15 | AppProjectKind string = "AppProject"
16 | AppProjectSingular string = "appproject"
17 | AppProjectPlural string = "appprojects"
18 | AppProjectShortName string = "appproject"
19 | AppProjectFullName string = AppProjectPlural + "." + Group
20 | )
21 |
--------------------------------------------------------------------------------
/resource_customizations/cert-manager.io/Certificate/health.lua:
--------------------------------------------------------------------------------
1 | hs = {}
2 | if obj.status ~= nil then
3 | if obj.status.conditions ~= nil then
4 | for i, condition in ipairs(obj.status.conditions) do
5 | if condition.type == "Ready" and condition.status == "False" then
6 | hs.status = "Degraded"
7 | hs.message = condition.message
8 | return hs
9 | end
10 | if condition.type == "Ready" and condition.status == "True" then
11 | hs.status = "Healthy"
12 | hs.message = condition.message
13 | return hs
14 | end
15 | end
16 | end
17 | end
18 |
19 | hs.status = "Progressing"
20 | hs.message = "Waiting for certificate"
21 | return hs
22 |
--------------------------------------------------------------------------------
/resource_customizations/certmanager.k8s.io/Certificate/health.lua:
--------------------------------------------------------------------------------
1 | hs = {}
2 | if obj.status ~= nil then
3 | if obj.status.conditions ~= nil then
4 | for i, condition in ipairs(obj.status.conditions) do
5 | if condition.type == "Ready" and condition.status == "False" then
6 | hs.status = "Degraded"
7 | hs.message = condition.message
8 | return hs
9 | end
10 | if condition.type == "Ready" and condition.status == "True" then
11 | hs.status = "Healthy"
12 | hs.message = condition.message
13 | return hs
14 | end
15 | end
16 | end
17 | end
18 |
19 | hs.status = "Progressing"
20 | hs.message = "Waiting for certificate"
21 | return hs
22 |
--------------------------------------------------------------------------------
/resource_customizations/install.istio.io/IstioOperator/health_test.yaml:
--------------------------------------------------------------------------------
1 | tests:
2 | - healthStatus:
3 | status: Progressing
4 | message: "Component is being updated to a different version."
5 | inputPath: testdata/progressing_updating.yaml
6 | - healthStatus:
7 | status: Progressing
8 | message: "Controller has started but not yet completed reconciliation loop for the component."
9 | inputPath: testdata/progressing_reconciling.yaml
10 | - healthStatus:
11 | status: Degraded
12 | message: "Component is in an error state."
13 | inputPath: testdata/degraded.yaml
14 | - healthStatus:
15 | status: Healthy
16 | message: "Component is healthy."
17 | inputPath: testdata/healthy.yaml
--------------------------------------------------------------------------------