Как получить доступ к gpm-зависимости npm от jenkins? - PullRequest
0 голосов
/ 13 февраля 2019

В моем package.json у меня есть зависимость от другого git-репозитория:

"my-dependeny":"git+https://somehost.com/my-dependency.git#<commit-hash>"

После запуска npm install это прекрасно работает при разработке, потому что git использует мои личные сохраненные учетные данные.

Но выполнить npm install в jenkins-pipline не удастся, потому что нет сохраненных учетных данных.Поэтому я сначала попытался сгенерировать токен развертывания в gitlab и отредактировать package.json:

"my-dependeny":"git+https://<deploy-token>:<password>@somehost.com/my-dependency.git#<commit-hash>"

Теперь он будет работать на jenkins!Но проблема этого подхода заключается в том, что Windows автоматически обновляет учетные данные для хоста (somehost.com) в Credentials Manager:

enter image description here

Таким образом, когда любой разработчик запускает npm install и впоследствии пытается получить доступ к другому проекту на том же хосте, он потерпит неудачу, потому что он будет использовать deploy-token для аутентификации.

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

Может быть, есть и способ остановить Credential Manager от обновления учетных данных git.Но это также звучит не очень хорошо, потому что каждый разработчик должен был бы предотвратить это, что не очень интуитивно понятно.

Мой вопрос

Есть ли хороший способ получить доступ к gpm-зависимостям npm от jenkins, не требуя дополнительных действий, которые должен выполнять каждый разработчик?

1 Ответ

0 голосов
/ 02 апреля 2019

Я наконец смог найти решение самостоятельно с помощью git-credential-store .

Следующие шаги применимы для систем linux , потому чтов моем случае Jenkins работает на Linux.Но должно быть похожее решение для систем Windows.

  1. Создать пустой ~/.git-credentials файл.Если вы используете Dockerfile для копирования файла .git-credentials, вам, скорее всего, придется использовать /root/git-credentials в качестве пути (например, COPY .git-credentials /root/)

  2. Вставьте свои учетные данные, как показано ниже,Ваш ~/.git-credentials файл:

    <protocol>://<deploy-token>:<password>@<hostname>/<project>

    Пример:

    https://gitlab+deploy-10:mYSecReTPaSSWord@somehost.com/my-dependency.git

    или несколько учетных данных (выполните 4. для включения этой функции выполните следующие действия):

    https://gitlab+deploy-10:mYSecReTPaSSWord@somehost.de/some-path/some-project.git https://gitlab+deploy-11:otHerPaSSWord@somehost.de/some-path/some-other-project.git

    ПРИМЕЧАНИЕ:

    Оконечные линии в~/.git-credentials должно быть LF .Если они CR; LF , могут возникнуть непредвиденные ошибки.

  3. git config --global credential.helper store

    Это скажет Git, что вы хотите использовать ваш.git-credentials файл для аутентификации.(~/.git-credentials является местоположением по умолчанию)

  4. необязательно: git config --global credential.useHttpPath true

    Это необходимо, если вы хотите использовать mutliple Deploy Tokensдля нескольких проектов в пределах одного имени хоста .Без credential.useHttpPath true в приведенном выше примере это будет означать, что gitlab+deploy-10:mYSecReTPaSSWord будет использоваться в каждом запросе к somehost.de.Путь HTTP будет полностью проигнорирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...