Как я могу использовать токен Git для доступа к частному репозиторию с Travis CI / Cloudfoundry? - PullRequest
0 голосов
/ 27 июня 2018

Config


CF CLI версия cf version

ср. Версия 6.37.0 + a40009753.2018-05-25

Версия Buildpack

https://github.com/cloudfoundry/nodejs-buildpack

Manifest
applications:
- path: .
  memory: 2048M
  instances: 1
  buildpack: nodejs_buildpack
  name: kpb-singlenode-api-tmp
  command: node server.js
  disk_quota: 2048M
deploy.sh
#!/bin/bash
./Bluemix_CLI/bin/ibmcloud config --check-version false
./Bluemix_CLI/bin/ibmcloud api $API_ENDPOINT
./Bluemix_CLI/bin/ibmcloud login --apikey $API_KEY
./Bluemix_CLI/bin/ibmcloud target -o $IBMCLOUD_ORGANIZATION -s $IBMCLOUD_SPACE
./Bluemix_CLI/bin/ibmcloud app push kpb-node-api
.travis.yml
language: node_js
node_js:
  - '8'
script: echo "skipping tests"
before_deploy:
  - curl -L https://clis.ng.bluemix.net/download/bluemix-cli/latest/linux64 | tar -zx
  - chmod -R u+x ./Bluemix_CLI/bin
  - chmod +x ./deploy.sh
deploy:
  provider: script
  script: ./deploy.sh
  on:
    repo: myrepo/kpb-node-api
    branch: master
  skip_cleanup: true

Выпуск


Я просто пытаюсь отправить свое приложение в IBM Cloud (cloudfoundry), но я использую частные репозитории на github Enterprise, поэтому агент сборки cf (cloudfoundry) завершается неудачно npm install, так как он пытается подключиться через логин / пароль (что запрещено) в то время как он должен использовать токен Git ...

Сборка автоматизирована с помощью Travis CI.

Ожидаемое поведение

Агент Cloudfoundry (или Travis?) Должен использовать git-токен при запуске npm install

Фактическое поведение

Придерживается логина / пароля, поэтому github выдает you should use git token or ssh key instead


Насколько я знаю, проблема в том, что мы используем частный репозиторий, объявленный так: git+https://github.com/someone/awesome-private-pkg.git (мы не можем использовать npm publish и т.д ...) Ошибка будет выдана, пока cloudfoundry попытается npm установить частный репозиторий с учетными данными логина / пароля

Это мои журналы ошибок:

npm ERR! Error while executing:
npm ERR! /usr/bin/git ls-remote -h -t https://github.ibm.com/myrepo/kpb-api-pkg
npm ERR! 
npm ERR! remote: Password authentication is not available for Git operations.
npm ERR! remote: You must use a personal access token or SSH key.
npm ERR! remote: See https://github.ibm.com/settings/tokens or https://github.ibm.com/settings/ssh
npm ERR! fatal: unable to access 'https://github.ibm.com/myrepo/kpb-api-pkg/': The requested URL returned error: 403
npm ERR! 
npm ERR! exited with error code: 128
npm ERR! A complete log of this run can be found in:
npm ERR!     /home/travis/.npm/_logs/2018-06-26T10_31_07_934Z-debug.log

Я копаю на .bashrc, чтобы, возможно, установить переменные с помощью git config --global git.token

Спасибо за помощь, хорошего дня!

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Так что вам просто нужно добавить

before_install:
  - echo -e "machine github.ibm.com\n  login $GIT_TOKEN" > ~/.netrc

на ваш .travis.yml


Решение пришло само собой, из Travis docs

enter image description here

Эта таблица довольно явная с точки зрения доступа, так как я копался в извлечении всех моих личных модулей с помощью метода SSH Deploy Key (git+ssh://git@github.ibm.com/org/app), было довольно сложно получить все репозитории с помощью одного ключа SSH. ..

Следовательно, они предлагают User Key метод, который является лучшим, но я не могу применить из-за GitHub Enterprise , который привязывает 1 почтовый адрес компании к 1 учетной записи GHubE (SAML материал )

Как я уже говорил в своем посте, я не смог предоставить правильные кредиты правильным способом. Я не понял, что файл .netrc существует в соответствии с Password и API token методами

По-видимому, он устанавливает агент travis для использования желаемого типа входа (кроме ssh)!


Большое спасибо @DanielMikusa за помощь!

0 голосов
/ 27 июня 2018

Здесь много информации, и я не уверен, что все это актуально. Похоже, суть вашей проблемы в том, что когда ваше приложение находится в стадии разработки (то есть, когда запускается buildpack), buildpack запускает npm install, который, в свою очередь, пытается получить зависимость от частного репозитория github.

Предполагая, что я правильно понял ...

  1. Одним из возможных решений будет продвижение ваших зависимостей. Когда вы «продаете» зависимости, вы в основном запускаете npm install локально или в какой-то среде, которой вы управляете, тогда вы отправляете зависимости вместе с вашим приложением в Cloud Foundry. Это подходит для более крупного приложения, но когда ваше приложение запускается и платформа запускает npm install, все зависимости уже существуют, поэтому npm install становится в основном неактивным.

    Основной трюк с скомпилированными зависимостями. Чтобы это работало, вам нужно разместить свои зависимости в системе, которая соответствует rootfs в Cloud Foundry. В настоящее время стек cflinuxfs2 соответствует Ubuntu Trusty 14.04.

    Подробнее о продаже зависимостей вы можете прочитать в документации здесь.

    https://docs.cloudfoundry.org/buildpacks/node/index.html#vendoring

  2. Другим решением будет использование cf local. Это cf плагин cli, который использует Docker для запуска buildpack-пакетов в вашей локальной системе. В локальной системе вы, вероятно, сможете получить доступ к своему частному репозиторию (он в основном работает с вашего ноутбука / ПК). Затем buildpack-пакет запустится и создаст полностью автономную каплю. Затем вы можете использовать cf local, чтобы экспортировать эту каплю и отправить ее на любую другую платформу Cloud Foundry.

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

  3. Еще одна вещь, которую вы можете сделать, и я не уверен на 100%, что это будет работать, - это включить файл .npmrc. В пакете сборки должен быть настроен npm для просмотра этого файла при запуске npm install. Идея заключается в том, чтобы включить в npm некоторую опцию конфигурации, которая позволила бы ему подключиться к вашему репо. Я не эксперт по npm, поэтому не знаю, существует ли такая опция. Просто подумал, что упомяну это на случай, если это поможет.

...