Spaces:
Runtime error
Runtime error
title: Gradio Space CI | |
emoji: 🤖 | |
colorFrom: gray | |
colorTo: gray | |
sdk: gradio | |
sdk_version: 4.7.1 | |
app_file: app.py | |
pinned: false | |
# Build a CI for your Spaces 🚀 | |
**Gradio Space CI** is a plugin (and package) to create ephemeral Spaces for each PR opened on your Space repo. | |
The goal is to foster community contributions by making the review process as lean as possible. | |
## Key features | |
1. **Listen to Pull Requests**. | |
2. **Launch ephemeral Spaces** on new PRs. | |
1. When a commit is pushed to a PR, the ephemeral Space gets synchronized. | |
2. When the PR is closed, the ephemeral Space is deleted. | |
3. Configure ephemeral Spaces automatically | |
1. All **variables** are copied from the main Space. | |
2. **Secrets** are copied from the main Space, based on CI configuration. | |
3. **Hardware** and **storage** are set, based on CI configuration. | |
4. Only **trusted authors** are able to access secrets | |
1. By default, repo owners are trusted authors | |
2. More authors can be added in CI configuration | |
3. untrusted authors can start ephemeral Space but without secrets or custom hardware | |
Want more? Please open an issue in the [Community Tab](https://huggingface.co/spaces/Wauplin/gradio-space-ci/discussions)! This is meant to be a community-driven implementation, enhanced by user feedback and contributions! | |
## Integration | |
Integrate *Gradio Space CI* in just a few steps: | |
### 1. Update your `requirements.txt` | |
If you don't have a `requirements.txt` file yet, create one in your Space repo. | |
Add the following line to it: | |
```bash | |
# requirements.txt | |
git+https://huggingface.co/spaces/Wauplin/gradio-space-ci | |
``` | |
### 2. Add a user token as `HF_TOKEN` secret | |
1. Go to your [user settings page](https://huggingface.co/settings/tokens). | |
2. Create a new token with **write** permissions. | |
3. Go to your Space settings page. | |
4. Add `HF_TOKEN` as a Space secret with your newly created token. | |
(optional) You can also define a `SPACE_CI_SECRET` secret value that will be used to authenticate webhook calls. If you | |
don't define one, a random secret value will be generated for you. | |
### 3. Configure CI in `app.py` | |
Import the `gradio_space_ci` package and update the last line of your `app.py` script, just before launching the Gradio app. | |
```py | |
# app.py | |
import gradio as gr | |
from gradio_space_ci import configure_space_ci | |
# ANY gradio app | |
with gr.Blocks() as demo: | |
... | |
# Replace `demo.launch()` by `configure_space_ci(demo).launch()`. | |
configure_space_ci( | |
demo, | |
trusted_authors=[], # space owners + manually trusted authors | |
private="auto", # ephemeral spaces will have same visibility as the main space. Otherwise, set to `True` or `False` explicitly. | |
variables="auto", # same variables as the main space. Otherwise, set to a `Dict[str, str]`. | |
secrets=["HF_TOKEN"], # which secret do I want to copy from the main space? Can be a `List[str]`. | |
hardware=None, # "cpu-basic" by default. Otherwise set to "auto" to have same hardware as the main space or any valid string value. | |
storage=None, # no storage by default. Otherwise set to "auto" to have same storage as the main space or any valid string value. | |
).launch() | |
``` | |
And you're done! Ephemeral Spaces will be launched for each and every PR on your repo. | |
## Useful links | |
- **Demo:** https://huggingface.co/spaces/Wauplin/gradio-space-ci | |
- **README:** https://huggingface.co/spaces/Wauplin/gradio-space-ci/blob/main/README.md | |
- **Questions and feedback:** https://huggingface.co/spaces/Wauplin/gradio-space-ci/discussions |