Skip to content

Commit 3a2a6c6

Browse files
authored
feat: multisource support (#636)
* change: update argocd library from 2.7.9 to 2.8.4 for future multisource support Signed-off-by: David Vidal Villamide <david@askharilabs.com> * feat: added support for multisource applications. Signed-off-by: David Vidal Villamide <david@askharilabs.com> * feat: added multisource support to Git WriteBack method Signed-off-by: David Vidal Villamide <david@askharilabs.com> * changed: all Spec.Source references to enable multisource support Signed-off-by: David Vidal Villamide <david@askharilabs.com> * feat: added multisource support for write back method fix: pointer management at getApplicationSource function Signed-off-by: David Vidal Villamide <david@askharilabs.com> * feat: added write-back-target prefix to allow the use of values.yaml files These changes intend to add support for write-back-method git on multisource applications based on Helm sources and value files as Helm does. Also we tried to keep the same coding patterns and the previous features and flows untouched. Signed-off-by: David Vidal Villamide <david@askharilabs.com> * add: helmvalues word to expected dictionaries for check spelling tests Signed-off-by: David Vidal Villamide <david@askharilabs.com> * fix: readthedocs build.os parameter added and set to ubuntu-22.04 Signed-off-by: David Vidal Villamide <david@askharilabs.com> * fix: build.tools.python set to version 3.12 to create documentation Signed-off-by: David Vidal Villamide <david@askharilabs.com> * test: dded coverage for all the new code Signed-off-by: David Vidal Villamide <david@askharilabs.com> * fix: get image and tag parameter from getHelmParameterNamesFromAnnotation fix: set default values for image and tag parameters change: get application source type from Spec intead of Status values Signed-off-by: David Vidal Villamide <david@askharilabs.com> --------- Signed-off-by: David Vidal Villamide <david@askharilabs.com>
1 parent 82d59ef commit 3a2a6c6

File tree

11 files changed

+1194
-139
lines changed

11 files changed

+1194
-139
lines changed

.github/actions/spelling/expect.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ eec
1010
fbd
1111
ffb
1212
gitlab
13+
helmvalues
1314
jfrog
1415
mep
1516
myregistry

.readthedocs.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
version: 2
22
formats: all
3+
build:
4+
os: ubuntu-22.04
5+
tools:
6+
python: "3.12"
37
mkdocs:
48
fail_on_warning: false
59
python:

docs/basics/update-methods.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,3 +296,29 @@ argocd-image-updater.argoproj.io/write-back-target: "kustomization:/config/overl
296296
```
297297

298298
Note that the Kustomization directory needs to be specified, not a file, like when using Kustomize.
299+
300+
If you are using Helm and want the image updates parameters available in your values files,
301+
you may set the `write-back-target` to `helmvalues:<full path to your values file>`. This method commits changes to the values
302+
file back that is used to render the Helm template.
303+
304+
```yaml
305+
argocd-image-updater.argoproj.io/write-back-method: git # all git options are supported
306+
argocd-image-updater.argoproj.io/write-back-target: helmvalues
307+
```
308+
309+
You may also specify which helmvalues to update with either a path relative to the project source path...
310+
311+
```yaml
312+
argocd-image-updater.argoproj.io/write-back-target: "helmvalues:../../values.yaml"
313+
# if the Application spec.source.path = config/overlays/foo, this would update the helmvalues in config/base
314+
```
315+
316+
...or absolute with respect to the repository:
317+
318+
```yaml
319+
# absolute paths start with /
320+
argocd-image-updater.argoproj.io/write-back-target: "helmvalues:/helm/config/test-values.yaml"
321+
```
322+
323+
Note that using the helmvalues option needs the Helm values filename to be specified in the
324+
write-back-target annotation.

go.mod

Lines changed: 57 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ go 1.20
44

55
require (
66
github.com/Masterminds/semver/v3 v3.2.1
7-
github.com/argoproj/argo-cd/v2 v2.7.9
7+
github.com/argoproj/argo-cd/v2 v2.8.4
88
github.com/argoproj/gitops-engine v0.7.1-0.20230607163028-425d65e07695
99
github.com/argoproj/pkg v0.13.7-0.20230627120311-a4dd357b057e
1010
github.com/bradleyfalzon/ghinstallation v1.1.1
1111
github.com/distribution/distribution/v3 v3.0.0-20230722181636-7b502560cad4
1212
github.com/go-git/go-git/v5 v5.8.1
13+
github.com/miracl/conflate v1.3.2
1314
github.com/opencontainers/go-digest v1.0.0
14-
github.com/opencontainers/image-spec v1.0.2
15+
github.com/opencontainers/image-spec v1.1.0-rc.3
1516
github.com/patrickmn/go-cache v2.1.0+incompatible
1617
github.com/prometheus/client_golang v1.16.0
1718
github.com/sirupsen/logrus v1.9.3
@@ -26,18 +27,37 @@ require (
2627
k8s.io/api v0.24.2
2728
k8s.io/apimachinery v0.24.2
2829
k8s.io/client-go v1.5.2
29-
sigs.k8s.io/kustomize/api v0.11.4
30-
sigs.k8s.io/kustomize/kyaml v0.13.6
30+
sigs.k8s.io/kustomize/api v0.11.5
31+
sigs.k8s.io/kustomize/kyaml v0.13.7
3132
)
3233

3334
require (
34-
cloud.google.com/go/compute v1.18.0 // indirect
35+
cloud.google.com/go v0.110.4 // indirect
36+
cloud.google.com/go/iam v1.1.0 // indirect
37+
cloud.google.com/go/storage v1.33.0 // indirect
38+
github.com/BurntSushi/toml v0.3.1 // indirect
39+
github.com/ghodss/yaml v1.0.0 // indirect
40+
github.com/google/s2a-go v0.1.4 // indirect
41+
github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect
42+
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
43+
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
44+
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
45+
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
46+
go.opencensus.io v0.24.0 // indirect
47+
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
48+
google.golang.org/api v0.132.0 // indirect
49+
google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130 // indirect
50+
google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect
51+
)
52+
53+
require (
54+
cloud.google.com/go/compute v1.20.1 // indirect
3555
cloud.google.com/go/compute/metadata v0.2.3 // indirect
3656
dario.cat/mergo v1.0.0 // indirect
3757
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
3858
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
39-
github.com/Azure/go-autorest/autorest v0.11.24 // indirect
40-
github.com/Azure/go-autorest/autorest/adal v0.9.18 // indirect
59+
github.com/Azure/go-autorest/autorest v0.11.27 // indirect
60+
github.com/Azure/go-autorest/autorest/adal v0.9.20 // indirect
4161
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
4262
github.com/Azure/go-autorest/logger v0.2.1 // indirect
4363
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
@@ -47,16 +67,17 @@ require (
4767
github.com/acomagu/bufpipe v1.0.4 // indirect
4868
github.com/benbjohnson/clock v1.3.0 // indirect
4969
github.com/beorn7/perks v1.0.1 // indirect
70+
github.com/bmatcuk/doublestar/v4 v4.6.0 // indirect
5071
github.com/bombsimon/logrusr/v2 v2.0.1 // indirect
51-
github.com/bradleyfalzon/ghinstallation/v2 v2.1.0 // indirect
72+
github.com/bradleyfalzon/ghinstallation/v2 v2.5.0 // indirect
5273
github.com/cespare/xxhash/v2 v2.2.0 // indirect
5374
github.com/chai2010/gettext-go v0.0.0-20170215093142-bf70f2a70fb1 // indirect
5475
github.com/cloudflare/circl v1.3.3 // indirect
55-
github.com/coreos/go-oidc/v3 v3.4.0 // indirect
76+
github.com/coreos/go-oidc/v3 v3.6.0 // indirect
5677
github.com/davecgh/go-spew v1.1.1 // indirect
5778
github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
5879
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
59-
github.com/docker/distribution v2.8.1+incompatible // indirect
80+
github.com/docker/distribution v2.8.2+incompatible // indirect
6081
github.com/docker/go-metrics v0.0.1 // indirect
6182
github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 // indirect
6283
github.com/emicklei/go-restful/v3 v3.8.0 // indirect
@@ -66,38 +87,38 @@ require (
6687
github.com/fatih/camelcase v1.0.0 // indirect
6788
github.com/felixge/httpsnoop v1.0.3 // indirect
6889
github.com/fvbommel/sortorder v1.0.1 // indirect
69-
github.com/ghodss/yaml v1.0.0 // indirect
70-
github.com/go-errors/errors v1.0.1 // indirect
90+
github.com/go-errors/errors v1.4.2 // indirect
7191
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
7292
github.com/go-git/go-billy/v5 v5.4.1 // indirect
73-
github.com/go-logr/logr v1.2.3 // indirect
93+
github.com/go-jose/go-jose/v3 v3.0.0 // indirect
94+
github.com/go-logr/logr v1.2.4 // indirect
7495
github.com/go-logr/stdr v1.2.2 // indirect
7596
github.com/go-openapi/jsonpointer v0.19.5 // indirect
7697
github.com/go-openapi/jsonreference v0.20.0 // indirect
77-
github.com/go-openapi/swag v0.21.1 // indirect
98+
github.com/go-openapi/swag v0.22.3 // indirect
7899
github.com/go-redis/cache/v9 v9.0.0 // indirect
79100
github.com/gobwas/glob v0.2.3 // indirect
80101
github.com/gogo/protobuf v1.3.2 // indirect
81102
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
82103
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
83104
github.com/golang/protobuf v1.5.3 // indirect
84-
github.com/google/btree v1.0.1 // indirect
85-
github.com/google/gnostic v0.5.7-v3refs // indirect
105+
github.com/google/btree v1.1.2 // indirect
106+
github.com/google/gnostic v0.6.9 // indirect
86107
github.com/google/go-cmp v0.5.9 // indirect
87108
github.com/google/go-github/v29 v29.0.2 // indirect
88-
github.com/google/go-github/v45 v45.2.0 // indirect
109+
github.com/google/go-github/v53 v53.0.0 // indirect
89110
github.com/google/go-querystring v1.1.0 // indirect
90-
github.com/google/gofuzz v1.1.0 // indirect
111+
github.com/google/gofuzz v1.2.0 // indirect
91112
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
92113
github.com/google/uuid v1.3.0 // indirect
93114
github.com/gorilla/mux v1.8.0 // indirect
94115
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
95-
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect
116+
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
96117
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
97118
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
98-
github.com/hashicorp/go-retryablehttp v0.7.0 // indirect
119+
github.com/hashicorp/go-retryablehttp v0.7.4 // indirect
99120
github.com/hashicorp/golang-lru v0.5.4 // indirect
100-
github.com/imdario/mergo v0.3.13 // indirect
121+
github.com/imdario/mergo v0.3.16 // indirect
101122
github.com/inconshreveable/mousetrap v1.1.0 // indirect
102123
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
103124
github.com/jonboulle/clockwork v0.2.2 // indirect
@@ -124,35 +145,35 @@ require (
124145
github.com/prometheus/common v0.42.0 // indirect
125146
github.com/prometheus/procfs v0.10.1 // indirect
126147
github.com/r3labs/diff v1.1.0 // indirect
127-
github.com/redis/go-redis/v9 v9.0.2 // indirect
148+
github.com/redis/go-redis/v9 v9.0.5 // indirect
128149
github.com/robfig/cron/v3 v3.0.1 // indirect
129-
github.com/russross/blackfriday v1.5.2 // indirect
150+
github.com/russross/blackfriday v1.6.0 // indirect
130151
github.com/sergi/go-diff v1.1.0 // indirect
131152
github.com/skeema/knownhosts v1.2.0 // indirect
132153
github.com/stretchr/objx v0.5.0 // indirect
133154
github.com/vmihailenco/go-tinylfu v0.2.2 // indirect
134155
github.com/vmihailenco/msgpack/v5 v5.3.4 // indirect
135156
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
136157
github.com/xanzy/ssh-agent v0.3.3 // indirect
137-
github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca // indirect
138-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.31.0 // indirect
139-
go.opentelemetry.io/otel v1.11.1 // indirect
140-
go.opentelemetry.io/otel/trace v1.11.1 // indirect
141-
go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect
158+
github.com/xlab/treeprint v1.1.0 // indirect
159+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.42.0 // indirect
160+
go.opentelemetry.io/otel v1.16.0 // indirect
161+
go.opentelemetry.io/otel/metric v1.16.0 // indirect
162+
go.opentelemetry.io/otel/trace v1.16.0 // indirect
163+
go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd // indirect
142164
golang.org/x/mod v0.11.0 // indirect
143165
golang.org/x/net v0.12.0 // indirect
144-
golang.org/x/oauth2 v0.6.0 // indirect
166+
golang.org/x/oauth2 v0.10.0 // indirect
145167
golang.org/x/sys v0.10.0 // indirect
146168
golang.org/x/term v0.10.0 // indirect
147169
golang.org/x/text v0.11.0 // indirect
148-
golang.org/x/time v0.1.0 // indirect
170+
golang.org/x/time v0.3.0 // indirect
149171
golang.org/x/tools v0.6.0 // indirect
150172
google.golang.org/appengine v1.6.7 // indirect
151-
google.golang.org/genproto v0.0.0-20230320184635-7606e756e683 // indirect
152-
google.golang.org/grpc v1.53.0 // indirect
153-
google.golang.org/protobuf v1.30.0 // indirect
173+
google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 // indirect
174+
google.golang.org/grpc v1.56.2 // indirect
175+
google.golang.org/protobuf v1.31.0 // indirect
154176
gopkg.in/inf.v0 v0.9.1 // indirect
155-
gopkg.in/square/go-jose.v2 v2.6.0 // indirect
156177
gopkg.in/warnings.v0 v0.1.2 // indirect
157178
gopkg.in/yaml.v3 v3.0.1 // indirect
158179
k8s.io/apiextensions-apiserver v0.24.2 // indirect
@@ -166,7 +187,8 @@ require (
166187
k8s.io/kubectl v0.24.2 // indirect
167188
k8s.io/kubernetes v1.24.2 // indirect
168189
k8s.io/utils v0.0.0-20230209194617-a36077c30491 // indirect
169-
sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect
190+
oras.land/oras-go/v2 v2.2.0 // indirect
191+
sigs.k8s.io/json v0.0.0-20220525155127-227cbc7cc124 // indirect
170192
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
171193
sigs.k8s.io/yaml v1.3.0 // indirect
172194
)

0 commit comments

Comments
 (0)