Managing Spaces with CircleCI Workflows
You can keep your app in sync with your GitHub repository with a CircleCI workflow.
CircleCI is a continuous integration and continuous delivery (CI/CD) platform that helps automate the software development process. A CircleCI workflow 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 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.
git remote add space https://huggingface.co./spaces/HF_USERNAME/SPACE_NAME
Then force push to sync everything for the first time:
git push --force space main
Next, set up a CircleCI workflow to push your main
git branch to Spaces.
In the example below:
- Replace
HF_USERNAME
with your username andSPACE_NAME
with your Space name. - Create a context in CircleCI 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.
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