marintosti12
fix(git) : git credentials actions
1e3df73
raw
history blame
2.5 kB
name: Deploy to Hugging Face
on:
workflow_run:
workflows: ["CI"] # doit correspondre à name: CI dans ton CI
branches: [ main ] # base branch concernée
types: [completed]
workflow_dispatch: {}
concurrency:
group: deploy-${{ github.event.workflow_run.head_branch || 'main' }}
cancel-in-progress: true
jobs:
deploy:
runs-on: ubuntu-latest
# ⬇️ NE se lance que si la CI a réussi ET si c'était une CI déclenchée par un PUSH (donc après merge)
if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'push' }}
# on expose les secrets en env (utilisables dans les steps)
env:
HF_TOKEN: ${{ secrets.HF_TOKEN }}
HF_SPACE_URL: ${{ secrets.HF_SPACE_URL }}
HF_GIT_EMAIL: ${{ secrets.HF_GIT_EMAIL || 'actions@github.com' }}
HF_GIT_NAME: ${{ secrets.HF_GIT_NAME || 'github-actions' }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
lfs: true
# garde-fou: si secrets manquants, on sort proprement
- name: Guard secrets
if: ${{ !env.HF_TOKEN || !env.HF_SPACE_URL }}
run: |
echo "HF secrets manquants, on skip le déploiement."
exit 0
- name: Configure Git identity (local)
shell: bash
run: |
git config user.email "${HF_GIT_EMAIL:-actions@github.com}"
git config user.name "${HF_GIT_NAME:-github-actions}"
- name: Prepare snapshot (no history, no binaries)
shell: bash
run: |
# 1) Branche orpheline
git switch --orphan hfdeploy
git reset
# 2) Ignore les artefacts ML
printf "\n# ML artifacts\n*.joblib\n*.pkl\n*.pt\n*.onnx\n" >> .gitignore
# 3) Retire de l'index si jamais ça match (silencieux sinon)
git rm -r --cached --ignore-unmatch -- notebook/*.joblib
# 4) Commit de la snapshot
git add -A
git commit -m "Space deploy snapshot ${GITHUB_SHA}"
- name: Configure Git
run: |
git config --global user.email "${HF_GIT_EMAIL}"
git config --global user.name "${HF_GIT_NAME}"
- name: Push to Space
run: |
SPACE_URL_AUTH=$(echo "$HF_SPACE_URL" | sed "s#https://#https://user:${HF_TOKEN}@#")
git remote add space "$SPACE_URL_AUTH" || git remote set-url space "$SPACE_URL_AUTH"
git push space HEAD:main --force