Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Audit - remove redundant releases remote repo code #851

Merged
merged 10 commits into from
Jul 12, 2023
53 changes: 25 additions & 28 deletions xray/audit/java/gradle.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,19 +102,22 @@ func (dtp *depTreeManager) appendDependenciesPaths(jsonDepTree []byte, fileName
return nil
}

func buildGradleDependencyTree(useWrapper bool, server *config.ServerDetails, depsRepo, releasesRepo string) (dependencyTree []*xrayUtils.GraphNode, err error) {
func buildGradleDependencyTree(useWrapper bool, server *config.ServerDetails, depsRepo string) (dependencyTree []*xrayUtils.GraphNode, err error) {
if (server != nil && server.IsEmpty()) || depsRepo == "" {
depsRepo, server, err = getGradleConfig()
var artDetails *config.ServerDetails
depsRepo, artDetails, err = getGradleConfig()
if err != nil {
return
}
if artDetails != nil {
server = artDetails
}
}

manager := &depTreeManager{
server: server,
releasesRepo: releasesRepo,
depsRepo: depsRepo,
useWrapper: useWrapper,
server: server,
depsRepo: depsRepo,
useWrapper: useWrapper,
}

outputFileContent, err := manager.runGradleDepTree()
Expand All @@ -131,10 +134,7 @@ func (dtp *depTreeManager) runGradleDepTree() (outputFileContent []byte, err err
return
}
defer func() {
e := fileutils.RemoveTempDir(depTreeDir)
if err == nil {
err = e
}
err = errors.Join(err, fileutils.RemoveTempDir(depTreeDir))
}()

if dtp.useWrapper {
Expand All @@ -153,7 +153,7 @@ func (dtp *depTreeManager) createDepTreeScriptAndGetDir() (tmpDir string, err er
return
}
if dtp.server != nil {
dtp.releasesRepo, dtp.depsRepo, err = getRemoteRepos(dtp.releasesRepo, dtp.depsRepo, dtp.server)
dtp.releasesRepo, dtp.depsRepo, err = getRemoteRepos(dtp.depsRepo, dtp.server)
if err != nil {
return
}
Expand All @@ -163,12 +163,11 @@ func (dtp *depTreeManager) createDepTreeScriptAndGetDir() (tmpDir string, err er
}

// getRemoteRepos constructs the sections of Artifactory's remote repositories in the gradle-dep-tree init script.
// releasesRepoName - name of the remote repository that proxies https://releases.jfrog.io
// depsRemoteRepo - name of the remote repository that proxies the dependencies server, e.g. maven central.
// server - the Artifactory server details on which the repositories reside in.
// Returns the constructed sections.
func getRemoteRepos(releasesRepo, depsRepo string, server *config.ServerDetails) (string, string, error) {
constructedReleasesRepo, err := constructReleasesRemoteRepo(releasesRepo, server)
func getRemoteRepos(depsRepo string, server *config.ServerDetails) (string, string, error) {
constructedReleasesRepo, err := constructReleasesRemoteRepo()
if err != nil {
return "", "", err
}
Expand All @@ -180,21 +179,19 @@ func getRemoteRepos(releasesRepo, depsRepo string, server *config.ServerDetails)
return constructedReleasesRepo, constructedDepsRepo, nil
}

func constructReleasesRemoteRepo(releasesRepo string, server *config.ServerDetails) (string, error) {
releasesServer := server
if releasesRepo == "" {
// Try to get releases repository from the environment variable
serverId, repoName, err := coreutils.GetServerIdAndRepo(coreutils.ReleasesRemoteEnv)
if err != nil || serverId == "" || repoName == "" {
return "", err
}
releasesServer, err = config.GetSpecificConfig(serverId, false, true)
if err != nil {
return "", err
}
releasesRepo = repoName
func constructReleasesRemoteRepo() (string, error) {
// Try to retrieve the serverID and remote repository that proxies https://releases.jfrog.io, from the environment variable
serverId, repoName, err := coreutils.GetServerIdAndRepo(coreutils.ReleasesRemoteEnv)
if err != nil || serverId == "" || repoName == "" {
return "", err
}
releasesPath := fmt.Sprintf("%s/%s", releasesRepo, remoteDepTreePath)

releasesServer, err := config.GetSpecificConfig(serverId, false, true)
if err != nil {
return "", err
}

releasesPath := fmt.Sprintf("%s/%s", repoName, remoteDepTreePath)
return getDepTreeArtifactoryRepository(releasesPath, releasesServer)
}

Expand Down
29 changes: 7 additions & 22 deletions xray/audit/java/gradle_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func TestGradleTreesWithoutConfig(t *testing.T) {
assert.NoError(t, os.Chmod(filepath.Join(tempDirPath, "gradlew"), 0700))

// Run getModulesDependencyTrees
modulesDependencyTrees, err := buildGradleDependencyTree(false, nil, "", "")
modulesDependencyTrees, err := buildGradleDependencyTree(false, nil, "")
if assert.NoError(t, err) && assert.NotNil(t, modulesDependencyTrees) {
assert.Len(t, modulesDependencyTrees, 5)
// Check module
Expand All @@ -46,7 +46,7 @@ func TestGradleTreesWithConfig(t *testing.T) {
assert.NoError(t, os.Chmod(filepath.Join(tempDirPath, "gradlew"), 0700))

// Run getModulesDependencyTrees
modulesDependencyTrees, err := buildGradleDependencyTree(true, nil, "", "")
modulesDependencyTrees, err := buildGradleDependencyTree(true, nil, "")
if assert.NoError(t, err) && assert.NotNil(t, modulesDependencyTrees) {
assert.Len(t, modulesDependencyTrees, 5)

Expand All @@ -70,7 +70,7 @@ func TestGradleTreesExcludeTestDeps(t *testing.T) {
assert.NoError(t, os.Chmod(filepath.Join(tempDirPath, "gradlew"), 0700))

// Run getModulesDependencyTrees
modulesDependencyTrees, err := buildGradleDependencyTree(true, nil, "", "")
modulesDependencyTrees, err := buildGradleDependencyTree(true, nil, "")
if assert.NoError(t, err) && assert.NotNil(t, modulesDependencyTrees) {
assert.Len(t, modulesDependencyTrees, 5)

Expand Down Expand Up @@ -213,7 +213,6 @@ func TestCreateDepTreeScript(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, fmt.Sprintf(depTreeInitScript, "", ""), string(content))
manager.depsRepo = "deps-repo"
manager.releasesRepo = "release-repo"
manager.server = &config.ServerDetails{
ArtifactoryUrl: "https://myartifactory.com/artifactory",
AccessToken: "my-access-token",
Expand All @@ -222,13 +221,6 @@ func TestCreateDepTreeScript(t *testing.T) {
assert.NoError(t, err)
expectedInitScript := `initscript {
repositories {
maven {
url "https://myartifactory.com/artifactory/release-repo/artifactory/oss-release-local"
credentials {
username = ''
password = 'my-access-token'
}
}
mavenCentral()
}
dependencies {
Expand Down Expand Up @@ -264,21 +256,14 @@ func TestConstructReleasesRemoteRepo(t *testing.T) {
err := config.SaveServersConf([]*config.ServerDetails{serverDetails})
assert.NoError(t, err)
defer cleanUp()
server := &config.ServerDetails{
ArtifactoryUrl: "https://myartifactory.com/artifactory",
User: "myuser",
Password: "mypass",
}
testCases := []struct {
releasesRepo string
envVar string
expectedRepo string
expectedErr error
}{
{releasesRepo: "", envVar: "", expectedRepo: "", expectedErr: nil},
{releasesRepo: "", envVar: "test/repo1", expectedRepo: "\n\t\tmaven {\n\t\t\turl \"https://domain.com/artifactory/repo1/artifactory/oss-release-local\"\n\t\t\tcredentials {\n\t\t\t\tusername = 'user'\n\t\t\t\tpassword = 'pass'\n\t\t\t}\n\t\t}", expectedErr: nil},
{releasesRepo: "", envVar: "notexist/repo1", expectedRepo: "", expectedErr: errors.New("Server ID 'notexist' does not exist.")},
{releasesRepo: "repo2", envVar: "", expectedRepo: "\n\t\tmaven {\n\t\t\turl \"https://myartifactory.com/artifactory/repo2/artifactory/oss-release-local\"\n\t\t\tcredentials {\n\t\t\t\tusername = 'myuser'\n\t\t\t\tpassword = 'mypass'\n\t\t\t}\n\t\t}", expectedErr: nil},
{envVar: "", expectedRepo: "", expectedErr: nil},
{envVar: "test/repo1", expectedRepo: "\n\t\tmaven {\n\t\t\turl \"https://domain.com/artifactory/repo1/artifactory/oss-release-local\"\n\t\t\tcredentials {\n\t\t\t\tusername = 'user'\n\t\t\t\tpassword = 'pass'\n\t\t\t}\n\t\t}", expectedErr: nil},
{envVar: "notexist/repo1", expectedRepo: "", expectedErr: errors.New("Server ID 'notexist' does not exist.")},
}

for _, tc := range testCases {
Expand All @@ -289,7 +274,7 @@ func TestConstructReleasesRemoteRepo(t *testing.T) {
// Reset the environment variable after each test case
assert.NoError(t, os.Unsetenv(coreutils.ReleasesRemoteEnv))
}()
actualRepo, actualErr := constructReleasesRemoteRepo(tc.releasesRepo, server)
actualRepo, actualErr := constructReleasesRemoteRepo()
assert.Equal(t, tc.expectedRepo, actualRepo)
assert.Equal(t, tc.expectedErr, actualErr)
}()
Expand Down
5 changes: 1 addition & 4 deletions xray/audit/java/javautils.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ type DependencyTreeParams struct {
JavaProps map[string]any
Server *config.ServerDetails
DepsRepo string
ReleasesRepo string
}

func createBuildConfiguration(buildName string) (*artifactoryUtils.BuildConfiguration, func() error) {
Expand Down Expand Up @@ -137,13 +136,11 @@ func BuildDependencyTree(params *DependencyTreeParams) (modules []*xrayUtils.Gra
}
server := &config.ServerDetails{}
depsRepo := ""
releaseRepo := ""
if params.IgnoreConfigFile {
server = params.Server
depsRepo = params.DepsRepo
releaseRepo = params.ReleasesRepo
}
return buildGradleDependencyTree(params.UseWrapper, server, depsRepo, releaseRepo)
return buildGradleDependencyTree(params.UseWrapper, server, depsRepo)
}

type dependencyMultimap struct {
Expand Down
6 changes: 2 additions & 4 deletions xray/audit/java/mvn.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package java

import (
"errors"
"fmt"
"github.com/jfrog/jfrog-cli-core/v2/artifactory/utils"
"github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
Expand All @@ -13,10 +14,7 @@ import (
func buildMvnDependencyTree(insecureTls, ignoreConfigFile, useWrapper bool, mvnProps map[string]any) (modules []*xrayUtils.GraphNode, err error) {
buildConfiguration, cleanBuild := createBuildConfiguration("audit-mvn")
defer func() {
e := cleanBuild()
if err == nil {
err = e
}
err = errors.Join(err, cleanBuild())
}()

err = runMvn(buildConfiguration, insecureTls, ignoreConfigFile, useWrapper, mvnProps)
Expand Down
1 change: 0 additions & 1 deletion xray/commands/audit/generic/auditmanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,6 @@ func getJavaDependencyTree(params *clientUtils.GraphBasicParams, tech coreutils.
JavaProps: javaProps,
Server: serverDetails,
DepsRepo: params.DepsRepo(),
ReleasesRepo: params.ReleasesRepo(),
})
}

Expand Down
10 changes: 0 additions & 10 deletions xray/utils/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ type GraphBasicParams struct {
outputFormat OutputFormat
progress ioUtils.ProgressMgr
fullDependenciesTree []*xrayUtils.GraphNode
releasesRepo string
excludeTestDependencies bool
useWrapper bool
insecureTls bool
Expand All @@ -22,15 +21,6 @@ type GraphBasicParams struct {
ignoreConfigFile bool
}

func (gbp *GraphBasicParams) ReleasesRepo() string {
return gbp.releasesRepo
}

func (gbp *GraphBasicParams) SetReleasesRepo(releasesRepo string) *GraphBasicParams {
gbp.releasesRepo = releasesRepo
return gbp
}

func (gbp *GraphBasicParams) FullDependenciesTree() []*xrayUtils.GraphNode {
return gbp.fullDependenciesTree
}
Expand Down
Loading