【问题标题】:Maven build step to install Node package from private repository从私有存储库安装 Node 包的 Maven 构建步骤
【发布时间】: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


    【解决方案1】:

    第二个问题是大多数开发人员使用 HTTPS 连接到存储库

    1/ 他们可以继续这样做,确保他们使用 credential helper 来缓存他们的 github.com 用户名和密码(例如,使用 Git for Windows,您将使用Microsoft Git Credential Manager,链接到Credential Manager in Windows)

    2/ 为了不更改您的设置(使用 ssh url),开发人员可以使用如下全局配置:

    git config --global url."https://github.com".insteadOf git+ssh://git@github.com
    

    这样,任何git@github.com ssh 网址都会被解释/更改为 https 网址。

    【讨论】:

    • 您是说使用 SSH 的开发人员会添加 Git 配置设置,还是使用 HTTPS 的开发人员?这会阻止任何人在构建过程中被要求创建 SSH 密钥或输入密码或响应任何其他提示吗?
    • @DaveKennedy 我是说想要使用 https 的开发人员可以通过在他们自己的工作站上完成的全局配置来使用您的设置(其中包含一个 ssh url)。该配置仅适用于他们,不会阻止其他任何事情。
    • 我尝试添加 Git 配置设置、移动我的 ~/.ssh 文件夹并构建项目。发生的事情让我很吃惊。我以为它会提示我输入密码,但它提示我允许 SSH 连接(无法建立主机 github.com 的真实性...您确定要继续吗?)。就像我上面提到的,它隐藏在滚动缓冲区中,所以很难确定它为什么挂起。
    • @DaveKennedy 关于 ssh,特别是如果您移动了 ~/.ssh 文件夹(意味着也移动了 ~/.ssh/known_hosts 文件),这样的问题是意料之中的。只会做一次,记录在~/.ssh/known_hosts
    • @DaveKennedy 但这也可能意味着 .insteadOf git+ssh://git@github.com 设置没有像我希望的那样得到很好的认可:您可能需要在这里进行一些测试。
    猜你喜欢
    • 2016-11-15
    • 2023-01-26
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 2015-05-06
    • 2019-12-11
    • 2020-08-10
    • 2016-08-18
    相关资源
    最近更新 更多