You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2019/06/26 12:08:26 UTC
[camel-k] branch master updated: fix: Validate maven artifacts
This is an automated email from the ASF dual-hosted git repository.
lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git
The following commit(s) were added to refs/heads/master by this push:
new 1de2681 fix: Validate maven artifacts
1de2681 is described below
commit 1de2681fc8eada9ec0285954152fdeecda50ae29
Author: James Netherton <ja...@gmail.com>
AuthorDate: Mon Jun 24 09:47:12 2019 +0100
fix: Validate maven artifacts
fixes #742
---
pkg/cmd/install.go | 99 ++++++++++++++++++++---------------
pkg/util/maven/maven_project.go | 9 +++-
pkg/util/maven/maven_project_test.go | 18 +++++++
pkg/util/maven/maven_settings_test.go | 10 ++--
pkg/util/maven/maven_types.go | 5 +-
5 files changed, 91 insertions(+), 50 deletions(-)
diff --git a/pkg/cmd/install.go b/pkg/cmd/install.go
index f7e21a3..885fb0a 100644
--- a/pkg/cmd/install.go
+++ b/pkg/cmd/install.go
@@ -212,58 +212,62 @@ func (o *installCmdOptions) install(_ *cobra.Command, _ []string) error {
platform.Spec.Build.Timeout.Duration = d
}
- if len(o.mavenRepositories) > 0 {
- o.mavenSettings = fmt.Sprintf("configmap:%s-maven-settings/settings.xml", platform.Name)
+ o.mavenSettings = fmt.Sprintf("configmap:%s-maven-settings/settings.xml", platform.Name)
- settings := maven.NewSettings()
- repositories := make([]maven.Repository, 0, len(o.mavenRepositories))
+ settings := maven.NewSettings()
+ repositories := make([]maven.Repository, 0, len(o.mavenRepositories))
- for i, r := range o.mavenRepositories {
- repository := maven.NewRepository(r)
- if repository.ID == "" {
- repository.ID = fmt.Sprintf("repository-%03d", i)
- }
-
- repositories = append(repositories, repository)
+ for i, r := range o.mavenRepositories {
+ repository := maven.NewRepository(r)
+ if repository.ID == "" {
+ repository.ID = fmt.Sprintf("repository-%03d", i)
}
- settings.Profiles = []maven.Profile{
- {
- ID: "maven-settings",
- Activation: maven.Activation{
- ActiveByDefault: true,
- },
- Repositories: repositories,
- PluginRepositories: repositories,
- },
- }
+ repositories = append(repositories, repository)
+ }
- data, err := util.EncodeXML(settings)
- if err != nil {
- return err
- }
+ // Enables strict checksums for Maven central if not already configured
+ if !containsMvnCentral(repositories) {
+ repository := maven.NewRepository("https://repo.maven.apache.org/maven2@id=central")
+ repositories = append([]maven.Repository{repository}, repositories...)
+ }
- cm := corev1.ConfigMap{
- TypeMeta: metav1.TypeMeta{
- Kind: "ConfigMap",
- APIVersion: "v1",
- },
- ObjectMeta: metav1.ObjectMeta{
- Name: platform.Name + "-maven-settings",
- Namespace: namespace,
- Labels: map[string]string{
- "app": "camel-k",
- },
+ settings.Profiles = []maven.Profile{
+ {
+ ID: "maven-settings",
+ Activation: maven.Activation{
+ ActiveByDefault: true,
},
- Data: map[string]string{
- "settings.xml": string(data),
+ Repositories: repositories,
+ PluginRepositories: repositories,
+ },
+ }
+
+ data, err := util.EncodeXML(settings)
+ if err != nil {
+ return err
+ }
+
+ cm := corev1.ConfigMap{
+ TypeMeta: metav1.TypeMeta{
+ Kind: "ConfigMap",
+ APIVersion: "v1",
+ },
+ ObjectMeta: metav1.ObjectMeta{
+ Name: platform.Name + "-maven-settings",
+ Namespace: namespace,
+ Labels: map[string]string{
+ "app": "camel-k",
},
- }
+ },
+ Data: map[string]string{
+ "settings.xml": string(data),
+ },
+ }
- err = install.RuntimeObjectOrCollect(o.Context, c, namespace, collection, &cm)
- if err != nil {
- return err
- }
+ err = install.RuntimeObjectOrCollect(o.Context, c, namespace, collection, &cm)
+ if err != nil {
+ return err
}
if o.mavenSettings != "" {
@@ -434,3 +438,12 @@ func decodeMavenSettings(mavenSettings string) (v1alpha1.ValueSource, error) {
return v1alpha1.ValueSource{}, fmt.Errorf("illegal maven setting definition, syntax: configmap|secret:resource-name[/settings path]")
}
+
+func containsMvnCentral(repositories []maven.Repository) bool {
+ for _, r := range repositories {
+ if r.ID == "central" {
+ return true
+ }
+ }
+ return false
+}
diff --git a/pkg/util/maven/maven_project.go b/pkg/util/maven/maven_project.go
index 541414f..db4ea04 100644
--- a/pkg/util/maven/maven_project.go
+++ b/pkg/util/maven/maven_project.go
@@ -166,10 +166,12 @@ func NewRepository(repo string) Repository {
r := Repository{
URL: repo,
Releases: RepositoryPolicy{
- Enabled: true,
+ Enabled: true,
+ ChecksumPolicy: "fail",
},
Snapshots: RepositoryPolicy{
- Enabled: false,
+ Enabled: false,
+ ChecksumPolicy: "fail",
},
}
@@ -184,6 +186,9 @@ func NewRepository(repo string) Repository {
r.Releases.Enabled = false
case strings.HasPrefix(attribute, "id="):
r.ID = attribute[3:]
+ case strings.HasPrefix(attribute, "checksumpolicy="):
+ r.Snapshots.ChecksumPolicy = attribute[15:]
+ r.Releases.ChecksumPolicy = attribute[15:]
}
}
}
diff --git a/pkg/util/maven/maven_project_test.go b/pkg/util/maven/maven_project_test.go
index 6c8e980..d717d7f 100644
--- a/pkg/util/maven/maven_project_test.go
+++ b/pkg/util/maven/maven_project_test.go
@@ -187,6 +187,8 @@ func TestNewRepository(t *testing.T) {
assert.Equal(t, "http://nexus/public", r.URL)
assert.True(t, r.Releases.Enabled)
assert.False(t, r.Snapshots.Enabled)
+ assert.Equal(t, "fail", r.Releases.ChecksumPolicy)
+ assert.Equal(t, "fail", r.Snapshots.ChecksumPolicy)
}
func TestNewRepositoryWithSnapshots(t *testing.T) {
@@ -195,6 +197,8 @@ func TestNewRepositoryWithSnapshots(t *testing.T) {
assert.Equal(t, "http://nexus/public", r.URL)
assert.True(t, r.Releases.Enabled)
assert.True(t, r.Snapshots.Enabled)
+ assert.Equal(t, "fail", r.Releases.ChecksumPolicy)
+ assert.Equal(t, "fail", r.Snapshots.ChecksumPolicy)
}
func TestNewRepositoryWithSnapshotsAndID(t *testing.T) {
@@ -203,6 +207,8 @@ func TestNewRepositoryWithSnapshotsAndID(t *testing.T) {
assert.Equal(t, "http://nexus/public", r.URL)
assert.True(t, r.Releases.Enabled)
assert.True(t, r.Snapshots.Enabled)
+ assert.Equal(t, "fail", r.Releases.ChecksumPolicy)
+ assert.Equal(t, "fail", r.Snapshots.ChecksumPolicy)
}
func TestNewRepositoryWithID(t *testing.T) {
@@ -211,4 +217,16 @@ func TestNewRepositoryWithID(t *testing.T) {
assert.Equal(t, "http://nexus/public", r.URL)
assert.True(t, r.Releases.Enabled)
assert.False(t, r.Snapshots.Enabled)
+ assert.Equal(t, "fail", r.Releases.ChecksumPolicy)
+ assert.Equal(t, "fail", r.Snapshots.ChecksumPolicy)
+}
+
+func TestNewRepositoryWithChecksumPolicy(t *testing.T) {
+ r := NewRepository("http://nexus/public@checksumpolicy=warn")
+ assert.Equal(t, "", r.ID)
+ assert.Equal(t, "http://nexus/public", r.URL)
+ assert.True(t, r.Releases.Enabled)
+ assert.False(t, r.Snapshots.Enabled)
+ assert.Equal(t, "warn", r.Releases.ChecksumPolicy)
+ assert.Equal(t, "warn", r.Snapshots.ChecksumPolicy)
}
diff --git a/pkg/util/maven/maven_settings_test.go b/pkg/util/maven/maven_settings_test.go
index ef1df7f..75d2a20 100644
--- a/pkg/util/maven/maven_settings_test.go
+++ b/pkg/util/maven/maven_settings_test.go
@@ -40,10 +40,12 @@ const expectedSettings = `<?xml version="1.0" encoding="UTF-8"?>
<url>https://repo.maven.apache.org/maven2</url>
<snapshots>
<enabled>false</enabled>
+ <checksumPolicy>warn</checksumPolicy>
</snapshots>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
+ <checksumPolicy>fail</checksumPolicy>
</releases>
</repository>
</repositories>
@@ -66,11 +68,13 @@ func TestSettingsGeneration(t *testing.T) {
ID: "central",
URL: "https://repo.maven.apache.org/maven2",
Snapshots: RepositoryPolicy{
- Enabled: false,
+ Enabled: false,
+ ChecksumPolicy: "warn",
},
Releases: RepositoryPolicy{
- Enabled: true,
- UpdatePolicy: "never",
+ Enabled: true,
+ UpdatePolicy: "never",
+ ChecksumPolicy: "fail",
},
},
},
diff --git a/pkg/util/maven/maven_types.go b/pkg/util/maven/maven_types.go
index 26e5b3c..6adbd06 100644
--- a/pkg/util/maven/maven_types.go
+++ b/pkg/util/maven/maven_types.go
@@ -35,8 +35,9 @@ type Repository struct {
// RepositoryPolicy --
type RepositoryPolicy struct {
- Enabled bool `xml:"enabled"`
- UpdatePolicy string `xml:"updatePolicy,omitempty"`
+ Enabled bool `xml:"enabled"`
+ UpdatePolicy string `xml:"updatePolicy,omitempty"`
+ ChecksumPolicy string `xml:"checksumPolicy,omitempty"`
}
// Build --