Як конфігурувати та використовувати приватні сховища рецептів Flex
Дата оновлення перекладу 2024-06-06
Як конфігурувати та використовувати приватні сховища рецептів Flex
Починаючи з релізу версії 1.16 symfony/flex
, ви можете створювати власні приватні
сховища рецептів Symfony Flex, і безпроблено інтегрувати їх в установку паккетів composer
та процес обслуговування.
Це особливо корисно, якщо у вас є приватні пакети, які повинні виконувати власні задачі установки. Щоб зробити це, вам потрібно виконати декілька кроків:
- Створити приватне сховище GitHub;
- Створити свої приватні рецепти;
- Створити індекс рецептів;
- Зберегти ваші рецепти у приватному сховищі;
- Гарантувати
composer
доступ до приватного сховища; - Сконфігурувати файл вашого проекту
composer.json
; і - Встановити рецепти у ваш проект.
Створіть приватне сховище
GitHub
Увійдіть у свій акаунт GitHub.com, натисніть на іконку вашого акаунту у верхньому правому кутку та оберіть Ваші сховища. Потім натисніть кнопку Нове, заповніть імʼя сховища, оберіть селективну кнопку Приватне і натисніть на кнопку Створрити сховище.
Gitlab
Увійдіть у свій акаунт Gitlab.com, натисніть кнопку Новий проект, виберіть Створити порожній проект, заповніть Назву проекту, встановіть перемикач Приватний і натисніть кнопку Створити проект.
Створіть ваші приватні рецепти
Рецепт symfony/flex
- це JSON-файл, який має наступну структуру:
1 2 3 4 5 6 7 8 9
{
"manifests": {
"acme/package-name": {
"manifest": {
},
"ref": "7405f3af1312d1f9121afed4dddef636c6c7ff00"
}
}
}
Якщо ваш пакет є приватним пакетом Symfony, у вас у рецепті буде наступне:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
{
"manifests": {
"acme/private-bundle": {
"manifest": {
"bundles": {
"Acme\\PrivateBundle\\AcmePrivateBundle": [
"all"
]
}
},
"ref": "7405f3af1312d1f9121afed4dddef636c6c7ff00"
}
}
}
Замініть acme
і private-bundle
на ваші власні деталі пакету. Запис "ref"
- це довільний ррядок з 40 символів, використовуваний composer
, щоб визначити,
чи було змінено ваш рецепт. Кожний раз, коли ви будете вносити зміни у ваш рецепт,
вам також потрібно буде генерувати нове значення "ref"
.
Tip
Використайте наступний PHP-скрипт, щоб згенерувати довільне значення
"ref"
:
1
echo bin2hex(random_bytes(20));
Запис "all"
вказує symfony/flex
створити запис у вашому файлі проекту
bundles.php
для всіх середовищ. Щоб завантажити ваш пакет лише для середовища
dev
, замініть "all"
на "dev"
.
Імʼя вашого JSON-файлу рецепту повинно відповідати наступним угодам, де
1.0
- це номер версії вашого пакету (замініть acme
та private-bundle
на ваші власні приватні деталі пакету):
acme.private-bundle.1.0.json
Ви скоріш за все захочете, щоб symfony/flex
створив файли конфігурації для вашого
пакету у каталозі проекту /config/packages
. Щоб зробити це, змініть JSON-файл рецепту
наступним чином:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
{
"manifests": {
"acme/private-bundle": {
"manifest": {
"bundles": {
"Acme\\PrivateBundle\\AcmePrivateBundle": [
"all"
]
},
"copy-from-recipe": {
"config/": "%CONFIG_DIR%"
}
},
"files": {
"config/packages/acme_private.yaml": {
"contents": [
"acme_private:",
" encode: true",
""
],
"executable": false
}
},
"ref": "7405f3af1312d1f9121afed4dddef636c6c7ff00"
}
}
}
Щоб побачити більше прикладів того, що ви можете додати у файл рецепту, перегляньте файли рецептів Symfony.
Створіть індекс рецептів
Наступний крок - створити файл index.json
, який міститиме записи для всіх
ваших приватних рецептів та іншу загальну інформацію конфігурації.
GitHub
Файл index.json
має наступний формат:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
{
"recipes": {
"acme/private-bundle": [
"1.0"
]
},
"branch": "main",
"is_contrib": true,
"_links": {
"repository": "github.com/your-github-account-name/your-recipes-repository",
"origin_template": "{package}:{version}@github.com/your-github-account-name/your-recipes-repository:main",
"recipe_template": "https://api.github.com/repos/your-github-account-name/your-recipes-repository/contents/{package_dotted}.{version}.json"
}
}
Створіть запис у "recipes"
для кожного з рецептів вашого пакету. Замініть
your-github-account-name
і your-recipes-repository
на власні деталі.
Gitlab
Файл index.json
має наступний формат:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
{
"recipes": {
"acme/private-bundle": [
"1.0"
]
},
"branch": "main",
"is_contrib": true,
"_links": {
"repository": "gitlab.com/your-gitlab-account-name/your-recipes-repository",
"origin_template": "{package}:{version}@gitlab.com/your-gitlab-account-name/your-recipes-repository:main",
"recipe_template": "https://gitlab.com/api/v4/projects/your-gitlab-project-id/repository/files/{package_dotted}.{version}.json/raw?ref=main"
}
}
Створіть запис у "recipes"
для кожного з рецептів вашого пакету. Замініть
your-gitlab-account-name
, your-gitlab-repository
і your-gitlab-project-id
на власні деталі.
Збережіть ваші рецепти у приватному сховищі
Завантажте файл(и) рецепту(ів) .json
і файл index.json
у кореневий
каталог вашого приватного сховища GitHub.
Гарантуйте composer
доступ до приватного сховища
GitHub
У вашому акаунті GitHub, натисніть на іконку вашого акаунту у правому верхньому кутку,
оберіть Settings
і Developer Settings
. Потім, оберіть Personal Access Tokens
.
Згенеруйте новий токен доступу з привілеями Full control of private repositories
.
Скопіюйте значення токена, перемкніться на термінал вашого локального компʼютера і
виконайте наступну команду:
1
$ composer config --global --auth github-oauth.github.com [token]
Замініть [token]
на значення вашого особистого токена доступу GitHub.
Gitlab
У вашому акаунті Gitlab, натисніть на іконку вашого акаунту у правому верхньому кутку,
оберіть Preferences
і Access Tokens
.
1
$ composer config --global --auth gitlab-token.gitlab.com [token]
Замініть [token]
на значення вашого особистого токена доступу.
Сконфігуруйте файл composer.json
вашого проекту
GitHub
Додайте наступне до вашого файлу проекту composer.json
:
1 2 3 4 5 6 7 8 9 10
{
"extra": {
"symfony": {
"endpoint": [
"https://api.github.com/repos/your-github-account-name/your-recipes-repository/contents/index.json",
"flex://defaults"
]
}
}
}
Замініть your-github-account-name
і your-recipes-repository
на власні деталі.
Tip
Ключ extra.symfony
скоріш за все існсуватиме у вашому composer.json
. У
такому випадку, додайте ключ "endpoint"
до існуючого запису extra.symfony
.
Tip
URL endpoint
повинен вказувати на https://api.github.com/repos
, а
не на https://www.github.com
.
Gitlab
Додайте наступне до файлу вашого проекта composer.json
:
1 2 3 4 5 6 7 8 9 10
{
"extra": {
"symfony": {
"endpoint": [
"https://gitlab.com/api/v4/projects/your-gitlab-project-id/repository/files/index.json/raw?ref=main",
"flex://defaults"
]
}
}
}
Замініть your-gitlab-project-id
на ваші власні деталі.
Tip
Ключ extra.symfony
, швидше за все, вже існує у вашому
composer.json
. У цьому випадку додайте ключ «endpoint»
до існуючого запису
extra.symfony
.
Встановіть рецепти у ваш проект
Якщо ваші приватні пакети ще не були встановлені у вашому проекті, виконайте наступну команду:
1
$ composer update
Якщо приватні пакети вже були встановлені, і ви просто хочете встановити нові приватні рецепти, виконайте наступну команду:
1
$ composer recipes