[ 
https://issues.apache.org/jira/browse/MNG-8622?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17933856#comment-17933856
 ] 

Michael Osipov commented on MNG-8622:
-------------------------------------

Writing yourself...

> Ditch settings.xml (supplying credentials)
> ------------------------------------------
>
>                 Key: MNG-8622
>                 URL: https://issues.apache.org/jira/browse/MNG-8622
>             Project: Maven
>          Issue Type: Improvement
>            Reporter: Lars Bruun-Hansen
>            Priority: Major
>
> When working with Maven and CI workflows you'll often find yourself in a 
> situation where the {{settings.xml}} file exists {*}solely as a vessel for 
> credentials{*}.
> Like this:
> {code:xml}
> <settings>
>     <servers>
>         <server>
>             <id>my-server</id>
>             <username>${env.MY_SERVER_USERNAME}</username>
>             <password>${env.MY_SERVER_PASSWORD}</password>
>         </server>
>     </servers>
> </settings>
> {code}
>  
> Luckily there are nowadays various solutions in modern CI systems for 
> {*}generating such file on-the-fly{*}. (for example: check out GitHub's own 
> {{setup-java}} action).
>  
> But why?
>  
> This ticket is about exploring ideas for a having a CI world where such 
> non-sense file is not required.
> The first thing to recognize is that in a CI world the recommended way to 
> supply credentials is by using environment variables. Writing some 
> credentials to disk (even if only temporary) is seen as a major security 
> risk. This is why CI workflows often look like the above.
> So, environment variables are the way to go.
>  
> One idea would be that the elements of the {{<server>}} section could equally 
> well be supplied using environment variables using some kind of fixed naming 
> scheme, for example:
> {noformat}
> MVN_SERVER__<server-id>__USERNAME
> MVN_SERVER__<server-id>__PASSWORD
> MVN_SERVER__<server-id>__PRIVATE_KEY
> MVN_SERVER__<server-id>__PASSPHRASE
> {noformat}
> In other words: As an example, if a plugin would look for credentials for a 
> server-id named "my-server" it would first check so see if such entry existed 
> in {{settings.xml}} file. It would then turn to OS environment variables to 
> check if such values existed there, in this case looking for environment 
> variables with named like:
> {noformat}
> MVN_SERVER__MY_SERVER__USERNAME
> MVN_SERVER__MY_SERVER__PASSWORD
> MVN_SERVER__MY_SERVER__PRIVATE_KEY
> MVN_SERVER__MY_SERVER__PASSPHRASE
> {noformat}
>  
> These are just ideas.
> The basic theme here is how to make Maven more CI friendly.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to