Where do I put my credentials when using Ivy and a private company repository?

前端 未结 4 805
遥遥无期
遥遥无期 2020-12-02 23:56

I\'m using Ant + Ivy, and my company has recently set up a Nexus server for our own private libraries. Ivy can get dependencies from the Nexus server by using a ibilio resol

4条回答
  •  一向
    一向 (楼主)
    2020-12-03 00:43

    Use a settings file with properties controlling the Nexus credentials:

    
        
        
        
                  
    
        
    
        ..
        ..
    
    

    When you run the build you can then specify the true username and password:

    ant -Drepo.user=mark -Drepo.pass=s3Cret
    

    Update/Enhancement

    Storing passwords as properties on the file system requires encryption.

    Jasypt has a command-line program that can generate encrypted strings:

    $ encrypt.sh verbose=0 password=123 input=s3Cret
    hXiMYkpsPY7j3aIh/2/vfQ==
    

    This can be saved in the build's property file:

    username=bill
    password=ENC(hXiMYkpsPY7j3aIh/2/vfQ==)
    

    The following ANT target will decrypt any encrypted ANT properties:

    
        
    
        
        import org.jasypt.properties.EncryptableProperties
        import org.jasypt.encryption.pbe.StandardPBEStringEncryptor
    
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor()
        encryptor.setPassword(properties["master.pass"])
    
        Properties props = new EncryptableProperties((Properties)properties, encryptor);
    
        props.propertyNames().each {
            properties[it] = props.getProperty(it)
        }
        
    
    

    Of course to make this work, the password used for encrypting the properties needs to be specified as part of the build.

    ant -Dmaster.pass=123
    

    This means the solution is only good for hiding data at rest.

提交回复
热议问题