Skip to content

Commit b89b049

Browse files
committed
controllers: make HelmChart compat with RFC-0005
This ensures the revision is correctly parsed for `Bucket` and `GitRepository` sources from which a chart is built, either in the legacy or new RFC-0005 format. Signed-off-by: Hidde Beydals <[email protected]>
1 parent fe8bc43 commit b89b049

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

controllers/helmchart_controller.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"crypto/tls"
2222
"errors"
2323
"fmt"
24+
"github.com/fluxcd/pkg/git"
2425
"net/url"
2526
"os"
2627
"path/filepath"
@@ -789,10 +790,10 @@ func (r *HelmChartReconciler) buildFromTarballArtifact(ctx context.Context, obj
789790
if obj.Spec.ReconcileStrategy == sourcev1.ReconcileStrategyRevision {
790791
rev := source.Revision
791792
if obj.Spec.SourceRef.Kind == sourcev1.GitRepositoryKind {
792-
// Split the reference by the `/` delimiter which may be present,
793-
// and take the last entry which contains the SHA.
794-
split := strings.Split(source.Revision, "/")
795-
rev = split[len(split)-1]
793+
rev = git.ExtractHashFromRevision(rev).String()
794+
}
795+
if obj.Spec.SourceRef.Kind == sourcev1.BucketKind {
796+
rev = backwardsCompatibleDigest(rev).Hex()
796797
}
797798
if kind := obj.Spec.SourceRef.Kind; kind == sourcev1.GitRepositoryKind || kind == sourcev1.BucketKind {
798799
// The SemVer from the metadata is at times used in e.g. the label metadata for a resource
@@ -1243,9 +1244,10 @@ func (r *HelmChartReconciler) requestsForGitRepositoryChange(o client.Object) []
12431244
return nil
12441245
}
12451246

1247+
revision := git.TransformRevision(repo.GetArtifact().Revision)
12461248
var reqs []reconcile.Request
12471249
for _, i := range list.Items {
1248-
if i.Status.ObservedSourceArtifactRevision != repo.GetArtifact().Revision {
1250+
if git.TransformRevision(i.Status.ObservedSourceArtifactRevision) != revision {
12491251
reqs = append(reqs, reconcile.Request{NamespacedName: client.ObjectKeyFromObject(&i)})
12501252
}
12511253
}
@@ -1270,9 +1272,10 @@ func (r *HelmChartReconciler) requestsForBucketChange(o client.Object) []reconci
12701272
return nil
12711273
}
12721274

1275+
revision := backwardsCompatibleDigest(bucket.GetArtifact().Revision)
12731276
var reqs []reconcile.Request
12741277
for _, i := range list.Items {
1275-
if i.Status.ObservedSourceArtifactRevision != bucket.GetArtifact().Revision {
1278+
if backwardsCompatibleDigest(i.Status.ObservedSourceArtifactRevision) != revision {
12761279
reqs = append(reqs, reconcile.Request{NamespacedName: client.ObjectKeyFromObject(&i)})
12771280
}
12781281
}

controllers/helmchart_controller_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1394,6 +1394,9 @@ func TestHelmChartReconciler_buildFromTarballArtifact(t *testing.T) {
13941394
}
13951395

13961396
got, err := r.buildFromTarballArtifact(context.TODO(), obj, tt.source, &b)
1397+
if err != nil {
1398+
t.Log(err)
1399+
}
13971400
g.Expect(err != nil).To(Equal(tt.wantErr != nil))
13981401
if tt.wantErr != nil {
13991402
g.Expect(reflect.TypeOf(err).String()).To(Equal(reflect.TypeOf(tt.wantErr).String()))

0 commit comments

Comments
 (0)