Skip to content

Commit

Permalink
Using CircleCI to keep your git repo in sync with Hugging Face spaces (
Browse files Browse the repository at this point in the history
…#1101)

* PR adds documentation describing how to use CircleCI to
keep your vcs git repo in sync with your Hugging Face space

* Remove extra commit from the doc

* Added information about CCI and CCI workflows

* Adding link to Advanced topics section

* Added link to toc

* Updated link to HF profile
  • Loading branch information
lavin-ds authored Nov 23, 2023
1 parent 09dd417 commit 68f3c6e
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 0 deletions.
2 changes: 2 additions & 0 deletions docs/hub/_toctree.yml
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,8 @@
title: More ways to create Spaces
- local: spaces-github-actions
title: Managing Spaces with Github Actions
- local: spaces-circleci
title: Managing Spaces with CircleCI Workflows
- local: spaces-sdks-python
title: Custom Python Spaces
- local: spaces-add-to-arxiv
Expand Down
1 change: 1 addition & 0 deletions docs/hub/spaces-advanced.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@
- [Using OpenCV in Spaces](./spaces-using-opencv)
- [More ways to create Spaces](./spaces-more-ways-to-create)
- [Managing Spaces with Github Actions ](./spaces-github-actions)
- [Managing Spaces with CircleCI Workflows ](./spaces-circleci)
- [How to Add a Space to ArXiv ](./spaces-add-to-arxiv)
58 changes: 58 additions & 0 deletions docs/hub/spaces-circleci.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Managing Spaces with CircleCI Workflows

You can keep your app in sync with your GitHub repository with a **CircleCI workflow**.

[CircleCI](https://circleci.com) is a continuous integration and continuous delivery (CI/CD) platform that helps automate the software development process. A [CircleCI workflow](https://circleci.com/docs/workflows/) is a set of automated tasks defined in a configuration file, orchestrated by CircleCI, to streamline the process of building, testing, and deploying software applications.

*Note: For files larger than 10MB, Spaces requires Git-LFS. If you don't want to use Git-LFS, you may need to review your files and check your history. Use a tool like [BFG Repo-Cleaner](https://rtyley.github.io/bfg-repo-cleaner/) to remove any large files from your history. BFG Repo-Cleaner will keep a local copy of your repository as a backup.*

First, set up your GitHub repository and Spaces app together. Add your Spaces app as an additional remote to your existing Git repository.

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

Then force push to sync everything for the first time:

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

Next, set up a [CircleCI workflow](https://circleci.com/docs/workflows/) to push your `main` git branch to Spaces.

In the example below:

* Replace `HF_USERNAME` with your username and `SPACE_NAME` with your Space name.
* [Create a context in CircleCI](https://circleci.com/docs/contexts/) and add an env variable into it called *HF_PERSONAL_TOKEN* (you can give it any name, use the key you create in place of HF_PERSONAL_TOKEN) and the value as your Hugging Face API token. You can find your Hugging Face API token under **API Tokens** on [your Hugging Face profile](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
```

0 comments on commit 68f3c6e

Please sign in to comment.