Skip to content

Commit f929f9f

Browse files
Merge remote-tracking branch 'origin/dev' into v2
2 parents 7139f56 + 77931af commit f929f9f

13 files changed

Lines changed: 218 additions & 86 deletions

File tree

build/npm/v2-jf/package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/npm/v2-jf/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "jfrog-cli-v2-jf",
3-
"version": "2.78.2",
3+
"version": "2.78.3",
44
"description": "🐸 Command-line interface for JFrog Artifactory, Xray, Distribution, Pipelines and Mission Control 🐸",
55
"homepage": "https://github.com/jfrog/jfrog-cli",
66
"preferGlobal": true,

build/npm/v2/package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/npm/v2/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "jfrog-cli-v2",
3-
"version": "2.78.2",
3+
"version": "2.78.3",
44
"description": "🐸 Command-line interface for JFrog Artifactory, Xray, Distribution, Pipelines and Mission Control 🐸",
55
"homepage": "https://github.com/jfrog/jfrog-cli",
66
"preferGlobal": true,

buildinfo_test.go

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,3 +1015,115 @@ type buildAddDepsBuildInfoTestParams struct {
10151015
buildNumber string
10161016
expectedModule string
10171017
}
1018+
1019+
func TestBuildInfoPropertiesRemoval(t *testing.T) {
1020+
initArtifactoryTest(t, "")
1021+
inttestutils.DeleteBuild(serverDetails.ArtifactoryUrl, tests.RtBuildName1, artHttpDetails)
1022+
1023+
runRt(t, "upload", "testdata/a/a1.in", tests.RtRepo1+"/test/a1.in")
1024+
1025+
test := buildAddDepsBuildInfoTestParams{
1026+
description: "Test properties field removal",
1027+
commandArgs: []string{"--module=testModule", "testdata/a/a1.in"},
1028+
expectedDependencies: []string{"a1.in"},
1029+
buildName: tests.RtBuildName1,
1030+
buildNumber: "1",
1031+
expectedModule: "testModule",
1032+
}
1033+
1034+
collectDepsAndPublishBuild(test, false, t)
1035+
1036+
buildInfo, found, err := tests.GetBuildInfo(serverDetails, tests.RtBuildName1, "1")
1037+
if err != nil {
1038+
assert.NoError(t, err)
1039+
return
1040+
}
1041+
if !found {
1042+
assert.True(t, found, "build info was expected to be found")
1043+
return
1044+
}
1045+
1046+
buildInfoBytes, err := json.Marshal(buildInfo)
1047+
assert.NoError(t, err)
1048+
1049+
var buildInfoMap map[string]interface{}
1050+
err = json.Unmarshal(buildInfoBytes, &buildInfoMap)
1051+
assert.NoError(t, err)
1052+
1053+
buildInfoData, ok := buildInfoMap["buildInfo"].(map[string]interface{})
1054+
assert.True(t, ok, "Failed to get buildInfo data")
1055+
1056+
modules, ok := buildInfoData["modules"].([]interface{})
1057+
assert.True(t, ok, "Failed to get modules array")
1058+
assert.NotEmpty(t, modules, "No modules found in build info")
1059+
1060+
for _, module := range modules {
1061+
moduleMap, ok := module.(map[string]interface{})
1062+
assert.True(t, ok, "Failed to parse module")
1063+
_, hasProperties := moduleMap["properties"]
1064+
assert.False(t, hasProperties, "Properties field should not be present in module")
1065+
}
1066+
1067+
inttestutils.DeleteBuild(serverDetails.ArtifactoryUrl, tests.RtBuildName1, artHttpDetails)
1068+
cleanArtifactoryTest()
1069+
}
1070+
1071+
func TestBuildInfoPropertiesRemovalInBadAndPublish(t *testing.T) {
1072+
initArtifactoryTest(t, "")
1073+
buildName := tests.RtBuildName1 + "-props"
1074+
buildNumber := "1"
1075+
1076+
inttestutils.DeleteBuild(serverDetails.ArtifactoryUrl, buildName, artHttpDetails)
1077+
1078+
runRt(t, "upload", "testdata/a/a1.in", tests.RtRepo1+"/test/a1.in")
1079+
1080+
badTest := buildAddDepsBuildInfoTestParams{
1081+
description: "Test properties field removal in bad command",
1082+
commandArgs: []string{"--module=badModule", "testdata/a/a1.in"},
1083+
expectedDependencies: []string{"a1.in"},
1084+
buildName: buildName,
1085+
buildNumber: buildNumber,
1086+
expectedModule: "badModule",
1087+
}
1088+
collectDepsAndPublishBuild(badTest, false, t)
1089+
1090+
specFile, err := tests.CreateSpec(tests.UploadFlatRecursive)
1091+
assert.NoError(t, err)
1092+
runRt(t, "upload", "--spec="+specFile, "--build-name="+buildName, "--build-number="+buildNumber, "--module=publishModule")
1093+
1094+
runRt(t, "bp", buildName, buildNumber)
1095+
1096+
buildInfo, found, err := tests.GetBuildInfo(serverDetails, buildName, buildNumber)
1097+
if err != nil {
1098+
assert.NoError(t, err)
1099+
return
1100+
}
1101+
if !found {
1102+
assert.True(t, found, "build info was expected to be found")
1103+
return
1104+
}
1105+
1106+
buildInfoBytes, err := json.Marshal(buildInfo)
1107+
assert.NoError(t, err)
1108+
1109+
var buildInfoMap map[string]interface{}
1110+
err = json.Unmarshal(buildInfoBytes, &buildInfoMap)
1111+
assert.NoError(t, err)
1112+
1113+
buildInfoData, ok := buildInfoMap["buildInfo"].(map[string]interface{})
1114+
assert.True(t, ok, "Failed to get buildInfo data")
1115+
1116+
modules, ok := buildInfoData["modules"].([]interface{})
1117+
assert.True(t, ok, "Failed to get modules array")
1118+
assert.NotEmpty(t, modules, "No modules found in build info")
1119+
1120+
for _, module := range modules {
1121+
moduleMap, ok := module.(map[string]interface{})
1122+
assert.True(t, ok, "Failed to parse module")
1123+
_, hasProperties := moduleMap["properties"]
1124+
assert.False(t, hasProperties, "Properties field should not be present in module")
1125+
}
1126+
1127+
inttestutils.DeleteBuild(serverDetails.ArtifactoryUrl, buildName, artHttpDetails)
1128+
cleanArtifactoryTest()
1129+
}

