Каков наилучший способ сохранить имя пользователя / пароль для задачи Ant SCP - PullRequest
0 голосов
/ 20 февраля 2020

Мне нужно использовать задачу scp для переноса целой папки со многими подпапками и файлами. В настоящее время я использую следующий способ:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
        <execution>
        <phase>validate</phase>
        <configuration>
            <tasks>
            <mkdir dir="${project.build.directory}/yy" />                     
            <scp file="user:password@host:/home/xx/yy/*" todir="${project.build.directory}/yy" trust="yes"/>
            </tasks>
        </configuration>
        <goals>
            <goal>run</goal>
        </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-jsch</artifactId>
            <version>1.7.1</version>
        </dependency>
    </dependencies>
</plugin>   

И это также работает, если я жестко кодирую имя пользователя и пароль. Но я не хочу делать эту публикацию c в кодовой базе. Поэтому я сохраняю его в maven-настройках. xml как показано ниже:

pom. xml

<scp file="${scpUserName}:${scpUserPassword}@company.net:/home/xx/yy/*" todir="${project.build.directory}/yy" trust="yes"/>

settings. xml

<profiles>
    <profile>
        <id>unix</id>
        <activation>
            <os>
                <family>unix</family>
            </os>           
        </activation>
        <properties>
            <scpUserName>xxx</scpUserName>
            <scpUserPassword>xxx</scpUserPassword>
        </properties>
    </profile>
</profiles> 

Но мне все еще нужно сделать имя пользователя / пароль publi c на сервере Teamcity, чтобы все серверы агентов могли успешно построить весь проект. Интересно, есть ли лучший способ для этого?

1 Ответ

0 голосов
/ 20 февраля 2020

Maven документация объясняет. Сначала создайте мастер-пароль

mvn --encrypt-master-password <password>

Введите результат в settings-security.xml

<settingsSecurity>
  <master>the result here</master>
</settingsSecurity>

Для отдельных паролей зашифруйте, как это

mvn --encrypt-password <password>

И вы можете используйте его непосредственно в вашем плагине Maven

<properties>
    <scpUserName>xxx<sscpUserName>
    <scpUserPassword>the result here</scpUserPassword>
</properties>

Когда ваш сервер сборки вызывает Maven, вам нужно будет указать мастер-пароль. Вы можете сделать это, сохранив пароль, используя хранилище паролей или что-то еще.

...