2016-01-25 4 views
1

Я пытаюсь настроить свой собственный сервер satis для всех моих композиционных пакетов. Многие пакеты имеют зависимости от чего-то вроде phpunit или phpmd. Я хочу создавать архивы всех этих зависимостей в моих сатисах. Но satis только создает архивы из данных репозиториев и не включает зависимости.Satis, как архивировать требуемые зависимости?

Любая идея, как я могу это исправить?

Вот мой satis.json

{ 
    "name": "My satis repository", 
    "homepage": "http://satis.example.com", 
    "repositories": [ 
    { 
     "url": "[email protected]:<user>/<repository>.git", 
     "type": "vcs" 
    } 
    ], 
    "require-all": true, 
    "require-dependencies": true, 
    "require-dev-dependencies": true, 
    "archive": { 
    "directory": "dist", 
    "format": "zip", 
    "skip-dev": true 
    } 
} 

ответ

0

Когда Satis ищет пакеты, которые она пытается решить все необходимые пакеты из перечисленных хранилищ. Просто определите их отдельно в своем satis.json.

(также может быть ошибка, потому что вручную определения зависимостей является утомительным и побеждает require-dependencies директиву. Рассмотрим сообщать об этом более в вопросах отслеживания Сатис.)

0

Вы можете просмотреть список всех пакетов (включая вложенные зависимостей) из composer.lock:

grep "\"name\":.*/.*" composer.lock 
0

Там нет простого способа извлечения всех версий пакетов из частного хранилища с Satis и зеркало всех зависимостей, а также.

Это связано с тем, что в какой-то момент зеркало будет пытаться извлечь весь контент Packagist.

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

A) Добавлением источников хранилища и требует всех собственных пакетов

Satis имеет связи с Packagist отключить, по умолчанию. Поэтому вам нужно добавить Packagist в качестве репозитория. Если вы добавите свои репозитории, не требуя конкретной версии своего пакета, Satis переключится на режим «требовать-все» («Нет явного требования, определенного, разрешающего require-all»). Затем вы попытались получить все версии пакетов вашего репозитория и все версии пакета на Packagist. Boom. Это не удастся. Поэтому для предотвращения режима «требовать-все» требуются определенные пакеты.

  1. Добавить ваше хранилище
  2. Установка требует зависимостей (require-dependencies: true, require-dev-dependencies: true)
  3. Добавить Packagist в качестве источника хранилища (Satis отключает packagist.org по умолчанию)
  4. Отключить require-all флаг
  5. Требовать все ваши собственные пакеты, чтобы избежать того, что Satis переключится на «требуемый-все» режим

Так что ваш satis.json должен выглядеть следующим образом:

{ 
    "name": "My satis repository", 
    "homepage": "http://satis.example.com", 
    "repositories": { 
    "packagist": { 
     "type": "composer", 
     "url": "https://packagist.org/" 
    }, 
    "my-repo": { 
     "url": "[email protected]:<user>/<repository>.git", 
     "type": "vcs" 
    } 
    }, 
    "require": { 
    "mycompany/package-foo": "^1.1", 
    "mycompany/package-bar": "*" 
    }, 
    "require-all": false, 
    "require-dependencies": true, 
    "require-dev-dependencies": true, 
    "archive": { 
    "directory": "dist", 
    "format": "zip", 
    "skip-dev": true 
    } 
} 

Источник: https://github.com/composer/satis/issues/296

Btw: Получение всех этих зависимостей из нескольких хранилищ может привести к предельному памяти ошибки.Composer suggests поднять лимит памяти при запуске Satis, как это:

php -d memory_limit=2GB ./bin/satis build satis.json web 

B) Установите два Satis экземпляра - один четыре собственных пакетов, один, чтобы отразить все зависимости

Если у вас есть много пакетов в вашем репозитории, но только в нескольких зависимостях, тогда эта оценка поможет вам сэкономить время, чтобы записать требования (например, 100 пакетов в вашей компании, но только 5 зависимостей от сторонних пакетов).

  1. Добавить ваше хранилище
  2. Set »требуют, все« извлечь все версии пакета в репозитории

Этот satis.json должен выглядеть следующим образом:

{ 
    "name": "My package repository", 
    "homepage": "http://packages.example.com", 
    "repositories": { 
    "my-repo": { 
     "url": "[email protected]:<user>/<repository>.git", 
     "type": "vcs" 
    } 
    }, 
    "require-all": true, 
    "archive": { 
    "directory": "dist", 
    "format": "zip", 
    "skip-dev": true 
    } 
} 

Это обыкновение выборки. Их необходимо добавить вручную в другом экземпляре Satis.

  1. Добавить другой Satis.json отразить все зависимости
  2. Добавить Packagist в хранилище
  3. требовать, чтобы все требуемых зависимых пакетов только

Этого satis.json должен выглядеть следующим образом:

{ 
    "name": "My mirror repository", 
    "homepage": "http://mirror.example.com", 
    "repositories": { 
    "packagist": { 
     "type": "composer", 
     "url": "https://packagist.org/" 
    } 
    }, 
    "require": { 
    "acme/some-package-foo": "*", 
    "johndoe/some-package-bar": "*" 
    }, 
    "require-all": false, 
    "require-dependencies": true, 
    "require-dev-dependencies": true, 
    "archive": { 
    "directory": "dist", 
    "format": "zip", 
    "skip-dev": true 
    } 
} 

Помните, что зеркальное отображение все зависимости займут много времени.

http://tech.m6web.fr/composer-installation-without-github.html