From 68f3c6e9358b9e3e00c561c1fd0db2197a2c0dca Mon Sep 17 00:00:00 2001 From: Lavin S Date: Thu, 23 Nov 2023 12:37:18 +0100 Subject: [PATCH] Using CircleCI to keep your git repo in sync with Hugging Face spaces (#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 --- docs/hub/_toctree.yml | 2 ++ docs/hub/spaces-advanced.md | 1 + docs/hub/spaces-circleci.md | 58 +++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 docs/hub/spaces-circleci.md diff --git a/docs/hub/_toctree.yml b/docs/hub/_toctree.yml index c9ba0ef02..6a80c5448 100644 --- a/docs/hub/_toctree.yml +++ b/docs/hub/_toctree.yml @@ -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 diff --git a/docs/hub/spaces-advanced.md b/docs/hub/spaces-advanced.md index a15847df7..f988810f2 100644 --- a/docs/hub/spaces-advanced.md +++ b/docs/hub/spaces-advanced.md @@ -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) diff --git a/docs/hub/spaces-circleci.md b/docs/hub/spaces-circleci.md new file mode 100644 index 000000000..07a4c61ce --- /dev/null +++ b/docs/hub/spaces-circleci.md @@ -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 "" + git config user.name "" + git push -f https://HF_USERNAME:${HF_PERSONAL_TOKEN}@huggingface.co/spaces/HF_USERNAME/SPACE_NAME main +``` \ No newline at end of file