Skip to content

Commit

Permalink
Extended support for snapshot policy for resolver in Maven Projects (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
fluxxBot authored Feb 26, 2025
1 parent 7bd7346 commit 6a8f88e
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 12 deletions.
4 changes: 3 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,8 @@ require (

replace github.com/jfrog/jfrog-cli-artifactory => github.com/jfrog/jfrog-cli-artifactory v0.1.13-0.20250221101554-05889536ad05

replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250221100045-5b6a23a37852
replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250226093426-131ae1505b58

replace github.com/jfrog/build-info-go => github.com/fluxxBot/build-info-go v1.8.9-0.20250203111011-4ff16d3d42be

replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20250221062042-87cb5136765e
8 changes: 4 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fluxxBot/build-info-go v1.8.9-0.20250203111011-4ff16d3d42be h1:K9d43ZYkRj9Y0XI78KZvHlCWdZ7O24np+Xv9C7PKJwk=
github.com/fluxxBot/build-info-go v1.8.9-0.20250203111011-4ff16d3d42be/go.mod h1:JcISnovFXKx3wWf3p1fcMmlPdt6adxScXvoJN4WXqIE=
github.com/forPelevin/gomoji v1.2.0 h1:9k4WVSSkE1ARO/BWywxgEUBvR/jMnao6EZzrql5nxJ8=
github.com/forPelevin/gomoji v1.2.0/go.mod h1:8+Z3KNGkdslmeGZBC3tCrwMrcPy5GRzAD+gL9NAwMXg=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
Expand Down Expand Up @@ -175,8 +177,6 @@ github.com/jedib0t/go-pretty/v6 v6.6.5 h1:9PgMJOVBedpgYLI56jQRJYqngxYAAzfEUua+3N
github.com/jedib0t/go-pretty/v6 v6.6.5/go.mod h1:Uq/HrbhuFty5WSVNfjpQQe47x16RwVGXIveNGEyGtHs=
github.com/jfrog/archiver/v3 v3.6.1 h1:LOxnkw9pOn45DzCbZNFV6K0+6dCsQ0L8mR3ZcujO5eI=
github.com/jfrog/archiver/v3 v3.6.1/go.mod h1:VgR+3WZS4N+i9FaDwLZbq+jeU4B4zctXL+gL4EMzfLw=
github.com/jfrog/build-info-go v1.10.9 h1:mdJ+wlLw2ReFsqC7rifJVlRYLEqYk38uXDYAOZASuGE=
github.com/jfrog/build-info-go v1.10.9/go.mod h1:JcISnovFXKx3wWf3p1fcMmlPdt6adxScXvoJN4WXqIE=
github.com/jfrog/froggit-go v1.16.2 h1:F//S83iXH14qsCwYzv0zB2JtjS2pJVEsUoEmYA+37dQ=
github.com/jfrog/froggit-go v1.16.2/go.mod h1:5VpdQfAcbuyFl9x/x8HGm7kVk719kEtW/8YJFvKcHPA=
github.com/jfrog/go-mockhttp v0.3.1 h1:/wac8v4GMZx62viZmv4wazB5GNKs+GxawuS1u3maJH8=
Expand All @@ -187,8 +187,8 @@ github.com/jfrog/jfrog-apps-config v1.0.1 h1:mtv6k7g8A8BVhlHGlSveapqf4mJfonwvXYL
github.com/jfrog/jfrog-apps-config v1.0.1/go.mod h1:8AIIr1oY9JuH5dylz2S6f8Ym2MaadPLR6noCBO4C22w=
github.com/jfrog/jfrog-cli-artifactory v0.1.13-0.20250221101554-05889536ad05 h1:UV9W1ZImGWLks4+w+zg9hMtySvEIU+WxO73lsO6NIyY=
github.com/jfrog/jfrog-cli-artifactory v0.1.13-0.20250221101554-05889536ad05/go.mod h1:223EqxDx7Ogrj7zJZkKAoFuQJStC5qtPXjwsf+r6d/A=
github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250221100045-5b6a23a37852 h1:tz6j/XO+BDoemr2LvQHN16ZHEG6dHT+79A+O+AvxXfk=
github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250221100045-5b6a23a37852/go.mod h1:VAVY5umw94aXf+yGzKCoEqijeUjIUNv+ikJUeQkd9tw=
github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250226093426-131ae1505b58 h1:r8aE1Amm8CLbMLMCbNhivs7WqhoLlj+cBhzStohBYOU=
github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250226093426-131ae1505b58/go.mod h1:8uzry1RGoxmw2aeJVE/8kLIFTXCE23ApLUNRUGFRu90=
github.com/jfrog/jfrog-cli-platform-services v1.7.0 h1:u0AOyG4JX3VT7xhEeA9gDpBgW8tYILONpQURtzR3FkI=
github.com/jfrog/jfrog-cli-platform-services v1.7.0/go.mod h1:u3lMRG7XC8MeUy/OPkHkZnsgCMIi0br4sjk2/W1Pm8I=
github.com/jfrog/jfrog-cli-security v1.15.0 h1:TYNIID231X/AivYtptDCF25JyH8qTQht6ISHRfwejL8=
Expand Down
61 changes: 61 additions & 0 deletions maven_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import (
"github.com/jfrog/jfrog-cli-core/v2/utils/ioutils"
"github.com/jfrog/jfrog-cli/utils/cliutils"
"github.com/jfrog/jfrog-client-go/http/httpclient"
"github.com/jfrog/jfrog-client-go/utils/io/fileutils"
"github.com/stretchr/testify/require"
"gopkg.in/yaml.v2"
"net/http"
"os"
"os/exec"
Expand Down Expand Up @@ -435,3 +437,62 @@ func prepareMavenSetupTest(t *testing.T, homeDir string) func() {
restoreDir()
}
}

func TestMavenConfig(t *testing.T) {
jfrogCli := initializeMvnProjectAndReturnExecutor(t)

err := jfrogCli.Exec("mvn-config", "--repo-resolve-releases=pipe-test-mvn", "--repo-resolve-snapshots=pipe-test-mvn",
"--disable-snapshots=true", "--snapshots-update-policy=never")
assert.NoError(t, err)

configFile := readConfigFileCreated(t)

assert.Equal(t, configFile.Resolver.SnapshotRepo, "pipe-test-mvn")
assert.Equal(t, configFile.Resolver.ReleaseRepo, "pipe-test-mvn")
assert.Equal(t, configFile.Resolver.DisableSnapshots, true)
assert.Equal(t, configFile.Resolver.SnapshotsUpdatePolicy, "never")

cleanMavenTest(t)
}

func TestMavenConfigWhenSnapshotPolicyNotPresent(t *testing.T) {
jfrogCli := initializeMvnProjectAndReturnExecutor(t)

err := jfrogCli.Exec("mvn-config", "--repo-resolve-releases=pipe-test-mvn", "--repo-resolve-snapshots=pipe-test-mvn", "--repo-deploy-releases=default", "--repo-deploy-snapshots=default")
assert.NoError(t, err)

configFile := readConfigFileCreated(t)

assert.NoError(t, err)
assert.Equal(t, configFile.Resolver.SnapshotRepo, "pipe-test-mvn")
assert.Equal(t, configFile.Resolver.ReleaseRepo, "pipe-test-mvn")
assert.Empty(t, configFile.Resolver.DisableSnapshots)
assert.Empty(t, configFile.Resolver.SnapshotsUpdatePolicy)

cleanMavenTest(t)
}

func initializeMvnProjectAndReturnExecutor(t *testing.T) *coreTests.JfrogCli {
initMavenTest(t, false)
pomDir := createSimpleMavenProject(t)

oldHomeDir := changeWD(t, pomDir)
defer clientTestUtils.ChangeDirAndAssert(t, oldHomeDir)

jfrogCli := coreTests.NewJfrogCli(execMain, "jfrog", "")

return jfrogCli
}

func readConfigFileCreated(t *testing.T) commands.ConfigFile {
configFile := commands.ConfigFile{
Version: 1,
ConfigType: project.Maven.String(),
}
mavenConfigPath := filepath.Join(".jfrog", "projects", "maven.yaml")
content, err := fileutils.ReadFile(mavenConfigPath)
assert.NoError(t, err)
err = yaml.Unmarshal(content, &configFile)
assert.NoError(t, err)
return configFile
}
24 changes: 17 additions & 7 deletions utils/cliutils/commandsflags.go
Original file line number Diff line number Diff line change
Expand Up @@ -332,12 +332,14 @@ const (
repoDeploy = "repo-deploy"

// Unique maven-config flags
repoResolveReleases = "repo-resolve-releases"
repoResolveSnapshots = "repo-resolve-snapshots"
repoDeployReleases = "repo-deploy-releases"
repoDeploySnapshots = "repo-deploy-snapshots"
includePatterns = "include-patterns"
excludePatterns = "exclude-patterns"
repoResolveReleases = "repo-resolve-releases"
repoResolveSnapshots = "repo-resolve-snapshots"
repoDeployReleases = "repo-deploy-releases"
repoDeploySnapshots = "repo-deploy-snapshots"
includePatterns = "include-patterns"
excludePatterns = "exclude-patterns"
disableSnapshots = "disable-snapshots"
snapshotsUpdatePolicy = "snapshots-update-policy"

// Unique gradle-config flags
usesPlugin = "uses-plugin"
Expand Down Expand Up @@ -1117,6 +1119,14 @@ var flagsMap = map[string]cli.Flag{
Name: excludePatterns,
Usage: "[Optional] Filter deployed artifacts by setting a wildcard pattern that specifies which artifacts to exclude. You may provide multiple patterns separated by ', '.` `",
},
disableSnapshots: cli.BoolFlag{
Name: disableSnapshots,
Usage: "[Default: false] Set to true to disable snapshot resolution.` `",
},
snapshotsUpdatePolicy: cli.StringFlag{
Name: snapshotsUpdatePolicy,
Usage: "[Optional] Set snapshot update policy. Defaults to daily.` `",
},
repoResolve: cli.StringFlag{
Name: repoResolve,
Usage: "[Optional] Repository for dependencies resolution.` `",
Expand Down Expand Up @@ -1837,7 +1847,7 @@ var commandFlags = map[string][]string{
global, serverIdResolve, repoResolve,
},
MvnConfig: {
global, serverIdResolve, serverIdDeploy, repoResolveReleases, repoResolveSnapshots, repoDeployReleases, repoDeploySnapshots, includePatterns, excludePatterns, UseWrapper,
global, serverIdResolve, serverIdDeploy, repoResolveReleases, repoResolveSnapshots, repoDeployReleases, repoDeploySnapshots, includePatterns, excludePatterns, UseWrapper, disableSnapshots, snapshotsUpdatePolicy,
},
GradleConfig: {
global, serverIdResolve, serverIdDeploy, repoResolve, repoDeploy, usesPlugin, UseWrapper, deployMavenDesc,
Expand Down

0 comments on commit 6a8f88e

Please sign in to comment.