# Управление Spaces с помощью рабочих процессов CircleCI

Вы можете синхронизировать ваше приложение с репозиторием GitHub с помощью **CircleCI workflow**.

[CircleCI](https://circleci.com) — это платформа непрерывной интеграции и непрерывной поставки (CI/CD), которая помогает автоматизировать процесс разработки программного обеспечения. [Workflow в CircleCI](https://circleci.com/docs/workflows/) — это набор автоматизированных задач, определённых в файле конфигурации и оркестрируемых CircleCI, для оптимизации процессов сборки, тестирования и развёртывания программных приложений.

*Примечание: файлы размером более 10 МБ необходимо отслеживать с помощью [git-xet](./xet/using-xet-storage#git-xet) (рекомендуется) или Git LFS. Если вы не хотите использовать ни один из этих инструментов, вам, возможно, потребуется проверить свои файлы и историю. Используйте инструмент, например [BFG Repo-Cleaner](https://rtyley.github.io/bfg-repo-cleaner/), чтобы удалить большие файлы из истории. BFG Repo-Cleaner сохранит локальную копию вашего репозитория в качестве резервной.*

Сначала настройте ваш репозиторий GitHub и приложение Spaces вместе. Добавьте ваше приложение Spaces как дополнительный удалённый репозиторий (remote) в существующий Git-репозиторий.

```bash
git remote add space https://huggingface.co/spaces/HF_USERNAME/SPACE_NAME
```

Затем выполните принудительную отправку, чтобы синхронизировать всё в первый раз:

```bash
git push --force space main
```

Далее настройте [CircleCI workflow](https://circleci.com/docs/workflows/) для отправки вашей ветки git `main` в Spaces.

В примере ниже:

* Замените `HF_USERNAME` на ваше имя пользователя, а `SPACE_NAME` — на имя вашего Space.
* [Создайте контекст в CircleCI](https://circleci.com/docs/contexts/) и добавьте в него переменную окружения с именем *HF_PERSONAL_TOKEN* (имя можно выбрать любое, вместо HF_PERSONAL_TOKEN используйте ключ, который вы создали), а в качестве значения укажите ваш токен API Hugging Face. Токен API Hugging Face можно найти в разделе **API Tokens** на [вашем профиле Hugging Face](https://huggingface.co/settings/tokens).

```yaml
version: 2.1

workflows:
  main:
    jobs:
      - sync-to-huggingface:
          context:
            - HuggingFace
          filters:
            branches:
              only:
                - main

jobs:
  sync-to-huggingface:
    docker:
      - image: alpine
    resource_class: small
    steps:
      - run: 
          name: install git
          command: apk update && apk add openssh-client git
      - checkout
      - run:
          name: push to Huggingface hub
          command: |
                  git config user.email "<your-email@here>" 
                  git config user.name "<your-identifier>" 
                  git push -f https://HF_USERNAME:${HF_PERSONAL_TOKEN}@huggingface.co/spaces/HF_USERNAME/SPACE_NAME main
```

