From 4433a8f3d8772ec5111cd927aac2c379c1977361 Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Fri, 2 Feb 2024 17:52:29 +0100 Subject: [PATCH 1/3] [MRELEASE-1139] Improve logging of sources for used credentials Clarify precedence of credentials resolved via settings and those explicitly given. --- .../release/config/ReleaseDescriptor.java | 6 ++-- .../scm/DefaultScmRepositoryConfigurator.java | 28 ++++++++++++++++--- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java b/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java index 976a0f56..8d7462b2 100644 --- a/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java +++ b/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java @@ -366,9 +366,11 @@ public interface ReleaseDescriptor { String getScmBranchBase(); /** - * Get the id can be used to get the credentials by the server-id from the settings.xml. + * Get the id which can be used to get the (optionally encrypted) credentials with the given id from the {@code settings.xml}. + * Explicit credentials in {@link #getScmUsername()}, {@link #getScmPassword()}, {@link #getScmPrivateKey()} or + * {@link #getScmPrivateKeyPassPhrase()} always take precedence, though. * - * @return String + * @return the server id of a server in {@code settings.xml} */ String getScmId(); diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java index 90f31fb4..c4977300 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java @@ -96,6 +96,9 @@ public ScmRepository getConfiguredRepository(String url, ReleaseDescriptor relea if (releaseDescriptor.getScmId() != null) { server = settings.getServer(releaseDescriptor.getScmId()); + if (server == null) { + logger.warn("No server with id {} found in Maven settings", releaseDescriptor.getScmId()); + } } if (server == null && repository.getProviderRepository() instanceof ScmProviderRepositoryWithHost) { @@ -115,19 +118,28 @@ public ScmRepository getConfiguredRepository(String url, ReleaseDescriptor relea } if (server != null) { - if (username == null) { + if (username == null && server.getUsername() != null) { + logger.debug( + "Using username from server id {} found in Maven settings", releaseDescriptor.getScmId()); username = server.getUsername(); } - if (password == null) { + if (password == null && server.getPassword() != null) { + logger.debug( + "Using password from server id {} found in Maven settings", releaseDescriptor.getScmId()); password = decrypt(server.getPassword(), server.getId()); } - if (privateKey == null) { + if (privateKey == null && server.getPrivateKey() != null) { + logger.debug( + "Using private key from server id {} found in Maven settings", + releaseDescriptor.getScmId()); privateKey = server.getPrivateKey(); } - if (passphrase == null) { + if (passphrase == null && server.getPassphrase() != null) { + logger.debug( + "Using passphrase from server id {} found in Maven settings", releaseDescriptor.getScmId()); passphrase = decrypt(server.getPassphrase(), server.getId()); } } @@ -135,19 +147,27 @@ public ScmRepository getConfiguredRepository(String url, ReleaseDescriptor relea if (!(username == null || username.isEmpty())) { scmRepo.setUser(username); + } else { + logger.debug("No explicit username configured"); } if (!(password == null || password.isEmpty())) { scmRepo.setPassword(password); + } else { + logger.debug("No explicit password configured"); } if (scmRepo instanceof ScmProviderRepositoryWithHost) { ScmProviderRepositoryWithHost repositoryWithHost = (ScmProviderRepositoryWithHost) scmRepo; if (!(privateKey == null || privateKey.isEmpty())) { repositoryWithHost.setPrivateKey(privateKey); + } else { + logger.debug("No explicit private key configured"); } if (!(passphrase == null || passphrase.isEmpty())) { repositoryWithHost.setPassphrase(passphrase); + } else { + logger.debug("No explicit passphrase configured"); } } From 2c7e5f539770a5c90fd2b78894a41be0d3bc3672 Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Fri, 2 Feb 2024 20:04:39 +0100 Subject: [PATCH 2/3] Improve logging of server id --- .../scm/DefaultScmRepositoryConfigurator.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java index c4977300..e778e7c8 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java @@ -97,7 +97,7 @@ public ScmRepository getConfiguredRepository(String url, ReleaseDescriptor relea if (releaseDescriptor.getScmId() != null) { server = settings.getServer(releaseDescriptor.getScmId()); if (server == null) { - logger.warn("No server with id {} found in Maven settings", releaseDescriptor.getScmId()); + logger.warn("No server with id '{}' found in Maven settings", releaseDescriptor.getScmId()); } } @@ -120,26 +120,26 @@ public ScmRepository getConfiguredRepository(String url, ReleaseDescriptor relea if (server != null) { if (username == null && server.getUsername() != null) { logger.debug( - "Using username from server id {} found in Maven settings", releaseDescriptor.getScmId()); + "Using username from server id '{}' found in Maven settings", releaseDescriptor.getScmId()); username = server.getUsername(); } if (password == null && server.getPassword() != null) { logger.debug( - "Using password from server id {} found in Maven settings", releaseDescriptor.getScmId()); + "Using password from server id '{}' found in Maven settings", releaseDescriptor.getScmId()); password = decrypt(server.getPassword(), server.getId()); } if (privateKey == null && server.getPrivateKey() != null) { logger.debug( - "Using private key from server id {} found in Maven settings", + "Using private key from server id '{}' found in Maven settings", releaseDescriptor.getScmId()); privateKey = server.getPrivateKey(); } if (passphrase == null && server.getPassphrase() != null) { logger.debug( - "Using passphrase from server id {} found in Maven settings", releaseDescriptor.getScmId()); + "Using passphrase from server id '{}' found in Maven settings", releaseDescriptor.getScmId()); passphrase = decrypt(server.getPassphrase(), server.getId()); } } @@ -190,11 +190,11 @@ public ScmRepository getConfiguredRepository(String url, ReleaseDescriptor relea return repository; } - private String decrypt(String str, String server) { + private String decrypt(String str, String serverId) { try { return mavenCrypto.decrypt(str); } catch (MavenCryptoException e) { - String msg = "Failed to decrypt password/passphrase for server " + server + ", using auth token as is: " + String msg = "Failed to decrypt password/passphrase for server with id '" + serverId + "', using auth token as is: " + e.getMessage(); if (logger.isDebugEnabled()) { logger.warn(msg, e); From ffd98947cd362efe18ed0b0a67432c214fa742b3 Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Thu, 8 Feb 2024 15:23:35 +0100 Subject: [PATCH 3/3] fix formatting --- .../release/scm/DefaultScmRepositoryConfigurator.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java index e778e7c8..d2cb7775 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java @@ -139,7 +139,8 @@ public ScmRepository getConfiguredRepository(String url, ReleaseDescriptor relea if (passphrase == null && server.getPassphrase() != null) { logger.debug( - "Using passphrase from server id '{}' found in Maven settings", releaseDescriptor.getScmId()); + "Using passphrase from server id '{}' found in Maven settings", + releaseDescriptor.getScmId()); passphrase = decrypt(server.getPassphrase(), server.getId()); } } @@ -194,8 +195,8 @@ private String decrypt(String str, String serverId) { try { return mavenCrypto.decrypt(str); } catch (MavenCryptoException e) { - String msg = "Failed to decrypt password/passphrase for server with id '" + serverId + "', using auth token as is: " - + e.getMessage(); + String msg = "Failed to decrypt password/passphrase for server with id '" + serverId + + "', using auth token as is: " + e.getMessage(); if (logger.isDebugEnabled()) { logger.warn(msg, e); } else {