@@ -54,6 +54,7 @@ import (
5454 "github.com/fluxcd/pkg/gittestserver"
5555 "github.com/fluxcd/pkg/ssh"
5656 sourcev1 "github.com/fluxcd/source-controller/api/v1beta2"
57+ "github.com/fluxcd/source-controller/pkg/git"
5758 "github.com/fluxcd/source-controller/pkg/git/libgit2/managed"
5859
5960 imagev1 "github.com/fluxcd/image-automation-controller/api/v1beta1"
@@ -484,7 +485,7 @@ func TestImageAutomationReconciler_e2e(t *testing.T) {
484485 // Clone the repo locally.
485486 cloneCtx , cancel := context .WithTimeout (ctx , timeout )
486487 defer cancel ()
487- localRepo , err := clone (cloneCtx , cloneLocalRepoURL , branch )
488+ localRepo , err := clone (cloneCtx , cloneLocalRepoURL , branch , nil )
488489 g .Expect (err ).ToNot (HaveOccurred (), "failed to clone git repo" )
489490 defer localRepo .Free ()
490491
@@ -628,7 +629,7 @@ func TestImageAutomationReconciler_e2e(t *testing.T) {
628629 // separate localRepo.
629630 cloneCtx , cancel := context .WithTimeout (ctx , timeout )
630631 defer cancel ()
631- localRepo , err := clone (cloneCtx , cloneLocalRepoURL , branch )
632+ localRepo , err := clone (cloneCtx , cloneLocalRepoURL , branch , nil )
632633 g .Expect (err ).ToNot (HaveOccurred (), "failed to clone git repo" )
633634 defer localRepo .Free ()
634635
@@ -880,7 +881,7 @@ func compareRepoWithExpected(g *WithT, repoURL, branch, fixture string, changeFi
880881 changeFixture (expected )
881882 cloneCtx , cancel := context .WithTimeout (ctx , timeout )
882883 defer cancel ()
883- repo , err := clone (cloneCtx , repoURL , branch )
884+ repo , err := clone (cloneCtx , repoURL , branch , nil )
884885 g .Expect (err ).ToNot (HaveOccurred ())
885886 defer repo .Free ()
886887 // NOTE: The workdir contains a trailing /. Clean it to not confuse the
@@ -897,7 +898,7 @@ func compareRepoWithExpected(g *WithT, repoURL, branch, fixture string, changeFi
897898// it tries to figure it out by looking at the remote url of origin. It returns a function
898899// which removes the transport options for this repo and sets the remote url of the origin
899900// back to the actual url. Callers are expected to call this function in a deferred manner.
900- func configureTransportOptsForRepo (repo * libgit2.Repository ) (func (), error ) {
901+ func configureTransportOptsForRepo (repo * libgit2.Repository , authOpts * git. AuthOptions ) (func (), error ) {
901902 origin , err := repo .Remotes .Lookup (originRemote )
902903 if err != nil {
903904 return nil , err
@@ -911,6 +912,7 @@ func configureTransportOptsForRepo(repo *libgit2.Repository) (func(), error) {
911912 transportOptsURL := u .Scheme + "://" + randStringRunes (5 )
912913 managed .AddTransportOptions (transportOptsURL , managed.TransportOptions {
913914 TargetURL : repoURL ,
915+ AuthOpts : authOpts ,
914916 })
915917
916918 err = repo .Remotes .SetUrl (originRemote , transportOptsURL )
@@ -926,7 +928,7 @@ func configureTransportOptsForRepo(repo *libgit2.Repository) (func(), error) {
926928func commitInRepo (g * WithT , repoURL , branch , msg string , changeFiles func (path string )) * libgit2.Oid {
927929 cloneCtx , cancel := context .WithTimeout (ctx , timeout )
928930 defer cancel ()
929- repo , err := clone (cloneCtx , repoURL , branch )
931+ repo , err := clone (cloneCtx , repoURL , branch , nil )
930932 g .Expect (err ).ToNot (HaveOccurred ())
931933 defer repo .Free ()
932934
@@ -940,7 +942,7 @@ func commitInRepo(g *WithT, repoURL, branch, msg string, changeFiles func(path s
940942 id , err := commitWorkDir (repo , branch , msg , sig )
941943 g .Expect (err ).ToNot (HaveOccurred ())
942944
943- cleanup , err := configureTransportOptsForRepo (repo )
945+ cleanup , err := configureTransportOptsForRepo (repo , nil )
944946 g .Expect (err ).ToNot (HaveOccurred ())
945947 defer cleanup ()
946948 origin , err := repo .Remotes .Lookup (originRemote )
@@ -1177,15 +1179,22 @@ func mockSignature(time time.Time) *git2go.Signature {
11771179 }
11781180}
11791181
1180- func clone (ctx context.Context , repoURL , branchName string ) (* git2go.Repository , error ) {
1182+ func clone (ctx context.Context , repoURL , branchName string , authOpts * git. AuthOptions ) (* git2go.Repository , error ) {
11811183 dir , err := os .MkdirTemp ("" , "iac-clone-*" )
11821184 if err != nil {
11831185 return nil , err
11841186 }
1185- transportOptsURL := "http://" + randStringRunes (5 )
1187+
1188+ u , err := url .Parse (repoURL )
1189+ if err != nil {
1190+ return nil , err
1191+ }
1192+
1193+ transportOptsURL := u .Scheme + "://" + randStringRunes (5 )
11861194 managed .AddTransportOptions (transportOptsURL , managed.TransportOptions {
11871195 TargetURL : repoURL ,
11881196 Context : ctx ,
1197+ AuthOpts : authOpts ,
11891198 })
11901199 defer managed .RemoveTransportOptions (transportOptsURL )
11911200
@@ -1214,7 +1223,7 @@ func clone(ctx context.Context, repoURL, branchName string) (*git2go.Repository,
12141223func waitForNewHead (g * WithT , repo * git2go.Repository , branch , preChangeHash string ) {
12151224 var commitToResetTo * git2go.Commit
12161225
1217- cleanup , err := configureTransportOptsForRepo (repo )
1226+ cleanup , err := configureTransportOptsForRepo (repo , nil )
12181227 g .Expect (err ).ToNot (HaveOccurred ())
12191228 defer cleanup ()
12201229
@@ -1272,7 +1281,7 @@ func commitIdFromBranch(repo *git2go.Repository, branchName string) string {
12721281}
12731282
12741283func getRemoteHead (repo * git2go.Repository , branchName string ) (* git2go.Oid , error ) {
1275- cleanup , err := configureTransportOptsForRepo (repo )
1284+ cleanup , err := configureTransportOptsForRepo (repo , nil )
12761285 if err != nil {
12771286 return nil , err
12781287 }
@@ -1460,7 +1469,7 @@ func testWithCustomRepoAndImagePolicy(
14601469 repoURL := gitServer .HTTPAddressWithCredentials () + repositoryPath
14611470 cloneCtx , cancel := context .WithTimeout (ctx , timeout )
14621471 defer cancel ()
1463- localRepo , err := clone (cloneCtx , repoURL , args .branch )
1472+ localRepo , err := clone (cloneCtx , repoURL , args .branch , nil )
14641473 g .Expect (err ).ToNot (HaveOccurred (), "failed to clone git repo" )
14651474 defer localRepo .Free ()
14661475
0 commit comments