Files
Dmitriy Fofanov 491db2d5bf
Синхронизация Wiki / Синхронизация Wiki (push) Successful in 2s
Исправлены опечатки и улучшена читаемость документации
2026-02-25 07:54:18 +03:00

125 lines
3.8 KiB
Markdown

# 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=<branch_or_tag>` — деплой указанной ветки/тега
Нужен токен (любой из): `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
```