Skip to content

Commit

Permalink
Make the signing key optinal jf release-bundle-create (#2762)
Browse files Browse the repository at this point in the history
  • Loading branch information
oshratZairi authored Nov 21, 2024
1 parent d776596 commit 6fa5830
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 46 deletions.
15 changes: 0 additions & 15 deletions lifecycle/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,10 +127,6 @@ func validateCreateReleaseBundleContext(c *cli.Context) error {
return cliutils.WrongNumberOfArgumentsHandler(c)
}

if err := assertSigningKeyProvided(c); err != nil {
return err
}

return assertValidCreationMethod(c)
}

Expand Down Expand Up @@ -188,10 +184,6 @@ func promote(c *cli.Context) error {
return cliutils.WrongNumberOfArgumentsHandler(c)
}

if err := assertSigningKeyProvided(c); err != nil {
return err
}

lcDetails, err := createLifecycleDetailsByFlags(c)
if err != nil {
return err
Expand Down Expand Up @@ -358,13 +350,6 @@ func validateDistributeCommand(c *cli.Context) error {
return nil
}

func assertSigningKeyProvided(c *cli.Context) error {
if c.String(cliutils.SigningKey) == "" {
return errorutils.CheckErrorf("the --%s option is mandatory", cliutils.SigningKey)
}
return nil
}

func createLifecycleDetailsByFlags(c *cli.Context) (*coreConfig.ServerDetails, error) {
lcDetails, err := cliutils.CreateServerDetailsWithConfigOffer(c, true, commonCliUtils.Platform)
if err != nil {
Expand Down
4 changes: 2 additions & 2 deletions lifecycle/cli_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ func TestValidateCreateReleaseBundleContext(t *testing.T) {
{"extraArgs", []string{"one", "two", "three", "four"}, []string{}, true},
{"bothSources", []string{"one", "two", "three"}, []string{cliutils.Builds + "=/path/to/file", cliutils.ReleaseBundles + "=/path/to/file"}, true},
{"noSources", []string{"one", "two", "three"}, []string{}, true},
{"builds without signing key", []string{"name", "version"}, []string{cliutils.Builds + "=/path/to/file"}, true},
{"builds without signing key", []string{"name", "version"}, []string{cliutils.Builds + "=/path/to/file"}, false},
{"builds correct", []string{"name", "version"}, []string{
cliutils.Builds + "=/path/to/file", cliutils.SigningKey + "=key"}, false},
{"releaseBundles without signing key", []string{"name", "version", "env"}, []string{cliutils.ReleaseBundles + "=/path/to/file"}, true},
{"releaseBundles without signing key", []string{"name", "version"}, []string{cliutils.ReleaseBundles + "=/path/to/file"}, false},
{"releaseBundles correct", []string{"name", "version"}, []string{
cliutils.ReleaseBundles + "=/path/to/file", cliutils.SigningKey + "=key"}, false},
{"spec without signing key", []string{"name", "version", "env"}, []string{"spec=/path/to/file"}, true},
Expand Down
71 changes: 43 additions & 28 deletions lifecycle_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,16 @@ import (
)

const (
artifactoryLifecycleMinVersion = "7.68.3"
gpgKeyPairName = "lc-tests-key-pair"
lcTestdataPath = "lifecycle"
releaseBundlesSpec = "release-bundles-spec.json"
buildsSpec12 = "builds-spec-1-2.json"
buildsSpec3 = "builds-spec-3.json"
prodEnvironment = "PROD"
number1, number2, number3 = "111", "222", "333"
artifactoryLifecycleMinVersion = "7.68.3"
signingKeyOptionalArtifactoryMinVersion = "7.101.1"
gpgKeyPairName = "lc-tests-key-pair"
lcTestdataPath = "lifecycle"
releaseBundlesSpec = "release-bundles-spec.json"
buildsSpec12 = "builds-spec-1-2.json"
buildsSpec3 = "builds-spec-3.json"
prodEnvironment = "PROD"
number1, number2, number3 = "111", "222", "333"
withoutSigningKey = true
)

var (
Expand All @@ -45,7 +47,7 @@ var (
)

func TestBackwardCompatibleReleaseBundleCreation(t *testing.T) {
cleanCallback := initLifecycleTest(t)
cleanCallback := initLifecycleTest(t, artifactoryLifecycleMinVersion)
defer cleanCallback()
lcManager := getLcServiceManager(t)

Expand Down Expand Up @@ -87,30 +89,39 @@ func compareRbArtifacts(t *testing.T, actual services.ReleaseBundleSpecResponse,
}

func TestReleaseBundleCreationFromAql(t *testing.T) {
testReleaseBundleCreation(t, tests.UploadDevSpecA, tests.LifecycleAql, tests.GetExpectedLifecycleCreationByAql())
testReleaseBundleCreation(t, tests.UploadDevSpecA, tests.LifecycleAql, tests.GetExpectedLifecycleCreationByAql(), false)
}

func TestReleaseBundleCreationFromArtifacts(t *testing.T) {
testReleaseBundleCreation(t, tests.UploadDevSpec, tests.LifecycleArtifacts, tests.GetExpectedLifecycleCreationByArtifacts())
testReleaseBundleCreation(t, tests.UploadDevSpec, tests.LifecycleArtifacts, tests.GetExpectedLifecycleCreationByArtifacts(), false)
}

func testReleaseBundleCreation(t *testing.T, uploadSpec, creationSpec string, expected []string) {
cleanCallback := initLifecycleTest(t)
defer cleanCallback()
lcManager := getLcServiceManager(t)
func TestReleaseBundleCreationFromArtifactsWithoutSigningKey(t *testing.T) {
testReleaseBundleCreation(t, tests.UploadDevSpec, tests.LifecycleArtifacts, tests.GetExpectedLifecycleCreationByArtifacts(), withoutSigningKey)
}

func testReleaseBundleCreation(t *testing.T, uploadSpec, creationSpec string, expected []string, withoutSigningKey bool) {
if withoutSigningKey {
cleanCallback := initLifecycleTest(t, signingKeyOptionalArtifactoryMinVersion)
defer cleanCallback()
} else {
cleanCallback := initLifecycleTest(t, artifactoryLifecycleMinVersion)
defer cleanCallback()
}

lcManager := getLcServiceManager(t)
specFile, err := tests.CreateSpec(uploadSpec)
assert.NoError(t, err)
runRt(t, "upload", "--spec="+specFile)

createRbFromSpec(t, creationSpec, tests.LcRbName1, number1, true)
createRbFromSpec(t, creationSpec, tests.LcRbName1, number1, true, withoutSigningKey)
defer deleteReleaseBundle(t, lcManager, tests.LcRbName1, number1)

assertRbArtifacts(t, lcManager, tests.LcRbName1, number1, expected)
}

func TestLifecycleFullFlow(t *testing.T) {
cleanCallback := initLifecycleTest(t)
cleanCallback := initLifecycleTest(t, signingKeyOptionalArtifactoryMinVersion)
defer cleanCallback()
lcManager := getLcServiceManager(t)

Expand All @@ -119,17 +130,17 @@ func TestLifecycleFullFlow(t *testing.T) {
defer deleteBuilds()

// Create release bundle from builds synchronously.
createRbFromSpec(t, tests.LifecycleBuilds12, tests.LcRbName1, number1, true)
createRbFromSpec(t, tests.LifecycleBuilds12, tests.LcRbName1, number1, true, false)
defer deleteReleaseBundle(t, lcManager, tests.LcRbName1, number1)

// Create release bundle from a build asynchronously and assert status.
// This build has dependencies which are included in the release bundle.
createRbFromSpec(t, tests.LifecycleBuilds3, tests.LcRbName2, number2, false)
createRbFromSpec(t, tests.LifecycleBuilds3, tests.LcRbName2, number2, false, false)
defer deleteReleaseBundle(t, lcManager, tests.LcRbName2, number2)
assertStatusCompleted(t, lcManager, tests.LcRbName2, number2, "")

// Create a combined release bundle from the two previous release bundle.
createRbFromSpec(t, tests.LifecycleReleaseBundles, tests.LcRbName3, number3, true)
createRbFromSpec(t, tests.LifecycleReleaseBundles, tests.LcRbName3, number3, true, false)
defer deleteReleaseBundle(t, lcManager, tests.LcRbName3, number3)

// Promote the last release bundle to prod repo 1.
Expand Down Expand Up @@ -161,7 +172,7 @@ func TestLifecycleFullFlow(t *testing.T) {

// Import bundles only work on onPerm platforms
func TestImportReleaseBundle(t *testing.T) {
cleanCallback := initLifecycleTest(t)
cleanCallback := initLifecycleTest(t, artifactoryLifecycleMinVersion)
defer cleanCallback()
wd, err := os.Getwd()
assert.NoError(t, err)
Expand Down Expand Up @@ -195,22 +206,25 @@ func uploadBuilds(t *testing.T) func() {
func createRbBackwardCompatible(t *testing.T, specName, sourceOption, rbName, rbVersion string, sync bool) {
specFile, err := getSpecFile(specName)
assert.NoError(t, err)
createRb(t, specFile, sourceOption, rbName, rbVersion, sync)
createRb(t, specFile, sourceOption, rbName, rbVersion, sync, false)
}

func createRbFromSpec(t *testing.T, specName, rbName, rbVersion string, sync bool) {
func createRbFromSpec(t *testing.T, specName, rbName, rbVersion string, sync bool, withoutSigningKey bool) {
specFile, err := tests.CreateSpec(specName)
assert.NoError(t, err)
createRb(t, specFile, "spec", rbName, rbVersion, sync)
createRb(t, specFile, "spec", rbName, rbVersion, sync, withoutSigningKey)
}

func createRb(t *testing.T, specFilePath, sourceOption, rbName, rbVersion string, sync bool) {
func createRb(t *testing.T, specFilePath, sourceOption, rbName, rbVersion string, sync bool, withoutSigningKey bool) {
argsAndOptions := []string{
"rbc",
rbName,
rbVersion,
getOption(sourceOption, specFilePath),
getOption(cliutils.SigningKey, gpgKeyPairName),
}

if !withoutSigningKey {
argsAndOptions = append(argsAndOptions, getOption(cliutils.SigningKey, gpgKeyPairName))
}
// Add the --sync option only if requested, to test the default value.
if sync {
Expand Down Expand Up @@ -363,11 +377,12 @@ func uploadBuildWithDeps(t *testing.T, buildName, buildNumber string) {
runRt(t, "build-publish", buildName, buildNumber)
}

func initLifecycleTest(t *testing.T) (cleanCallback func()) {
func initLifecycleTest(t *testing.T, minVersion string) (cleanCallback func()) {
if !*tests.TestLifecycle {
t.Skip("Skipping lifecycle test. To run release bundle test add the '-test.lc=true' option.")
}
validateArtifactoryVersion(t, artifactoryLifecycleMinVersion)

validateArtifactoryVersion(t, minVersion)

if !isLifecycleSupported(t) {
t.Skip("Skipping lifecycle test because the functionality is not enabled on the provided JPD.")
Expand Down
2 changes: 1 addition & 1 deletion utils/cliutils/commandsflags.go
Original file line number Diff line number Diff line change
Expand Up @@ -1650,7 +1650,7 @@ var flagsMap = map[string]cli.Flag{
},
lcSigningKey: cli.StringFlag{
Name: SigningKey,
Usage: "[Mandatory] The GPG/RSA key-pair name given in Artifactory.` `",
Usage: "[Optional] The GPG/RSA key-pair name given in Artifactory. If the key isn't provided, the command creates or uses the default key.` `",
},
lcPathMappingPattern: cli.StringFlag{
Name: PathMappingPattern,
Expand Down

0 comments on commit 6fa5830

Please sign in to comment.