docs/common/env.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,11 @@ const (
102102
JfrogSecurityCliAnalyzerManagerVersion = ` JFROG_CLI_ANALYZER_MANAGER_VERSION
103103
Specifies the version of Analyzer Manager to be used for security commands, provided in semantic versioning (e.g 1.13.4) format.
104104
By default, the latest stable version is used. `
105+
106+
//#nosec G101
107+
JfrogCliGithubToken = ` JFROG_CLI_GITHUB_TOKEN
108+
[Default: None]
109+
Specifies the GitHub token to be used for cli version check on Github repository.`
105110
)
106111

107112
var (
@@ -142,7 +147,8 @@ func GetGlobalEnvVars() string {
142147
JfrogCliEncryptionKey,
143148
JfrogCliAvoidNewVersionWarning,
144149
JfrogCliCommandSummaryOutputDirectory,
145-
JfrogSecurityCliAnalyzerManagerVersion)
150+
JfrogSecurityCliAnalyzerManagerVersion,
151+
JfrogCliGithubToken)
146152
}
147153

148154
func CreateEnvVars(envVars ...string) string {

general/summary/cli.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,15 @@ const (
2424
Security MarkdownSection = "security"
2525
BuildInfo MarkdownSection = "build-info"
2626
Upload MarkdownSection = "upload"
27+
Evidence MarkdownSection = "evidence"
2728
)
2829

2930
const (
3031
markdownFileName = "markdown.md"
3132
finalSarifFileName = "final.sarif"
3233
)
3334

34-
var markdownSections = []MarkdownSection{Security, BuildInfo, Upload}
35+
var markdownSections = []MarkdownSection{Security, BuildInfo, Upload, Evidence}
3536

3637
func (ms MarkdownSection) String() string {
3738
return string(ms)
@@ -185,6 +186,8 @@ func invokeSectionMarkdownGeneration(section MarkdownSection) error {
185186
return generateBuildInfoMarkdown()
186187
case Upload:
187188
return generateUploadMarkdown()
189+
case Evidence:
190+
return generateEvidenceMarkdown()
188191
default:
189192
return fmt.Errorf("unknown section: %s", section)
190193
}
@@ -209,6 +212,14 @@ func generateBuildInfoMarkdown() error {
209212
return buildInfoSummary.GenerateMarkdown()
210213
}
211214

215+
func generateEvidenceMarkdown() error {
216+
evidenceSummary, err := commandsummary.NewEvidenceSummary()
217+
if err != nil {
218+
return fmt.Errorf("error generating evidence markdown: %w", err)
219+
}
220+
return evidenceSummary.GenerateMarkdown()
221+
}
222+
212223
func generateUploadMarkdown() error {
213224
if should, err := shouldGenerateUploadSummary(); err != nil || !should {
214225
log.Debug("Skipping upload summary generation due build-info data to avoid duplications...")

go.mod

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
module github.com/jfrog/jfrog-cli
22

3-
go 1.24.4
3+
go 1.24.5
4+
5+
toolchain go1.24.6
46

57
replace (
68
// Should not be updated to 0.2.6 due to a bug (https://github.com/jfrog/jfrog-cli-core/pull/372)
@@ -16,13 +18,13 @@ require (
1618
github.com/docker/docker v27.5.1+incompatible
1719
github.com/gocarina/gocsv v0.0.0-20240520201108-78e41c74b4b1
1820
github.com/jfrog/archiver/v3 v3.6.1
19-
github.com/jfrog/build-info-go v1.10.14
21+
github.com/jfrog/build-info-go v1.10.15
2022
github.com/jfrog/gofrog v1.7.6
21-
github.com/jfrog/jfrog-cli-artifactory v0.5.1
22-
github.com/jfrog/jfrog-cli-core/v2 v2.59.3
23+
github.com/jfrog/jfrog-cli-artifactory v0.6.0
24+
github.com/jfrog/jfrog-cli-core/v2 v2.59.4
2325
github.com/jfrog/jfrog-cli-platform-services v1.10.0
24-
github.com/jfrog/jfrog-cli-security v1.20.2
25-
github.com/jfrog/jfrog-client-go v1.54.3
26+
github.com/jfrog/jfrog-cli-security v1.21.0
27+
github.com/jfrog/jfrog-client-go v1.54.4
2628
github.com/jszwec/csvutil v1.10.0
2729
github.com/manifoldco/promptui v0.9.0
2830
github.com/stretchr/testify v1.10.0
@@ -67,7 +69,7 @@ require (
6769
github.com/docker/go-units v0.5.0 // indirect
6870
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect
6971
github.com/emirpasic/gods v1.18.1 // indirect
70-
github.com/fatih/color v1.16.0 // indirect
72+
github.com/fatih/color v1.18.0 // indirect
7173
github.com/felixge/httpsnoop v1.0.4 // indirect
7274
github.com/forPelevin/gomoji v1.3.0 // indirect
7375
github.com/fsnotify/fsnotify v1.8.0 // indirect
@@ -96,8 +98,8 @@ require (
9698
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
9799
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
98100
github.com/golang/protobuf v1.5.4 // indirect
99-
github.com/golang/snappy v0.0.4 // indirect
100-
github.com/google/certificate-transparency-go v1.3.1 // indirect
101+
github.com/golang/snappy v1.0.0 // indirect
102+
github.com/google/certificate-transparency-go v1.3.2 // indirect
101103
github.com/google/go-containerregistry v0.20.3 // indirect
102104
github.com/google/go-github/v56 v56.0.0 // indirect
103105
github.com/google/go-github/v62 v62.0.0 // indirect
@@ -118,7 +120,7 @@ require (
118120
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
119121
github.com/jedib0t/go-pretty/v6 v6.6.5 // indirect
120122
github.com/jedisct1/go-minisign v0.0.0-20211028175153-1c139d1cc84b // indirect
121-
github.com/jfrog/froggit-go v1.20.0 // indirect
123+
github.com/jfrog/froggit-go v1.20.1 // indirect
122124
github.com/jfrog/go-mockhttp v0.3.1 // indirect
123125
github.com/jfrog/jfrog-apps-config v1.0.1 // indirect
124126
github.com/josharian/intern v1.0.0 // indirect
@@ -132,7 +134,7 @@ require (
132134
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
133135
github.com/magiconair/properties v1.8.9 // indirect
134136
github.com/mailru/easyjson v0.9.0 // indirect
135-
github.com/mattn/go-colorable v0.1.13 // indirect
137+
github.com/mattn/go-colorable v0.1.14 // indirect
136138
github.com/mattn/go-isatty v0.0.20 // indirect
137139
github.com/mattn/go-runewidth v0.0.16 // indirect
138140
github.com/mattn/go-tty v0.0.5 // indirect
@@ -188,6 +190,7 @@ require (
188190
github.com/spf13/pflag v1.0.6 // indirect
189191
github.com/spf13/viper v1.20.1 // indirect
190192
github.com/stoewer/go-strcase v1.3.0 // indirect
193+
github.com/stretchr/objx v0.5.2 // indirect
191194
github.com/subosito/gotenv v1.6.0 // indirect
192195
github.com/theupdateframework/go-tuf v0.7.0 // indirect
193196
github.com/theupdateframework/go-tuf/v2 v2.1.1 // indirect
@@ -225,7 +228,7 @@ require (
225228
golang.org/x/time v0.11.0 // indirect
226229
google.golang.org/genproto/googleapis/api v0.0.0-20250414145226-207652e42e2e // indirect
227230
google.golang.org/genproto/googleapis/rpc v0.0.0-20250414145226-207652e42e2e // indirect
228-
google.golang.org/grpc v1.72.0 // indirect
231+
google.golang.org/grpc v1.72.2 // indirect
229232
google.golang.org/protobuf v1.36.6 // indirect
230233
gopkg.in/inf.v0 v0.9.1 // indirect
231234
gopkg.in/ini.v1 v1.67.0 // indirect
@@ -236,16 +239,16 @@ require (
236239
k8s.io/klog/v2 v2.130.1 // indirect
237240
k8s.io/utils v0.0.0-20240310230437-4693a0247e57 // indirect
238241
sigs.k8s.io/controller-runtime v0.17.5 // indirect
239-
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
242+
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
240243
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
241244
sigs.k8s.io/yaml v1.4.0 // indirect
242245
)
243246

244-
// replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20250529104758-6d769a684388
247+
// replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20250806055519-cdc723aaec09
245248

246249
// replace github.com/jfrog/jfrog-cli-artifactory => github.com/jfrog/jfrog-cli-artifactory v0.4.1-0.20250718083259-4a60768eb51b
247250

248-
// replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.59.2-0.20250717045550-6e019038f578
251+
// replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.59.2-0.20250804083101-9cf424ecc926
249252

250253
// replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20250717041744-d3ea4d99f4e7
251254

0 commit comments

Comments
 (0)