Spaces:
Sleeping
Sleeping
| name: CD | |
| on: | |
| push: | |
| branches: ["main"] | |
| jobs: | |
| test: | |
| name: tests_CD | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.13" | |
| - name: Install Poetry | |
| uses: snok/install-poetry@v1 | |
| with: | |
| version: "2.0.0" | |
| virtualenvs-create: true | |
| virtualenvs-in-project: true | |
| - name: Install dependencies (with dev) | |
| run: poetry install --no-interaction --with dev | |
| - name: Run tests (SQLite file) | |
| env: | |
| API_KEY: "ci-test-key" | |
| DATABASE_URL: "sqlite+pysqlite:////tmp/test.db" | |
| run: poetry run pytest -q | |
| build-and-push: | |
| name: build_and_push_GHCR | |
| runs-on: ubuntu-latest | |
| needs: test | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Compute image name (lowercase) | |
| id: vars | |
| run: echo "image_name=ghcr.io/${GITHUB_REPOSITORY,,}" >> "$GITHUB_OUTPUT" | |
| - name: Log in to GHCR | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build and push image | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: . | |
| push: true | |
| tags: | | |
| ${{ steps.vars.outputs.image_name }}:latest | |
| ${{ steps.vars.outputs.image_name }}:${{ github.sha }} | |
| deploy-huggingface: | |
| name: deploy_to_huggingface | |
| runs-on: ubuntu-latest | |
| needs: build-and-push | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Push to Hugging Face Space (force) | |
| env: | |
| HF_TOKEN: "${{ secrets.HF_TOKEN }}" | |
| run: | | |
| set -euo pipefail | |
| git config --global user.email "ci@github.com" | |
| git config --global user.name "github-actions" | |
| # évite l'erreur si le remote existe déjà | |
| git remote remove hf 2>/dev/null || true | |
| git remote add hf https://huggingface.co/spaces/SteGONZALEZ/technova-api | |
| # push authentifié vers HF (avec token) + force comme tu fais d'habitude | |
| git push --force https://SteGONZALEZ:${HF_TOKEN}@huggingface.co/spaces/SteGONZALEZ/technova-api main | |