РЕДАКТИРОВАТЬ
Я думаю, что я неправильно понял satis, теперь это мое новое понимание, пожалуйста, поправьте меня, если я ошибаюсь:
В satis.json я должен указать URL-адреса пакетов, которые я хочу зеркалировать, например, доктрина git repo, yaml git repo... Затем satis зеркалирует все эти пакеты на моем сервере. Это означало бы, что мне нужно добавить один раз все пакеты, используемые в моем проекте composer.json моего проекта, в satis json (около 20 пакетов/требований). Теперь я могу добавить свой приватный репозиторий satis в файл composer.json моего проекта, а при запуске "composer update" он сначала будет искать в зеркальных пакетах satis для требуемого пакета. Правильно ли я это понял?
Ситуация:
Я пытаюсь использовать Satis для частного репозитория композиторов. У меня есть частный проект на github для моего веб-сайта. В проекте я использую композитор, и поэтому у меня есть композитор.json в корне проекта. Он выглядит следующим образом:
{
"name": "Peter North",
"license": "proprietary",
"type": "project",
"autoload": {
"psr-4": {
"": "src/"
}
},
"require": {
"php": ">=5.3.9",
"symfony/http-foundation": "dev-master"
}
...
}
Теперь я хотел использовать свой приватный репозиторий satis url: packages.ait.company, работающий на apache и доступный до сих пор. Satis.json выглядит следующим образом:
{
"name": "AIT Company",
"homepage": "packages.ait.com",
"repositories": [
{
"type": "vcs",
"url": "[email protected]:north/ait.git" // this is the url of my private github project
}
],
"require-all": true,
"require-dependencies": true,
"archive": {
"directory": "dist",
"format": "tar",
"skip-dev": true
}
}
Я думаю, что я не очень хорошо понимал, как структурировать файл satis.json и что он должен содержать, потому что, как я пытаюсь, он не загружает пакеты "php" и "symfony/http-foundation", которые я указал в файле composer.json - хотя он загружает правильный файл composer.json проекта в /satis/include каталог json файла.
Как должен выглядеть satis.json, когда я хочу прочитать композитор.json моего проекта из github и создать приватный репозиторий satis для "require entries"?
В моем сценарии обновления Satis это двухэтапный процесс для создания локальных копий как из внешних пакетов, так и из внутренних, частных репозиториев.
На первом этапе загружаются метаданные внешних зависимостей и помещаются в промежуточный репозиторий satis. Конфигурация явно не "требует-все", но имеет явные инструкции всех используемых пакетов (и некоторые из них, которые могут использоваться или использовались в прошлом) с открытым шаблоном версии, то есть "symfony/console":">=2.4"
(нет тильды или каретки - я хочу получить основные обновления версии здесь). Добавление require-dependencies:true
сканирует все зависимости всех необходимых пакетов и добавляет их в коллекцию метаданных.
Результат сохраняется в каталоге "внешний".
Второй шаг отвечает за сканирование всех пакетов из внутренних "репозиториев" и создание из них архивов. Это, очевидно, список всех частных репозиториев, но трюк: вы также можете добавить в satis.json
репозиторий типа "композитор" - и именно там я добавляю внешний репозиторий с метаданными из внешних пакетов. Добавление его здесь добавляет все версии внешних пакетов в список версий, для которых необходимо создать ZIP файлы.
Запуск его в первый раз занимает много времени из-за всех пакетов, которые необходимо загрузить (и созданных локально из частных репозиториев). Запуск после этого - просто инкрементное обновление только новых версий, которые ранее не были созданы.
Ключ состоит в том, чтобы настроить сбор внешних пакетов без ZIP-адресов и с явными диапазонами версий ("*", поскольку версия будет работать, но использовать ее, только если вам действительно нужны все версии) в одном файле Satis, а затем добавить результирующий репозиторий во вторую конфигурацию Satis, Вы не можете объединить две операции (только создание ZIP-адресов выбранных внешних зависимостей вместе с ZIP файлами ВСЕХ внутренних репозиториев) в один запуск Satis.
Еще один совет: вы, вероятно, только хотите создать локальные копии внешних зависимостей, чтобы избежать столкновения с отключением Github при развертывании на производство (или разрабатывать и нуждаться в этом обновлении). Чтобы гарантировать, что каждая используемая зависимость находится в моем Satis, я добавил оба репозитория Satis для каждого composer.json
, а также для "packagist":false
, чтобы отключить прямой контакт с Packagist. Вы не можете просто добавить случайный пакет, тогда он должен быть в вашем локальном репозитории Satis.