# Deploy через Actions и Secrets Эта страница описывает деплой через workflow `.github/workflows/deploy-service.yml`. ## Триггеры (когда запускается) 1) Автоматически по push - ветка: `master` - только если изменились файлы: - `letsencrypt_regru_api.py`, `letsencrypt_regru*.sh`, `letsencrypt_regru.ps1` - `requirements.txt` - `systemd/**` - `.github/workflows/deploy-service.yml` 2) Вручную (workflow_dispatch) - из UI Actions - или через Makefile командой `make deploy-service` (Makefile делает API dispatch) ## Что делает workflow - деплоит проект на сервер `192.0.2.1` по SSH (ключ) - перед деплоем генерирует `config.json` из secrets - копирует архив на сервер, распаковывает в `DEPLOY_PATH` - перезапускает systemd сервис `DEPLOY_SERVICE` ## Обязательные secrets ### Доступ к репозиторию - `GIT_TOKEN` (или `GITEA_TOKEN`) ### SSH и деплой - `DEPLOY_HOST` — должен быть `192.0.2.1` - `DEPLOY_PORT` — обычно `22` - `DEPLOY_USER` - `DEPLOY_SSH_PRIVATE_KEY` - `DEPLOY_PATH` - `DEPLOY_SERVICE` ### Генерация config.json - `CFG_REGRU_USERNAME` - `CFG_REGRU_PASSWORD` - `CFG_EMAIL` - `CFG_DOMAINS` `CFG_DOMAINS` поддерживает два формата: 1) JSON массив: ```json ["example.com", "pages.gitea.example.com"] ``` 2) строка через запятую: ```text example.com,pages.gitea.example.com ``` Если `CFG_DOMAIN` не указан, в поле `domain` берётся первый домен из `CFG_DOMAINS`. ## Опциональные secrets - `DEPLOY_SSH_KNOWN_HOSTS` - `CFG_DOMAIN` - `CFG_WILDCARD` - `CFG_CERT_DIR` - `CFG_LOG_FILE` - `CFG_DNS_PROPAGATION_WAIT` - `CFG_DNS_CHECK_ATTEMPTS` - `CFG_DNS_CHECK_INTERVAL` - `CFG_RENEWAL_DAYS` - `CFG_NPM_ENABLED` - `CFG_NPM_HOST` - `CFG_NPM_EMAIL` - `CFG_NPM_PASSWORD` ## Соответствие полей config.json - `CFG_REGRU_USERNAME` → `regru_username` - `CFG_REGRU_PASSWORD` → `regru_password` - `CFG_DOMAIN` / первый из `CFG_DOMAINS` → `domain` - `CFG_DOMAINS` → `domains` - `CFG_WILDCARD` → `wildcard` - `CFG_EMAIL` → `email` - `CFG_CERT_DIR` → `cert_dir` - `CFG_LOG_FILE` → `log_file` - `CFG_DNS_PROPAGATION_WAIT` → `dns_propagation_wait` - `CFG_DNS_CHECK_ATTEMPTS` → `dns_check_attempts` - `CFG_DNS_CHECK_INTERVAL` → `dns_check_interval` - `CFG_RENEWAL_DAYS` → `renewal_days` - `CFG_NPM_ENABLED` → `npm_enabled` - `CFG_NPM_HOST` → `npm_host` - `CFG_NPM_EMAIL` → `npm_email` - `CFG_NPM_PASSWORD` → `npm_password` ## Как запустить деплой 1. Откройте Actions 2. Запустите workflow `Deploy scripts to remote server` 3. При необходимости задайте `ref` (ветка/тег/коммит) ### Запуск через Makefile Makefile умеет запускать workflow через API на `gitea.example.com`: - `make deploy-service` — деплой `master` - `make deploy-service REF=` — деплой указанной ветки/тега Нужен токен (любой из): `DFGIT_TOKEN` / `GIT_TOKEN` / `GITEA_TOKEN` / `GITEA_ACCESS_TOKEN`. Важно: токен для **запуска** workflow (Makefile) и секреты для **выполнения** workflow (Actions secrets) — это разные вещи. Workflow внутри всё равно требует `GIT_TOKEN` (или `GITEA_TOKEN`) secret, SSH ключ и остальные secrets из списка выше. После завершения проверьте статус сервиса на сервере: ```bash sudo systemctl status letsencrypt-regru.service ```