# azure-pipelines.yml # CI/CD: Deploy entire repo to Hugging Face Space (Docker + PDM) # Space will build from your Dockerfile and run `src/app.py`. trigger: branches: include: - development pool: vmImage: "ubuntu-latest" variables: - group: HF_TOKEN_NATSAR - name: PYTHON_VERSION value: "3.10" - name: HF_SPACE_ID_DEV value: "lucid-hf/lucid-natsar-dev" steps: - checkout: self lfs: true - script: | git lfs install --local git lfs pull displayName: "Fetch Git LFS assets" - task: UsePythonVersion@0 inputs: versionSpec: "$(PYTHON_VERSION)" - script: | python -m pip install --upgrade pip pip install huggingface_hub==0.25.* python - <<'PY' import os from huggingface_hub import HfApi, upload_folder token = os.environ["HF_TOKEN"] # provided via Pipeline variable (Secret) space_id = os.environ["HF_SPACE_ID"] # from variables above api = HfApi(token=token) # Ensure Space exists and uses Docker api.create_repo( repo_id=space_id, repo_type="space", exist_ok=True, space_sdk="docker" ) # Upload repo contents (respect ignore patterns to speed builds) upload_folder( folder_path=".", # whole repo: Dockerfile, pyproject.toml, src/, models/, etc. repo_id=space_id, repo_type="space", path_in_repo=".", # put at Space root token=token, commit_message="CI: deploy Docker/PDM Space", ignore_patterns=[ ".git/*", "__pycache__/*", "*.zip", "*.tar", "*.tar.gz", "*.ipynb", "*.ipynb_checkpoints/*", "venv/*", ".venv/*", "dist/*", "build/*", ".mypy_cache/*", ".pytest_cache/*", "annotated_video/*", "annotated_images/*", "training_model/*" ] ) displayName: "Deploy to Hugging Face Space (Docker/PDM)" env: HF_TOKEN: $(HF_TOKEN_DEV) # Add this as a secret variable in Pipeline settings HF_SPACE_ID: $(HF_SPACE_ID_DEV)