Привет, Хабр.
Предлагаю Вашему вниманию краткую статью-инструкцию по созданию, настройке и использованию личных рецептов (private recipes). Для этого нам понадобится: проект, репозиторий с бандлом, репозиторий с нашими рецептами.
Статья содержит много изображений, поэтому ссылки на репозитории размещаю здесь, а все остальное вынесу под кат.
Бандл: symfony-acme-bundle
Рецепты: symfony-recipes
Итак, поехали.
1) Создаем новый проект или используем существующий. Главное условие — это иметь установленный Symfony Flex. Я решил создать проект с нуля.
Для создания нового проекта используем команду
![](https://habrastorage.org/r/w780q1/webt/gg/6y/im/gg6yimna9my_lxazyrzr3ye0gfm.jpeg)
Проект успешно создан, а в установленных пакетах мы видим symfony/flex.
2) Создаем новый бандл (symfony-acme-bundle) или используем существующий. Я решил создать простой бандл с нуля и зарегистрировать его в packagist.org. Ссылку на репозиторий можно найти в начале статьи. Процессы создания и регистрации бандла я опустил, т.к. в них нет ничего сложного.
3) Подключение и настройка Symfony Flex Server. Для этого переходим на Symfony Recipes Server и кликаем на ссылку «register» в секции «Private Recipes BETA». Также можно зарегистрироваться через Symfony Flex Server.
Выбираем наш репозиторий с рецептами и нажимаем «Install».
![](https://habrastorage.org/r/w780q1/webt/2v/fr/cc/2vfrcca_l0e-qmybabva_84yaoo.jpeg)
После этого мы должны увидеть страницу с поздравлением.
![](https://habrastorage.org/r/w780q1/webt/zk/wm/l_/zkwml_uah0vqzvegs_sut2y_qda.jpeg)
4) Создаем рецепт.
Этот пункт я разбил на 2 части. Сначала мы создадим репозиторий, а затем добавим новый рецепт через pull request.
4.1) Создаем новый репозиторий (symfony-recipes) и добавляем файлы: LICENSE, config.json, README.md (опционально). Ссылку на репозиторий можно найти в начале статьи.
Нам очень важен config.json, а именно те данные, которые он содержит.
«01C1K60FQVPP7FN6C3YB6639RZ» — это ID нашего Symfony проекта. Найти его можно в файле composer.json проекта, созданного в п.1.
или выполнив в папке с проектом команду
4.2) Добавляем рецепт. Для этого создаем новую ветку (add-acme-recipe) и добавляем 3 файла: manifest.json, post-install.txt и config/packages/acme.yaml. Важный момент — название папки с рецептом должно совпадать с названием пакета (бандла) в packagist.org, а также должны совпадать версии. В нашем случае это «yurijbogdanov/acme-bundle» и версия «1.0».
Пример содержимого файлов:
yurijbogdanov/acme-bundle/1.0/manifest.json
yurijbogdanov/acme-bundle/1.0/post-install.txt
yurijbogdanov/acme-bundle/1.0/config/packages/acme.yaml
Далее добавляем нашу ветку с рецептом в удаленный репозиторий и делаем pull request.
![](https://habrastorage.org/r/w780q1/webt/zp/rc/_g/zprc_grlis78mdk5ezaxfmjgvpi.jpeg)
![](https://habrastorage.org/r/w780q1/webt/sg/vt/pr/sgvtprly7ekfa89iuiijep2edmq.jpeg)
Теперь несколько слов почему лучше добавлять рецепты через pull request, а не прямо в master (даже если вы работаете одни).
Каждый раз, когда вы делаете pull request ваш код будет проходить проверку ботом symfony-flex-server и даже малейшие отклонения от требований будут фиксироваться.
![](https://habrastorage.org/r/w780q1/webt/ku/ps/id/kupsidueotlz3ditouq8hh92ah0.jpeg)
Кликнув по ссылке «Details», можно просмотреть какие именно ошибки были найдены ботом.
![](https://habrastorage.org/r/w780q1/webt/kz/g6/l-/kzg6l-jxn78tnjuealsg9wmewgi.jpeg)
В случае успеха вы увидите approve от бота и сможете сделать merge в master.
![](https://habrastorage.org/r/w780q1/webt/95/ja/bq/95jabq_mvabvcgmqnpd-fe0hieo.jpeg)
Ветка успешно смерджена и теперь можно перейти к установке пакета (бандла).
![](https://habrastorage.org/r/w780q1/webt/k-/bp/kt/k-bpktzwuatb8nkficpzum9qe7i.jpeg)
5) Добавляем бандл в наш проект. Для этого переходим в папку с проектом и выполняем команду
![](https://habrastorage.org/r/w780q1/webt/yi/zq/_4/yizq_4nhgeqrargjau3ngw2ua8y.jpeg)
Бандл успешно установлен с помощью нашего рецепта.
Рецепт внес следующие изменения в проект:
1) добавил бандл в config/bundles.php
2) добавил переменные окружения в .env.dist
3) добавил файл конфигурации acme.yaml в config/packages/
Спасибо за внимание.
Предлагаю Вашему вниманию краткую статью-инструкцию по созданию, настройке и использованию личных рецептов (private recipes). Для этого нам понадобится: проект, репозиторий с бандлом, репозиторий с нашими рецептами.
Статья содержит много изображений, поэтому ссылки на репозитории размещаю здесь, а все остальное вынесу под кат.
Бандл: symfony-acme-bundle
Рецепты: symfony-recipes
Итак, поехали.
1) Создаем новый проект или используем существующий. Главное условие — это иметь установленный Symfony Flex. Я решил создать проект с нуля.
Для создания нового проекта используем команду
composer create-project symfony/skeleton symfony-acme-project
![](https://habrastorage.org/webt/gg/6y/im/gg6yimna9my_lxazyrzr3ye0gfm.jpeg)
Проект успешно создан, а в установленных пакетах мы видим symfony/flex.
2) Создаем новый бандл (symfony-acme-bundle) или используем существующий. Я решил создать простой бандл с нуля и зарегистрировать его в packagist.org. Ссылку на репозиторий можно найти в начале статьи. Процессы создания и регистрации бандла я опустил, т.к. в них нет ничего сложного.
3) Подключение и настройка Symfony Flex Server. Для этого переходим на Symfony Recipes Server и кликаем на ссылку «register» в секции «Private Recipes BETA». Также можно зарегистрироваться через Symfony Flex Server.
Выбираем наш репозиторий с рецептами и нажимаем «Install».
![](https://habrastorage.org/webt/2v/fr/cc/2vfrcca_l0e-qmybabva_84yaoo.jpeg)
После этого мы должны увидеть страницу с поздравлением.
![](https://habrastorage.org/webt/zk/wm/l_/zkwml_uah0vqzvegs_sut2y_qda.jpeg)
4) Создаем рецепт.
Этот пункт я разбил на 2 части. Сначала мы создадим репозиторий, а затем добавим новый рецепт через pull request.
4.1) Создаем новый репозиторий (symfony-recipes) и добавляем файлы: LICENSE, config.json, README.md (опционально). Ссылку на репозиторий можно найти в начале статьи.
Нам очень важен config.json, а именно те данные, которые он содержит.
{
"projects": {
"01C1K60FQVPP7FN6C3YB6639RZ": "Symfony Acme Project"
}
}
«01C1K60FQVPP7FN6C3YB6639RZ» — это ID нашего Symfony проекта. Найти его можно в файле composer.json проекта, созданного в п.1.
{
"extra": {
"symfony": {
"id": "01C1K60FQVPP7FN6C3YB6639RZ",
"allow-contrib": false
}
}
}
или выполнив в папке с проектом команду
composer config extra.symfony.id
4.2) Добавляем рецепт. Для этого создаем новую ветку (add-acme-recipe) и добавляем 3 файла: manifest.json, post-install.txt и config/packages/acme.yaml. Важный момент — название папки с рецептом должно совпадать с названием пакета (бандла) в packagist.org, а также должны совпадать версии. В нашем случае это «yurijbogdanov/acme-bundle» и версия «1.0».
Пример содержимого файлов:
yurijbogdanov/acme-bundle/1.0/manifest.json
{
"bundles": {
"Acme\\AcmeBundle": ["all"]
},
"copy-from-recipe": {
"config/": "%CONFIG_DIR%/"
},
"env": {
"ACME_FOO": "hello",
"ACME_BAR": "world"
}
}
yurijbogdanov/acme-bundle/1.0/post-install.txt
<bg=blue;fg=white> </>
<bg=blue;fg=white> Next: Configuration </>
<bg=blue;fg=white> </>
* Modify your ACME_FOO config in <fg=green>.env</>
* Modify your ACME_BAR config in <fg=green>.env</>
* Configure your parameters in <fg=green>config/packages/acme.yaml</>
yurijbogdanov/acme-bundle/1.0/config/packages/acme.yaml
acme:
foo: hello
bar: world
Далее добавляем нашу ветку с рецептом в удаленный репозиторий и делаем pull request.
![](https://habrastorage.org/webt/zp/rc/_g/zprc_grlis78mdk5ezaxfmjgvpi.jpeg)
![](https://habrastorage.org/webt/sg/vt/pr/sgvtprly7ekfa89iuiijep2edmq.jpeg)
Теперь несколько слов почему лучше добавлять рецепты через pull request, а не прямо в master (даже если вы работаете одни).
Каждый раз, когда вы делаете pull request ваш код будет проходить проверку ботом symfony-flex-server и даже малейшие отклонения от требований будут фиксироваться.
![](https://habrastorage.org/webt/ku/ps/id/kupsidueotlz3ditouq8hh92ah0.jpeg)
Кликнув по ссылке «Details», можно просмотреть какие именно ошибки были найдены ботом.
![](https://habrastorage.org/webt/kz/g6/l-/kzg6l-jxn78tnjuealsg9wmewgi.jpeg)
В случае успеха вы увидите approve от бота и сможете сделать merge в master.
![](https://habrastorage.org/webt/95/ja/bq/95jabq_mvabvcgmqnpd-fe0hieo.jpeg)
Ветка успешно смерджена и теперь можно перейти к установке пакета (бандла).
![](https://habrastorage.org/webt/k-/bp/kt/k-bpktzwuatb8nkficpzum9qe7i.jpeg)
5) Добавляем бандл в наш проект. Для этого переходим в папку с проектом и выполняем команду
composer require yurijbogdanov/acme-bundle
![](https://habrastorage.org/webt/yi/zq/_4/yizq_4nhgeqrargjau3ngw2ua8y.jpeg)
Бандл успешно установлен с помощью нашего рецепта.
Symfony operations: 1 recipe (7302152d871c6cc69ec5de45f91d1b38)
- Configuring yurijbogdanov/acme-bundle (>=1.0): From github.com/yurijbogdanov/symfony-recipes:master
Рецепт внес следующие изменения в проект:
1) добавил бандл в config/bundles.php
<?php
return [
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
Acme\AcmeBundle::class => ['all' => true],
];
2) добавил переменные окружения в .env.dist
###> yurijbogdanov/acme-bundle ###
ACME_FOO=hello
ACME_BAR=world
###< yurijbogdanov/acme-bundle ###
3) добавил файл конфигурации acme.yaml в config/packages/
Спасибо за внимание.