diff --git a/.gitignore b/.gitignore
index d9c6141fdf56e457272bfe1a3e2318a42fd12011..6682536dd4ed97db59d16b2104aae0a12096e8ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,6 @@ dsfr/utility/icons
 node_modules
 site
 .idea
+public/
+.DS_Store
+
diff --git a/.gitlab-ci-local/.gitignore b/.gitlab-ci-local/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..d6b7ef32c8478a48c3994dcadc86837f4371184d
--- /dev/null
+++ b/.gitlab-ci-local/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7413fe6be129faaadd17489df3044232849766a5..00c58a07b614829da9adfbb257db19c1cf2f5939 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -16,22 +16,21 @@ build_and_deploy_gitlab:
     - npm ci --cache .npm --prefer-offline
     - pipenv run npm run build:prod
     - pipenv run python -m build
-    - TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token pipenv run python -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/*
+    - TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token pipenv run python -m twine upload --skip-existing --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/*
   cache:
     paths:
       - .npm/
       - .pipenv/
-  rules:
-    - if: ($CI_COMMIT_BRANCH == "main")
 
 deploy_exemple_site:
   image: python:3.11.6-bookworm
   stage: package_test
   script:
-    - git clone --no-tags --single-branch --depth=1 ${CI_SERVER_URL}/pub/numeco/mkdocs-dsfr-exemple.git
+    - git clone --branch develop --single-branch --depth=1 ${CI_SERVER_URL}/pub/numeco/mkdocs-dsfr-exemple.git
     - cd mkdocs-dsfr-exemple
-    - pip install mkdocs-dsfr --index-url https://gitlab-forge.din.developpement-durable.gouv.fr/api/v4/projects/20363/packages/pypi/simple
-    - mkdocs build --strict --verbose -d ../public
+    - pip install pipenv
+    - pipenv install --index gitlab mkdocs-dsfr
+    - pipenv run mkdocs build --strict --verbose -d ../public
   artifacts:
     paths:
       - public
\ No newline at end of file
diff --git a/MANIFEST.in b/MANIFEST.in
index dc7f2a1b38068fdde489f1f68f25795b57b43d24..4ec26c58a42b9b0ed36f7bf1b5ffd06c03a6117f 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,4 +1,4 @@
-recursive-include dsfr *.ico *.js *.css *.png *.html *.eot *.svg *.ttf *.woff *.webmanifest *.map *.woff2
+recursive-include dsfr *.ico *.js *.css *.png *.html *.eot *.svg *.ttf *.woff *.webmanifest *.map *.woff2 *.yml
 recursive-exclude * __pycache__
 recursive-exclude * *.py[co]
 prune mkdocs 
\ No newline at end of file
diff --git a/dsfr/MANIFEST.in b/dsfr/MANIFEST.in
index dc7f2a1b38068fdde489f1f68f25795b57b43d24..4ec26c58a42b9b0ed36f7bf1b5ffd06c03a6117f 100644
--- a/dsfr/MANIFEST.in
+++ b/dsfr/MANIFEST.in
@@ -1,4 +1,4 @@
-recursive-include dsfr *.ico *.js *.css *.png *.html *.eot *.svg *.ttf *.woff *.webmanifest *.map *.woff2
+recursive-include dsfr *.ico *.js *.css *.png *.html *.eot *.svg *.ttf *.woff *.webmanifest *.map *.woff2 *.yml
 recursive-exclude * __pycache__
 recursive-exclude * *.py[co]
 prune mkdocs 
\ No newline at end of file