@@ -28,6 +28,7 @@ import (
2828
2929	securejoin "github.com/cyphar/filepath-securejoin" 
3030	"github.com/fluxcd/pkg/auth/azure" 
31+ 	"github.com/fluxcd/pkg/auth/github" 
3132	"github.com/fluxcd/pkg/runtime/logger" 
3233	"github.com/go-git/go-git/v5/plumbing/transport" 
3334	corev1 "k8s.io/api/core/v1" 
@@ -613,10 +614,11 @@ func (r *GitRepositoryReconciler) reconcileSource(ctx context.Context, sp *patch
613614// transport.ProxyOptions object using those settings and then returns it. 
614615func  (r  * GitRepositoryReconciler ) getProxyOpts (ctx  context.Context , proxySecretName ,
615616	proxySecretNamespace  string ) (* transport.ProxyOptions , error ) {
616- 	proxyData , err  :=  r .getSecretData (ctx , proxySecretName , proxySecretNamespace )
617+ 	proxySecret , err  :=  r .getSecret (ctx , proxySecretName , proxySecretNamespace )
617618	if  err  !=  nil  {
618619		return  nil , fmt .Errorf ("failed to get proxy secret '%s/%s': %w" , proxySecretNamespace , proxySecretName , err )
619620	}
621+ 	proxyData  :=  proxySecret .Data 
620622	address , ok  :=  proxyData ["address" ]
621623	if  ! ok  {
622624		return  nil , fmt .Errorf ("invalid proxy secret '%s/%s': key 'address' is missing" , proxySecretNamespace , proxySecretName )
@@ -635,12 +637,14 @@ func (r *GitRepositoryReconciler) getProxyOpts(ctx context.Context, proxySecretN
635637// URL and returns it. 
636638func  (r  * GitRepositoryReconciler ) getAuthOpts (ctx  context.Context , obj  * sourcev1.GitRepository , u  url.URL ) (* git.AuthOptions , error ) {
637639	var  authData  map [string ][]byte 
640+ 	var  authSecret  corev1.Secret 
638641	if  obj .Spec .SecretRef  !=  nil  {
639642		var  err  error 
640- 		authData , err  =  r .getSecretData (ctx , obj .Spec .SecretRef .Name , obj .GetNamespace ())
643+ 		authSecret , err  =  r .getSecret (ctx , obj .Spec .SecretRef .Name , obj .GetNamespace ())
641644		if  err  !=  nil  {
642645			return  nil , fmt .Errorf ("failed to get secret '%s/%s': %w" , obj .GetNamespace (), obj .Spec .SecretRef .Name , err )
643646		}
647+ 		authData  =  authSecret .Data 
644648	}
645649
646650	// Configure authentication strategy to access the source 
@@ -650,28 +654,36 @@ func (r *GitRepositoryReconciler) getAuthOpts(ctx context.Context, obj *sourcev1
650654	}
651655
652656	// Configure provider authentication if specified in spec 
653- 	if  obj .GetProvider () ==  sourcev1 .GitProviderAzure  {
657+ 	switch  obj .GetProvider () {
658+ 	case  sourcev1 .GitProviderAzure :
654659		authOpts .ProviderOpts  =  & git.ProviderOptions {
655- 			Name : obj . GetProvider () ,
660+ 			Name : sourcev1 . GitProviderAzure ,
656661			AzureOpts : []azure.OptFunc {
657662				azure .WithAzureDevOpsScope (),
658663			},
659664		}
665+ 	case  sourcev1 .GitProviderGitHub :
666+ 		authOpts .ProviderOpts  =  & git.ProviderOptions {
667+ 			Name : sourcev1 .GitProviderGitHub ,
668+ 			GitHubOpts : []github.OptFunc {
669+ 				github .WithSecret (authSecret ),
670+ 			},
671+ 		}
660672	}
661673
662674	return  authOpts , nil 
663675}
664676
665- func  (r  * GitRepositoryReconciler ) getSecretData (ctx  context.Context , name , namespace  string ) (map [ string ][] byte , error ) {
677+ func  (r  * GitRepositoryReconciler ) getSecret (ctx  context.Context , name , namespace  string ) (corev1. Secret , error ) {
666678	key  :=  types.NamespacedName {
667679		Namespace : namespace ,
668680		Name :      name ,
669681	}
670682	var  secret  corev1.Secret 
671683	if  err  :=  r .Client .Get (ctx , key , & secret ); err  !=  nil  {
672- 		return  nil , err 
684+ 		return  secret , err 
673685	}
674- 	return  secret . Data , nil 
686+ 	return  secret , nil 
675687}
676688
677689// reconcileArtifact archives a new Artifact to the Storage, if the current 
0 commit comments