125 lines
3.8 KiB
Markdown
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
|
|
```
|