Использование Composer и Private Repository на GitHub с использованием VCS на сервере сборки

23

Мой compsoser.json использует 2 частных репозитория из нашей учетной записи Organization Github и выглядит следующим образом.

{
    "name": "API",
    "repositories": [
      {
        "type": "vcs",
        "url": "[email protected]/company/private.git"
      },
      {
        "type": "vcs",
        "url": "[email protected]/company/private2.git"
      }
    ],
    "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework": ">2.1.3",
        "doctrine/mongodb-odm": "dev-master",
        "doctrine/doctrine-mongo-odm-module": "dev-master",
        "company/private": "dev-master",
        "company/private2": "dev-master"
    }
}

Мы установили ключи SSH и добавили их к авторизованным ключам на нашем промежуточном сервере. Когда мы запускаем git-клон, он отлично работает и не запрашивает никаких учетных данных.

Однако, когда мы запускаем обновление композитора, выборка репозиториев не выполняется, потому что композитор не имеет доступа к репозиториям.

Так как это выполняется неинтерактивным способом, так как это часть скрипта сборки, мы не можем вводить учетные данные и как автоматизировать это.

Что мы можем сделать, чтобы позволить композитору получить доступ к нашему частному репо во время сборки?

    
задан Simon 20.08.2014 в 10:43
источник

4 ответа

13

Вы можете настроить композитор на использование файлов ключей для доступа к частному репозиторию.

Дополнительная информация: Ссылка

    
ответ дан michail_w 20.08.2014 в 10:47
источник
25

Я понимаю, что заголовок вопроса конкретно упоминает использование типа 'vcs', но это альтернативный метод использования частных git-репозиций для развертывания проекта как пакета.

"repositories": [
  {
    "type": "package",
    "package": {
      "name": "company/private",
      "version": "0.1.0",
      "type": "package",
      "source": {
        "url": "[email protected]:/company/private.git",
        "type": "git",
        "reference": "master"
      }
    }
  }
],
"require": {
  "company/private": "*"
}

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

Определение репо таким образом позволит вытащить специальную тегированную версию . В этом случае фиксация с тегом 0.1.0 будет нажата на composer update .

Вам нужно будет добавить ключи SSH сервера, на который вы развертываете, в свою учетную запись github.

    
ответ дан myol 15.06.2015 в 12:12
источник
  • Я сделал это, но все еще не вытащил –  Paul Preibisch 16.12.2016 в 12:16
  • @PaulPreibisch Я предполагаю, что вы выяснили проблему? Если нет, вставьте свой код, и мы посмотрим. –  Dream Ideation 08.06.2017 в 02:36
  • Как объясняет Стюарт, параметр «url» пропускает двоеточие (:). Я попытался отредактировать ответ, но изменения одного символа не разрешены. –  a.l.e 27.06.2017 в 10:54
  • Спасибо, обновлено –  myol 27.06.2017 в 15:03
5

В URL-адресах исходного вопроса отсутствует двоеточие:

"url": "[email protected]/company/private.git"

должен быть

"url": "[email protected]:/company/private.git"

У меня была одна и та же проблема, и это исправило ее.

    
ответ дан Stuart Cusack 14.02.2017 в 13:48
источник
2
"name": "{vendor}/{package-name}",    
"repositories": [
    {
        "type": "package",
        "package": {
            "name": "{vendor}/{package-name}",
            "version": "{arbitrary-version}",
            "type": "package",
            "source": {
                "url": "[email protected]:{github-username}/{github-repository}.git",
                "type": "git",
                "reference": "{branch}"
            }
        }
    }
]
"require": {
    "{vendor}/{package-name}": "*"
}

Я действительно оценил ответы и рекомендации; однако, not получит решение для работы для меня. И, я думаю, ответ мог бы использовать некоторые дополнительные детали в отношении того, что, по-видимому, происходит здесь.

  • поставщик . Имя поставщика, используемое в composer.json пакета.
  • имя пакета: Имя пользователя пакета в composer.json пакета.
  • произвольная версия: Номер случайной версии; не должен существовать как версия в GitHub.
  • github-username: Учетная запись пользователя GitHub, в которой находится репо.
  • github-repository: Имя репозитория GitHub.
  • ветвь : ветвь GitHub, используемая при проверке кода.

Две вещи, которые дали мне наибольшую проблему, - двоеточие ( : ) не должно (не должно?) сопровождаться косой чертой ( / ). Не забудьте поставить .git в конце url .

Точки гипотезы и неопределенности:

  1. Я не уверен, что произойдет, если вы измените член package.name на что-то неправильное. Другими словами, я не знаю, является ли это внутренней ссылкой только для require ; или, если там будет что-то еще.
  2. Я не уверен, что ветвь на самом деле меняет что-то, и я не могу ее проверить.
ответ дан Josh Bruce 17.09.2017 в 20:46
источник