【发布时间】:2017-03-07 05:08:53
【问题描述】:
我有一个 Maven 项目,它使用 exec-maven-plugin 将 Node 依赖项作为构建的一部分:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<workingDirectory>src/main</workingDirectory>
</configuration>
<executions>
<execution>
<id>npm-install</id>
<configuration>
<executable>npm</executable>
<arguments>
<argument>install</argument>
</arguments>
</configuration>
<phase>initialize</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
其中一个节点依赖项托管在私有 Git 存储库中。不想每次构建都输入密码,所以在package.json中使用git+ssh协议:
"dependencies": {
"sass-theme": "git+ssh://git@github.com/MyOrg/sass-theme.git#v1.0.2",
"node-sass": "^4.5.0"
}
这对我来说很好用,因为我经常使用 SSH 连接到我的组织私有 Git 存储库,并且 SSH 密钥不受密码保护。它也适用于我们的 Jenkins 服务器,它有自己的 SSH 密钥。
这种方法的第一个问题是我组织中的一些开发人员使用密码保护他们的 SSH 密钥,因此在构建过程中会提示他们输入密码。
第二个问题是大多数开发人员使用 HTTPS 连接到存储库,因此他们必须创建一个 SSH 密钥并将其注册到 GitHub。然后,在构建过程中,系统会提示他们允许 SSH 连接,但它在构建过程中出现得太早,以至于它在滚动缓冲区中丢失了。
我可以进行哪些更改以使此过程更加无缝?我们可以有一个共享的 SSH 密钥吗?还是我需要更改Node依赖的URL才能使用git+https?
【问题讨论】:
标签: node.js git maven jenkins ssh