# Скрипти, скріншоти та нюанси для безпечної авторизації приватних пакетів Composer в контейнерах середовища Codex
# Чому цей посібник?
Приватні пакети (як Laravel Nova) потребують облікові дані під час установки. У Codex Web секрети доступні лише на етапі Налаштування. Якщо ви спробуєте встановити Nova пізніше, авторизація буде недоступна, і Composer видасть помилку 401. Цей посібник пропонує перевірену структуру, яку можна скопіювати для вашого проекту на Laravel.
✅ Підходить для будь-якого приватного джерела Composer (наприклад, самостійно розгорнутого Satis/Private Packagist) — просто змініть домен і облікові дані в конфігурації Composer.
Ось практична різниця в Codex Web:
- Скрипт налаштування *→ виконується, коли Codex створює новий контейнер середовища (а також під час розігріву кешу). Використовуйте його для установки інструментів, ОС-пакетів, мовних середовищ і залежностей проекту; зробіть однократне початкове налаштування проекту. Секрети доступні лише тут.
- Скрипт обслуговування → виконується, коли Codex відновлює контейнер середовища з кешу (наприклад, на наступних запитах протягом ~12 годин), щоб оновити робочий простір для поточної версії/гілки: завантажує останні залежності, перебудовує артефакти, виконує легкі міграції тощо. Це необов'язково, але заощаджує час від повторної установки.
Коли це виконується?
- Нова задача або розігрів кешу: виконується налаштування, а отриманий стан контейнера кешується на ~12 годин.
- Наступна задача із використанням кешу: виконується обслуговування для узгодження контейнера з поточним кодом. Кеш скидається, якщо ви змінюєте скрипти налаштування/обслуговування, змінні середовища або секрети.
Швидкі правила на пам'ять
- Важкі установки та однократні налаштування помістіть у налаштування; поступові оновлення — в обслуговування.
- Будь-яка робота, що потребує системи секретів, має виконуватись у налаштуванні; вони недоступні пізніше.
# Частина 1 — Встановлення Laravel Nova (або будь-якого приватного пакета Composer)
# 1) Додайте секрети в Codex Web
Створіть два секрети у вашому середовищі:
- NOVA_USERNAME
- NOVA_LICENSE_KEY
Не забувайте не комітити ці значення у вашому репозиторії. Codex розшифрує та надасть доступ до них лише під час виконання налаштування.
Додайте це до свого скрипту налаштування:
# [Інші ваші скрипти налаштування]
# Авторизація до Nova за допомогою секретів, доступних у скриптах налаштування
composer config "http-basic.nova.laravel.com" "$NOVA_USERNAME" "$NOVA_LICENSE_KEY"
# Встановлення PHP залежностей (без-dev — типово для CI/агента; корегуйте за потребою)
composer install --no-interaction --optimize-autoloader --no-dev
# 3) Залишайте скрипт обслуговування легким
Обслуговування не має доступу до секретних значень; його використання лише для швидкого оновлення:
pnpm run build
cp .env.example .env
sed -i 's/^DB_CONNECTION=.*/DB_CONNECTION=sqlite/' .env
php artisan key:generate
php artisan migrate --force
php artisan cache:clear
php artisan optimize
# Частина 2 — Результат: ваш контейнер середовища Codex Web (Laravel)
Нижче наведено фінальну структуру, до якої ми прагнемо — уся авторизація Nova і установка Composer відбуваються в налаштуванні; обслуговування — це швидке оновлення Laravel.
- Ніколи не комітіть авторизацію: зберігайте облікові дані Nova (або будь-якої приватної реєстрації) тільки у Секретах.
- Використовуйте правила захисту гілок: Блокуйте вашу гілку master/main і забезпечте запобіжники, щоб уникнути небажаних змін.
- Створіть файл AGENTS.md: Встановіть деякі правила, наприклад: "Створити юніт-тести для кожного компонента, який ви представляєте", або "Запустити весь набір тестів після завершення".
- Використовуйте GitHub Action workflows: запускайте лінтери та юніт/інтеграційні/E2E тести під час кожного пушу, щоб перевірити надійність коду, згенерованого AI.
- Гігієна Composer: --prefer-dist зменшує завантаження з джерела; --no-interaction уникне запитів; розгляньте COMPOSER_MEMORY_LIMIT=-1, якщо виникають проблеми OOM у великих репозиторіях.
- Фіксуйте версії: заморожуйте образи/інструменти, коли важлива відтворюваність.
- Не покладайтеся на .rc файли для збереження стану: контейнер середовища є тимчасовим; повторно виконуйте будь-які необхідні експорти в налаштуванні або використовуйте абсолютні шляхи.
- Зробіть обслуговування ідемпотентним: воно повинно безпечно виконуватись кілька разів без несподіваних змін стану.
# Частина 4 — Цю частину залишаю вам
Досі я лише використовував Codex web для невеликих косметичних змін. Він чудово інтегрується з GitHub, а якщо у вас є підписка на GitHub Copilot, ви можете навіть отримувати автоматичний перегляд коду, який генерує Codex. Досить цікава комбінація.
Бажаю успіху!