Compare commits
17 Commits
c95a2318cb
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
b025ed2256
|
|||
|
2fbe1a1e4d
|
|||
|
8f6a0bb85a
|
|||
|
f3b01adc5f
|
|||
|
35aa06b33b
|
|||
|
a5bb2cb35c
|
|||
|
409c32a207
|
|||
|
6878f1a291
|
|||
|
9f364bf677
|
|||
|
6600a22475
|
|||
|
23e20a0015
|
|||
|
10f3062779
|
|||
|
f978cad3f6
|
|||
|
b88f7deb43
|
|||
|
e6ead4e700
|
|||
|
ba7beabb36
|
|||
|
54672ecac3
|
@@ -18,13 +18,13 @@ jobs:
|
||||
cache: 'npm'
|
||||
|
||||
- name: Installer les dépendances
|
||||
run: npm ci
|
||||
run: npm install
|
||||
|
||||
- name: Lancer les tests
|
||||
run: npm test
|
||||
|
||||
build:
|
||||
name: Build extensions
|
||||
build-and-deploy:
|
||||
name: Build et déploiement beta
|
||||
needs: test
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
@@ -42,46 +42,16 @@ jobs:
|
||||
working-directory: extensions/directus-extension-new-user
|
||||
run: npm install && npm run build
|
||||
|
||||
- name: Uploader les artefacts de build
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: extensions-dist
|
||||
path: |
|
||||
extensions/directus-extension-disallow-votes/dist
|
||||
extensions/directus-extension-new-user/dist
|
||||
retention-days: 1
|
||||
|
||||
deploy:
|
||||
name: Déploiement beta
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Télécharger les artefacts de build
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: extensions-dist
|
||||
path: dist-artifacts
|
||||
|
||||
- name: Configurer la clé SSH
|
||||
- name: Committer et pousser les dist
|
||||
run: |
|
||||
mkdir -p ~/.ssh
|
||||
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/deploy_key
|
||||
chmod 600 ~/.ssh/deploy_key
|
||||
ssh-keyscan -p ${{ secrets.SSH_PORT }} ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
|
||||
git config user.name "Gitea Actions"
|
||||
git config user.email "actions@noreply.gitea"
|
||||
git add extensions/directus-extension-disallow-votes/dist \
|
||||
extensions/directus-extension-new-user/dist
|
||||
git diff --staged --quiet || git commit -m "chore: build extensions [skip ci]"
|
||||
git push origin dev
|
||||
|
||||
- name: Transférer les dist via rsync
|
||||
run: |
|
||||
rsync -az --delete \
|
||||
-e "ssh -i ~/.ssh/deploy_key -p ${{ secrets.SSH_PORT }}" \
|
||||
dist-artifacts/extensions/directus-extension-disallow-votes/dist/ \
|
||||
${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:${{ secrets.DEPLOY_PATH }}/extensions/directus-extension-disallow-votes/dist/
|
||||
|
||||
rsync -az --delete \
|
||||
-e "ssh -i ~/.ssh/deploy_key -p ${{ secrets.SSH_PORT }}" \
|
||||
dist-artifacts/extensions/directus-extension-new-user/dist/ \
|
||||
${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:${{ secrets.DEPLOY_PATH }}/extensions/directus-extension-new-user/dist/
|
||||
|
||||
- name: Redémarrer Directus et vérifier
|
||||
- name: Déployer sur le serveur
|
||||
uses: appleboy/ssh-action@v1.2.0
|
||||
with:
|
||||
host: ${{ secrets.SSH_HOST }}
|
||||
@@ -92,10 +62,23 @@ jobs:
|
||||
set -e
|
||||
cd ${{ secrets.DEPLOY_PATH }}
|
||||
|
||||
echo "==> Redémarrage Directus"
|
||||
docker compose restart directus
|
||||
echo "==> Correction des permissions"
|
||||
sudo chown -R "$(whoami):" .
|
||||
|
||||
echo "==> Vérification santé"
|
||||
sleep 5
|
||||
curl -sf http://localhost:8066/server/health | grep -q '"status":"ok"'
|
||||
echo "==> Synchronisation branche dev"
|
||||
git fetch origin dev
|
||||
git reset --hard origin/dev
|
||||
|
||||
echo "==> Réseau Docker"
|
||||
docker network inspect konstitisyon_network >/dev/null 2>&1 \
|
||||
|| docker network create konstitisyon_network
|
||||
|
||||
echo "==> Initialisation base de données"
|
||||
[ -f database/data.db ] || cp database/data.sample.db database/data.db
|
||||
|
||||
echo "==> Permissions volumes"
|
||||
sudo chown -R 1000:1000 database uploads
|
||||
|
||||
echo "==> Démarrage Directus"
|
||||
docker compose up -d --wait
|
||||
echo "Déploiement OK"
|
||||
|
||||
+7
-1
@@ -2,12 +2,18 @@ services:
|
||||
directus:
|
||||
image: directus/directus:11.17.2
|
||||
ports:
|
||||
- 8066:8066
|
||||
- 8066:8055
|
||||
volumes:
|
||||
- ./database:/directus/database
|
||||
- ./uploads:/directus/uploads
|
||||
- ./extensions:/directus/extensions
|
||||
env_file: ".env"
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "node -e \"require('http').get('http://localhost:8055/server/health',r=>process.exit(r.statusCode<400?0:1)).on('error',()=>process.exit(1))\""]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 12
|
||||
start_period: 30s
|
||||
networks:
|
||||
- konstitisyon_network
|
||||
networks:
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
dist
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
var e=({filter:e},{services:t})=>{const s=async(e,s,o)=>{if(!e)throw new Error("L’identifiant de la version est manquant.");const n=await s("directus_versions").select("date_created").where({id:e}).first();if(!n)throw new Error("Version non trouvée.");if(new Date(n.date_created)<new Date(Date.now()-2592e5))throw new Error("Le vote n’est plus possible après 3 jours de la création de la version.");try{const{VersionsService:n}=t,r=new n({schema:o,knex:s}),a=await r.compare(e);if(a&&!0===a.outdated)throw new Error("Le vote n’est plus possible sur une version obsolète.")}catch(e){if("Le vote n’est plus possible sur une version obsolète."===e.message)throw e;console.warn("Could not check version outdated status:",e.message)}};e("items.create",(async(e,{collection:t},{database:o,schema:n})=>("votes"===t&&await s(e.content_version_id,o,n),e))),e("items.update",(async(e,{collection:t},{database:o,schema:n})=>("votes"===t&&await s(e.content_version_id,o,n),e))),e("items.delete",(async(e,{collection:t},{database:o,schema:n})=>{if("votes"===t){const t=e[0];if(!t)throw new Error("L’identifiant du vote est manquant.");const r=await o("votes").select("content_version_id").where({id:t}).first();if(!r)throw new Error("Vote non trouvé.");await s(r.content_version_id,o,n)}return e}))};export{e as default};
|
||||
@@ -1,3 +1,2 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
dist
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
var e=({filter:e},{services:r,env:a})=>{e("users.create",(async(e,{schema:i},{database:s})=>{if(!r.MailService)return console.error("Le service MailService est manquant."),e;const t=a.EMAIL_NEW_USER,n=a.DIRECTUS_URL||"http://0.0.0.0:8055";if(!t)return console.error("La variable EMAIL_NEW_USER est manquante."),e;const l=await(async(e,r)=>void 0!==await r("directus_users").select("id").where({email:e}).first())(e.email,s);if(l)return console.error("L’adresse e-mail est déjà utilisée."),e;try{new r.MailService({schema:i}).send({to:t,subject:`Nouvel utilisateur : ${e.email}`,text:`Un nouvel utilisateur a été créé :\n Nom: ${e.first_name||"N/A"} Email: ${e.email||"N/A"}\n Pour valider => ${n}/admin/users`,html:`\n <p>Un nouvel utilisateur a été créé :</p>\n <ul>\n <li><strong>Nom:</strong> ${e.first_name||"N/A"} </li>\n <li><strong>Email:</strong> ${e.email||"N/A"}</li>\n </ul>\n <p>Pour valider, <a href="${n}/admin/users" target="_blank"><strong>cliquez ici</strong></a> ou sur ce lien => <a href="${n}/admin/users" target="_blank">${n}/admin/users</a></p>\n `}),console.log("Email envoyé avec succès à",t)}catch(e){console.error("Erreur lors de l’envoi de l’e-mail via MailService:",e)}return e}))};export{e as default};
|
||||
Reference in New Issue
Block a user