# Gerenciando Spaces com Workflows do CircleCI

Você pode manter seu aplicativo sincronizado com seu repositório no GitHub usando um **workflow do CircleCI**.

[CircleCI](https://circleci.com) é uma plataforma de integração e entrega contínuas (CI/CD) que ajuda a automatizar o processo de desenvolvimento de software. Um [CircleCI workflow](https://circleci.com/docs/workflows/) é um conjunto de tarefas automatizadas definidas em um arquivo de configuração, orquestradas pelo CircleCI, para simplificar o processo de compilação, teste e implantação de aplicações de software.

*Nota: Arquivos maiores que 10MB devem ser rastreados com [git-xet](./xet/using-xet-storage#git-xet) (recomendado) ou Git LFS. Se você não quiser usar nenhum dos dois, pode ser necessário revisar seus arquivos e verificar seu histórico. Use uma ferramenta como [BFG Repo-Cleaner](https://rtyley.github.io/bfg-repo-cleaner/) para remover quaisquer arquivos grandes do seu histórico. O BFG Repo-Cleaner manterá uma cópia local do seu repositório como backup.*

Primeiro, configure seu repositório do GitHub e seu aplicativo Spaces juntos. Adicione seu aplicativo Spaces como um remote adicional ao seu repositório Git existente.

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

Em seguida, force push para sincronizar tudo pela primeira vez:

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

Em seguida, configure um [workflow do CircleCI](https://circleci.com/docs/workflows/) para enviar sua branch git `main` para o Spaces.

No exemplo abaixo:

* Substitua `HF_USERNAME` pelo seu nome de usuário e `SPACE_NAME` pelo nome do seu Space.
* [Crie um contexto no CircleCI](https://circleci.com/docs/contexts/) e adicione uma variável de ambiente chamada *HF_PERSONAL_TOKEN* (você pode usar qualquer nome, utilize a chave que você criar no lugar de HF_PERSONAL_TOKEN) com o valor do seu token de API do Hugging Face. Você pode encontrar seu token de API do Hugging Face em **API Tokens** no [seu perfil do 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
```

