# actions_github

Репозиторий с активити, вебхуками и лёгкими Vue-приложениями для
Bitrix24. Push в `main` автоматически деплоит файлы на сервер.

Сервер: `spa-bitrix.ru`, docroot деплоя: `/var/www/spa-bitrix.ru/github_actions/`

## Как это работает

Структура папок в репозитории зеркалится 1:1 на сервер. Путь файла в
репозитории = путь файла после `github_actions/` в URL.

Пример:
```
projects/rentasnab/webhooks/editTaskInDeal.php
  ->
https://spa-bitrix.ru/github_actions/projects/rentasnab/webhooks/editTaskInDeal.php
```

Деплой запускается workflow'ом `.github/workflows/deploy.yml` при
push в `main`. Файлы копируются на сервер через rsync **без
удаления** — если файл убрать из репозитория, на сервере он
останется (удалять вручную по SSH).

## Как добавить новый хендлер

1. Создайте файл в подходящей папке (например `projects/<проект>/webhooks/`
   или `projects/<проект>/activities/<название>/`).
2. Закоммитьте и запушьте в `main`.
3. Готовый URL смотрите в GitHub → **Actions** → последний запуск →
   job `deploy` → блок **Summary** внизу страницы.

## Как добавить хендлер с секретом (токен вебхука и т.п.)

Секреты нельзя хранить в коде как есть — они попадут в открытом виде
в историю git. Используется подстановка на этапе деплоя:

1. В коде вместо реального значения — плейсхолдер `__ИМЯ_ПЛЕЙСХОЛДЕРА__`:
   ```php
   $queryUrl = 'https://rentasnab.bitrix24.ru/rest/256/68q888xsoht5ypu5/' . $method;
   ```
2. Добавьте секрет в Settings → Secrets and variables → Actions,
   например `RENTASNAB_WEBHOOK_URL` с реальным значением.
3. В `.github/workflows/deploy.yml`, в шаге
   *"Substitute secrets in placeholders"*, добавьте строку:
   ```yaml
   -e "s|https://rentasnab.bitrix24.ru/rest/256/68q888xsoht5ypu5/|${{ secrets.RENTASNAB_WEBHOOK_URL }}|g"
   ```

Одна строка — на каждый уникальный секрет (не на каждый файл): если
несколько хендлеров используют один и тот же токен, подстановка
пройдёт по всем сразу. Для нового проекта заводите новый плейсхолдер
и новый секрет, не переиспользуйте существующие.

## Права на запись (логи и т.п.)

Деплой автоматически выставляет папкам права `777`, файлам — `664`
(флаг `--chmod` в rsync) — так же, как у остальных проектов на этом
сервере. Это нужно, чтобы PHP (работающий от другого пользователя,
чем деплой) мог создавать файлы внутри задеплоенных папок — например
лог-файлы вида `editTaskHook.log`. Ничего дополнительно настраивать
не нужно — при каждом push права переустанавливаются заново, в том
числе для уже существующих папок.

## Доступ

Деплоит любой участник организации с правом write на репозиторий —
серверные SSH-секреты (`DEPLOY_SSH_KEY`, `DEPLOY_HOST`, `DEPLOY_USER`,
`DEPLOY_PORT`) общие для всех.
