From 011060fff5f2153ccca4a607e01e144753c7caaa Mon Sep 17 00:00:00 2001 From: Eyal Delarea Date: Mon, 8 Apr 2024 11:28:34 +0300 Subject: [PATCH] Artifactory Release Lifecycle Management - Add Import bundle command (#2472) --- artifactory_test.go | 36 +++++++++++ docs/lifecycle/importbundle/help.go | 13 ++++ go.mod | 6 +- go.sum | 12 ++-- inttestutils/distribution.go | 4 +- lifecycle/cli.go | 44 +++++++++++++ lifecycle_test.go | 12 ++++ testdata/import_bundle_repo_dependency.json | 5 ++ testdata/lifecycle/import/cli-tests-2.zip | Bin 0 -> 3022 bytes utils/cliutils/commandsflags.go | 4 ++ utils/tests/consts.go | 59 +++++++++--------- utils/tests/utils.go | 65 ++++++++++---------- 12 files changed, 189 insertions(+), 71 deletions(-) create mode 100644 docs/lifecycle/importbundle/help.go create mode 100644 testdata/import_bundle_repo_dependency.json create mode 100644 testdata/lifecycle/import/cli-tests-2.zip diff --git a/artifactory_test.go b/artifactory_test.go index dda5bd068..e0460d2da 100644 --- a/artifactory_test.go +++ b/artifactory_test.go @@ -224,6 +224,22 @@ func TestArtifactorySimpleUploadSpecUsingConfig(t *testing.T) { inttestutils.VerifyExistInArtifactory(tests.GetSimpleUploadExpectedRepo1(), searchFilePath, serverDetails, t) cleanArtifactoryTest() } +func TestReleaseBundleImportOnPrem(t *testing.T) { + // Cleanup + defer func() { + deleteReceivedReleaseBundle(t, "cli-tests", "2") + cleanArtifactoryTest() + }() + initArtifactoryTest(t, "") + initLifecycleCli() + // Sets the public key in Artifactory to accept the signed release bundle. + sendArtifactoryTrustedPublicKey(t, artHttpDetails) + // Import the release bundle + wd, err := os.Getwd() + assert.NoError(t, err) + testFilePath := filepath.Join(wd, "testdata", "lifecycle", "import", "cli-tests-2.zip") + assert.NoError(t, lcCli.Exec("rbi", testFilePath)) +} func TestArtifactoryUploadPathWithSpecialCharsAsNoRegex(t *testing.T) { initArtifactoryTest(t, "") @@ -5807,3 +5823,23 @@ func downloadModuleAndVerify() clientutils.ExecutionHandlerFunc { return false, nil } } + +func sendArtifactoryTrustedPublicKey(t *testing.T, artHttpDetails httputils.HttpClientDetails) { + // Send trusted public key to Artifactory + publicKeyPath := filepath.Join(tests.GetTestResourcesPath(), "lifecycle", "keys", "public.txt") + publicKey, err := os.ReadFile(publicKeyPath) + assert.NoError(t, err) + client, err := httpclient.ClientBuilder().Build() + assert.NoError(t, err) + requestBody := fmt.Sprintf(inttestutils.ArtifactoryGpgKeyCreatePattern, publicKey) + _, _, err = client.SendPost(*tests.JfrogUrl+"artifactory/api/security/keys/trusted", []byte(requestBody), artHttpDetails, "") + assert.NoError(t, err) +} + +func deleteReceivedReleaseBundle(t *testing.T, bundleName, bundleVersion string) { + client, err := httpclient.ClientBuilder().Build() + assert.NoError(t, err) + deleteApi := path.Join("artifactory/api/release/bundles/", bundleName, bundleVersion) + _, _, err = client.SendDelete(*tests.JfrogUrl+deleteApi, []byte{}, artHttpDetails, "Deleting release bundle") + assert.NoError(t, err) +} diff --git a/docs/lifecycle/importbundle/help.go b/docs/lifecycle/importbundle/help.go new file mode 100644 index 000000000..e12be2dc2 --- /dev/null +++ b/docs/lifecycle/importbundle/help.go @@ -0,0 +1,13 @@ +package importbundle + +var Usage = []string{"rbi [command options] "} + +func GetDescription() string { + return "Import a local release bundle archive to Artifactory" +} + +func GetArguments() string { + return ` path to archive + Path to the release bundle archive on the filesystem +` +} diff --git a/go.mod b/go.mod index 30d6545a4..fa461dfcc 100644 --- a/go.mod +++ b/go.mod @@ -137,11 +137,11 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect ) -// replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20240327155856-8054e0dc39f5 +replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20240408074156-13680c04f22e -// replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20240327154209-77a304635e42 +replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20240408071430-62ee0279ac58 -// replace github.com/jfrog/jfrog-cli-security => github.com/jfrog/jfrog-cli-security v1.0.5-0.20240321101458-c86ea9b28dfd +replace github.com/jfrog/jfrog-cli-security => github.com/jfrog/jfrog-cli-security v1.0.6-0.20240408061620-c9b84da33d5e // replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go dev diff --git a/go.sum b/go.sum index 40a7057d9..fd327bf24 100644 --- a/go.sum +++ b/go.sum @@ -135,12 +135,12 @@ github.com/jfrog/gofrog v1.6.3 h1:F7He0+75HcgCe6SGTSHLFCBDxiE2Ja0tekvvcktW6wc= github.com/jfrog/gofrog v1.6.3/go.mod h1:SZ1EPJUruxrVGndOzHd+LTiwWYKMlHqhKD+eu+v5Hqg= github.com/jfrog/jfrog-apps-config v1.0.1 h1:mtv6k7g8A8BVhlHGlSveapqf4mJfonwvXYLipdsOFMY= github.com/jfrog/jfrog-apps-config v1.0.1/go.mod h1:8AIIr1oY9JuH5dylz2S6f8Ym2MaadPLR6noCBO4C22w= -github.com/jfrog/jfrog-cli-core/v2 v2.50.0 h1:QmjSIktMKAbNH7OGY+eVZKx9husqgMANSI5kB8MlvlA= -github.com/jfrog/jfrog-cli-core/v2 v2.50.0/go.mod h1:95AsjwlMLNWU0v71/3dS715e1RAQfvPO47RRHz2xKh8= -github.com/jfrog/jfrog-cli-security v1.0.5 h1:tBJWiSTiBYpFB5LlHTUeBZ1wYdnrsG0ILNcHGKCiPgc= -github.com/jfrog/jfrog-cli-security v1.0.5/go.mod h1:ipG+b3qQqF0M8SFKkZ7DlMUsgMpdL+iIHc40j9JEs3E= -github.com/jfrog/jfrog-client-go v1.39.0 h1:GZ1qbpUDzYz8ZEycYicDkbVMN2H0VSCuz8mUNTyf7tc= -github.com/jfrog/jfrog-client-go v1.39.0/go.mod h1:tUyEmxznphh0nwAGo6xz9Sps7RRW/TBMxIJZteo+j2k= +github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20240408074156-13680c04f22e h1:PjCzGWHyJqK4j1MP3osPDDAW6KBXMJlBypOxKtp/ZKo= +github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20240408074156-13680c04f22e/go.mod h1:qXAP68g+DlyX2wk5znNbQdK2CcEHfOLOfYXPzdlnkxI= +github.com/jfrog/jfrog-cli-security v1.0.6-0.20240408061620-c9b84da33d5e h1:cB+UwVdZuds5fZ5BEcnvb6GqUvXFbo3oZa0PKdkylFc= +github.com/jfrog/jfrog-cli-security v1.0.6-0.20240408061620-c9b84da33d5e/go.mod h1:Bxir0QA3vDFCqnGP4GgPTPb0sWRaVONwm9+npDGx8kg= +github.com/jfrog/jfrog-client-go v1.28.1-0.20240408071430-62ee0279ac58 h1:yyhOfECY3WGs6MsnJQWm/U7DYNIzxBiVlEwQ3RvqxwQ= +github.com/jfrog/jfrog-client-go v1.28.1-0.20240408071430-62ee0279ac58/go.mod h1:tUyEmxznphh0nwAGo6xz9Sps7RRW/TBMxIJZteo+j2k= github.com/jszwec/csvutil v1.10.0 h1:upMDUxhQKqZ5ZDCs/wy+8Kib8rZR8I8lOR34yJkdqhI= github.com/jszwec/csvutil v1.10.0/go.mod h1:/E4ONrmGkwmWsk9ae9jpXnv9QT8pLHEPcCirMFhxG9I= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= diff --git a/inttestutils/distribution.go b/inttestutils/distribution.go index 90b1bfde0..2f02df586 100644 --- a/inttestutils/distribution.go +++ b/inttestutils/distribution.go @@ -26,7 +26,7 @@ import ( const ( distributionGpgKeyCreatePattern = `{"public_key":"%s","private_key":"%s"}` - artifactoryGpgKeyCreatePattern = `{"alias":"cli tests distribution key","public_key":"%s"}` + ArtifactoryGpgKeyCreatePattern = `{"alias":"cli tests distribution key","public_key":"%s"}` ) type distributableDistributionStatus string @@ -91,7 +91,7 @@ func SendGpgKeys(artHttpDetails httputils.HttpClientDetails, distHttpDetails htt } // Send public key to Artifactory - content = fmt.Sprintf(artifactoryGpgKeyCreatePattern, publicKey) + content = fmt.Sprintf(ArtifactoryGpgKeyCreatePattern, publicKey) resp, body, err = client.SendPost(*tests.JfrogUrl+"artifactory/api/security/keys/trusted", []byte(content), artHttpDetails, "") coreutils.ExitOnErr(err) if err = errorutils.CheckResponseStatusWithBody(resp, body, http.StatusCreated, http.StatusConflict); err != nil { diff --git a/lifecycle/cli.go b/lifecycle/cli.go index 7c6f077c3..dd7dd2bc0 100644 --- a/lifecycle/cli.go +++ b/lifecycle/cli.go @@ -15,6 +15,7 @@ import ( rbDeleteRemote "github.com/jfrog/jfrog-cli/docs/lifecycle/deleteremote" rbDistribute "github.com/jfrog/jfrog-cli/docs/lifecycle/distribute" rbExport "github.com/jfrog/jfrog-cli/docs/lifecycle/export" + rbImport "github.com/jfrog/jfrog-cli/docs/lifecycle/importbundle" rbPromote "github.com/jfrog/jfrog-cli/docs/lifecycle/promote" "github.com/jfrog/jfrog-cli/utils/cliutils" "github.com/jfrog/jfrog-cli/utils/distribution" @@ -102,6 +103,18 @@ func GetCommands() []cli.Command { Category: lcCategory, Action: deleteRemote, }, + { + Name: "release-bundle-import", + Aliases: []string{"rbi"}, + Flags: cliutils.GetCommandFlags(cliutils.ReleaseBundleImport), + Usage: rbImport.GetDescription(), + HelpName: coreCommon.CreateUsage("rbi", rbImport.GetDescription(), rbImport.Usage), + UsageText: rbImport.GetArguments(), + ArgsUsage: common.CreateEnvVars(), + BashComplete: coreCommon.CreateBashCompletionFunc(), + Category: lcCategory, + Action: releaseBundleImport, + }, }) } @@ -279,6 +292,13 @@ func deleteRemote(c *cli.Context) error { } func export(c *cli.Context) error { + if show, err := cliutils.ShowCmdHelpIfNeeded(c, c.Args()); show || err != nil { + return err + } + + if c.NArg() < 2 { + return cliutils.WrongNumberOfArgumentsHandler(c) + } lcDetails, err := createLifecycleDetailsByFlags(c) if err != nil { return err @@ -296,6 +316,30 @@ func export(c *cli.Context) error { return commands.Exec(exportCmd) } +func releaseBundleImport(c *cli.Context) error { + if show, err := cliutils.ShowCmdHelpIfNeeded(c, c.Args()); show || err != nil { + return err + } + + if c.NArg() != 1 { + return cliutils.WrongNumberOfArgumentsHandler(c) + } + + rtDetails, err := createLifecycleDetailsByFlags(c) + if err != nil { + return err + } + importCmd := lifecycle.NewReleaseBundleImportCommand() + if err != nil { + return err + } + importCmd. + SetServerDetails(rtDetails). + SetFilepath(c.Args().Get(0)) + + return commands.Exec(importCmd) +} + func validateDistributeCommand(c *cli.Context) error { if err := distribution.ValidateReleaseBundleDistributeCmd(c); err != nil { return err diff --git a/lifecycle_test.go b/lifecycle_test.go index fc3b105d5..455f035d8 100644 --- a/lifecycle_test.go +++ b/lifecycle_test.go @@ -159,6 +159,18 @@ func TestLifecycleFullFlow(t *testing.T) { } +// Import bundles only work on onPerm platforms +func TestImportReleaseBundle(t *testing.T) { + cleanCallback := initLifecycleTest(t) + defer cleanCallback() + wd, err := os.Getwd() + assert.NoError(t, err) + testFilePath := filepath.Join(wd, "testdata", "lifecycle", "import", "cli-tests-2.zip") + // Verify not supported + err = lcCli.Exec("rbi", testFilePath) + assert.Error(t, err) +} + func deleteExportedReleaseBundle(t *testing.T, rbName string) { assert.NoError(t, os.RemoveAll(rbName)) } diff --git a/testdata/import_bundle_repo_dependency.json b/testdata/import_bundle_repo_dependency.json new file mode 100644 index 000000000..1f1b6337e --- /dev/null +++ b/testdata/import_bundle_repo_dependency.json @@ -0,0 +1,5 @@ +{ + "key": "npm-prod", + "rclass": "local", + "packageType": "generic" +} diff --git a/testdata/lifecycle/import/cli-tests-2.zip b/testdata/lifecycle/import/cli-tests-2.zip new file mode 100644 index 0000000000000000000000000000000000000000..68b882959f8b66ac5bafadcc97ccac97ad8eafcc GIT binary patch literal 3022 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 BdsP4c literal 0 HcmV?d00001 diff --git a/utils/cliutils/commandsflags.go b/utils/cliutils/commandsflags.go index a886e51f6..445c0f588 100644 --- a/utils/cliutils/commandsflags.go +++ b/utils/cliutils/commandsflags.go @@ -124,6 +124,7 @@ const ( ReleaseBundleDeleteLocal = "release-bundle-delete-local" ReleaseBundleDeleteRemote = "release-bundle-delete-remote" ReleaseBundleExport = "release-bundle-export" + ReleaseBundleImport = "release-bundle-import" // Access Token Create commands keys AccessTokenCreate = "access-token-create" @@ -2024,6 +2025,9 @@ var commandFlags = map[string][]string{ platformUrl, user, password, accessToken, serverId, lcPathMappingTarget, lcPathMappingPattern, Project, downloadMinSplit, downloadSplitCount, }, + ReleaseBundleImport: { + user, password, accessToken, serverId, platformUrl, + }, // Mission Control's commands McConfig: { mcUrl, mcAccessToken, mcInteractive, diff --git a/utils/tests/consts.go b/utils/tests/consts.go index 2ea55ba4a..de4152d01 100644 --- a/utils/tests/consts.go +++ b/utils/tests/consts.go @@ -13,6 +13,7 @@ const ( ArchiveEntriesDownload = "archive_entries_download_spec.json" ArchiveEntriesUpload = "archive_entries_upload_spec.json" ArtifactoryEndpoint = "artifactory/" + LifecycleEndpoint = "lifecycle/" BuildAddDepsDoubleRemoteSpec = "build_add_deps_double_remote_spec.json" BuildAddDepsDoubleSpec = "build_add_deps_double_spec.json" BuildAddDepsRemoteSpec = "build_add_deps_simple_remote_spec.json" @@ -161,38 +162,40 @@ const ( WinSimpleUploadSpec = "win_simple_upload_spec.json" XrayEndpoint = "xray/" YarnRemoteRepositoryConfig = "yarn_remote_repository_config.json" + ReleaseLifecycleImportDependencySpec = "import_bundle_repo_dependency.json" ) var ( // Repositories - DistRepo1 = "cli-dist1" - DistRepo2 = "cli-dist2" - GoRepo = "cli-go" - GoRemoteRepo = "cli-go-remote" - GoVirtualRepo = "cli-go-virtual" - TerraformRepo = "cli-terraform" - GradleRepo = "cli-gradle" - MvnRemoteRepo = "cli-mvn-remote" - GradleRemoteRepo = "cli-gradle-remote" - MvnRepo1 = "cli-mvn1" - MvnRepo2 = "cli-mvn2" - NpmRepo = "cli-npm" - NpmRemoteRepo = "cli-npm-remote" - NugetRemoteRepo = "cli-nuget-remote" - YarnRemoteRepo = "cli-yarn-remote" - PypiRemoteRepo = "cli-pypi-remote" - PypiVirtualRepo = "cli-pypi-virtual" - PipenvRemoteRepo = "cli-pipenv-pypi-remote" - PipenvVirtualRepo = "cli-pipenv-pypi-virtual" - DockerLocalRepo = "cli-docker-local" - DockerLocalPromoteRepo = "cli-docker-local-promote" - DockerRemoteRepo = "cli-docker-remote" - DockerVirtualRepo = "cli-docker-virtual" - RtDebianRepo = "cli-debian" - RtLfsRepo = "cli-lfs" - RtRepo1 = "cli-rt1" - RtRepo2 = "cli-rt2" - RtVirtualRepo = "cli-rt-virtual" + DistRepo1 = "cli-dist1" + DistRepo2 = "cli-dist2" + GoRepo = "cli-go" + GoRemoteRepo = "cli-go-remote" + GoVirtualRepo = "cli-go-virtual" + TerraformRepo = "cli-terraform" + GradleRepo = "cli-gradle" + MvnRemoteRepo = "cli-mvn-remote" + GradleRemoteRepo = "cli-gradle-remote" + MvnRepo1 = "cli-mvn1" + MvnRepo2 = "cli-mvn2" + NpmRepo = "cli-npm" + NpmRemoteRepo = "cli-npm-remote" + NugetRemoteRepo = "cli-nuget-remote" + YarnRemoteRepo = "cli-yarn-remote" + PypiRemoteRepo = "cli-pypi-remote" + PypiVirtualRepo = "cli-pypi-virtual" + PipenvRemoteRepo = "cli-pipenv-pypi-remote" + PipenvVirtualRepo = "cli-pipenv-pypi-virtual" + DockerLocalRepo = "cli-docker-local" + DockerLocalPromoteRepo = "cli-docker-local-promote" + DockerRemoteRepo = "cli-docker-remote" + DockerVirtualRepo = "cli-docker-virtual" + RtDebianRepo = "cli-debian" + ReleaseLifecycleDependencyRepo = "npm-prod" + RtLfsRepo = "cli-lfs" + RtRepo1 = "cli-rt1" + RtRepo2 = "cli-rt2" + RtVirtualRepo = "cli-rt-virtual" // Repositories that are assigned to an environment. RtDevRepo = "cli-rt-dev" RtProdRepo1 = "cli-rt-prod1" diff --git a/utils/tests/utils.go b/utils/tests/utils.go index 4dba374b8..e1e6b6396 100644 --- a/utils/tests/utils.go +++ b/utils/tests/utils.go @@ -241,37 +241,38 @@ func GetBuildInfo(serverDetails *config.ServerDetails, buildName, buildNumber st } var reposConfigMap = map[*string]string{ - &DistRepo1: DistributionRepoConfig1, - &DistRepo2: DistributionRepoConfig2, - &GoRepo: GoLocalRepositoryConfig, - &GoRemoteRepo: GoRemoteRepositoryConfig, - &GoVirtualRepo: GoVirtualRepositoryConfig, - &GradleRepo: GradleRepositoryConfig, - &MvnRepo1: MavenRepositoryConfig1, - &MvnRepo2: MavenRepositoryConfig2, - &MvnRemoteRepo: MavenRemoteRepositoryConfig, - &GradleRemoteRepo: GradleRemoteRepositoryConfig, - &NpmRepo: NpmLocalRepositoryConfig, - &NpmRemoteRepo: NpmRemoteRepositoryConfig, - &NugetRemoteRepo: NugetRemoteRepositoryConfig, - &YarnRemoteRepo: YarnRemoteRepositoryConfig, - &PypiRemoteRepo: PypiRemoteRepositoryConfig, - &PypiVirtualRepo: PypiVirtualRepositoryConfig, - &PipenvRemoteRepo: PipenvRemoteRepositoryConfig, - &PipenvVirtualRepo: PipenvVirtualRepositoryConfig, - &RtDebianRepo: DebianTestRepositoryConfig, - &RtLfsRepo: GitLfsTestRepositoryConfig, - &RtRepo1: Repo1RepositoryConfig, - &RtRepo2: Repo2RepositoryConfig, - &RtVirtualRepo: VirtualRepositoryConfig, - &TerraformRepo: TerraformLocalRepositoryConfig, - &DockerLocalRepo: DockerLocalRepositoryConfig, - &DockerLocalPromoteRepo: DockerLocalPromoteRepositoryConfig, - &DockerRemoteRepo: DockerRemoteRepositoryConfig, - &DockerVirtualRepo: DockerVirtualRepositoryConfig, - &RtDevRepo: DevRepoRepositoryConfig, - &RtProdRepo1: ProdRepo1RepositoryConfig, - &RtProdRepo2: ProdRepo2RepositoryConfig, + &DistRepo1: DistributionRepoConfig1, + &DistRepo2: DistributionRepoConfig2, + &GoRepo: GoLocalRepositoryConfig, + &GoRemoteRepo: GoRemoteRepositoryConfig, + &GoVirtualRepo: GoVirtualRepositoryConfig, + &GradleRepo: GradleRepositoryConfig, + &MvnRepo1: MavenRepositoryConfig1, + &MvnRepo2: MavenRepositoryConfig2, + &MvnRemoteRepo: MavenRemoteRepositoryConfig, + &GradleRemoteRepo: GradleRemoteRepositoryConfig, + &NpmRepo: NpmLocalRepositoryConfig, + &NpmRemoteRepo: NpmRemoteRepositoryConfig, + &NugetRemoteRepo: NugetRemoteRepositoryConfig, + &YarnRemoteRepo: YarnRemoteRepositoryConfig, + &PypiRemoteRepo: PypiRemoteRepositoryConfig, + &PypiVirtualRepo: PypiVirtualRepositoryConfig, + &PipenvRemoteRepo: PipenvRemoteRepositoryConfig, + &PipenvVirtualRepo: PipenvVirtualRepositoryConfig, + &RtDebianRepo: DebianTestRepositoryConfig, + &RtLfsRepo: GitLfsTestRepositoryConfig, + &RtRepo1: Repo1RepositoryConfig, + &RtRepo2: Repo2RepositoryConfig, + &RtVirtualRepo: VirtualRepositoryConfig, + &TerraformRepo: TerraformLocalRepositoryConfig, + &DockerLocalRepo: DockerLocalRepositoryConfig, + &DockerLocalPromoteRepo: DockerLocalPromoteRepositoryConfig, + &DockerRemoteRepo: DockerRemoteRepositoryConfig, + &DockerVirtualRepo: DockerVirtualRepositoryConfig, + &RtDevRepo: DevRepoRepositoryConfig, + &RtProdRepo1: ProdRepo1RepositoryConfig, + &RtProdRepo2: ProdRepo2RepositoryConfig, + &ReleaseLifecycleDependencyRepo: ReleaseLifecycleImportDependencySpec, } var CreatedNonVirtualRepositories map[*string]string @@ -304,7 +305,7 @@ func getNeededBuildNames(buildNamesMap map[*bool][]*string) []string { // Return local and remote repositories for the test suites, respectfully func GetNonVirtualRepositories() map[*string]string { nonVirtualReposMap := map[*bool][]*string{ - TestArtifactory: {&RtRepo1, &RtRepo2, &RtLfsRepo, &RtDebianRepo, &TerraformRepo}, + TestArtifactory: {&RtRepo1, &RtRepo2, &RtLfsRepo, &RtDebianRepo, &TerraformRepo, &ReleaseLifecycleDependencyRepo}, TestArtifactoryProject: {&RtRepo1, &RtRepo2, &RtLfsRepo, &RtDebianRepo}, TestDistribution: {&DistRepo1, &DistRepo2}, TestDocker: {&DockerLocalRepo, &DockerLocalPromoteRepo, &DockerRemoteRepo},