diff --git a/Jenkinsfile b/Jenkinsfile index 6fa1fee2..87218ac5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,17 +1,11 @@ pipeline { agent any - // πŸ” VΓ©rifie toutes les 2 minutes si du nouveau code a Γ©tΓ© poussΓ© - triggers { - pollSCM('* * * *') - } - - // βš™οΈ ParamΓ¨tre manuel (fallback) parameters { choice( name: 'ENV', choices: ['dev', 'preprod', 'prod'], - description: 'Choisir l’environnement de dΓ©ploiement (automatique si branche correspondante)' + description: 'Choisir l’environnement de dΓ©ploiement' ) } @@ -22,9 +16,6 @@ pipeline { stages { - /* ─────────────────────────────── - * 1️⃣ Init β€” DΓ©tection automatique de l’environnement - * ─────────────────────────────── */ stage('Init') { steps { script { @@ -46,25 +37,18 @@ pipeline { πŸ“‚ Chemin de dΓ©ploiement = ${env.DEPLOY_PATH} """ - // VΓ©rifie le rΓ©pertoire cible sh "ls -l ${env.DEPLOY_PATH} || echo '⚠️ Dossier non accessible depuis Jenkins'" } } } - /* ─────────────────────────────── - * 2️⃣ Checkout du code - * ─────────────────────────────── */ stage('Checkout') { steps { - echo "πŸ“¦ RΓ©cupΓ©ration du code source depuis Gitea..." + echo "πŸ“¦ RΓ©cupΓ©ration du code source..." checkout scm } } - /* ─────────────────────────────── - * 3️⃣ Tests & QualitΓ© (dans un conteneur Node.js) - * ─────────────────────────────── */ stage('Tests & QualitΓ©') { agent { docker { @@ -73,18 +57,15 @@ pipeline { } } steps { - echo "πŸ§ͺ Lancement des tests et analyse de code..." + echo "πŸ§ͺ Lancement des tests et analyse..." sh ''' npm ci npm run lint || echo "⚠️ Erreurs de lint dΓ©tectΓ©es" - npm test || echo "⚠️ Tests Γ©chouΓ©s β€” vΓ©rifier les logs" + npm test || echo "⚠️ Tests Γ©chouΓ©s β€” ignorΓ©s pour le dΓ©ploiement" ''' } } - /* ─────────────────────────────── - * 4️⃣ Build de l’image Docker - * ─────────────────────────────── */ stage('Build Docker image') { steps { echo "🐳 Construction de l’image Docker backend..." @@ -95,12 +76,9 @@ pipeline { } } - /* ─────────────────────────────── - * 5️⃣ Push vers le registre privΓ© - * ─────────────────────────────── */ stage('Push to Registry') { steps { - echo "πŸ“€ Envoi de l’image vers le registre Docker privΓ©..." + echo "πŸ“€ Envoi de l’image vers le registre..." withCredentials([usernamePassword(credentialsId: 'registry-credentials', usernameVariable: 'REG_USER', passwordVariable: 'REG_PASS')]) { sh """ echo "$REG_PASS" | docker login ${REGISTRY_URL} -u "$REG_USER" --password-stdin @@ -111,55 +89,20 @@ pipeline { } } - /* ─────────────────────────────── - * 6️⃣ Backup avant dΓ©ploiement - * ─────────────────────────────── */ - stage('Backup Before Deploy') { - steps { - echo "πŸ’Ύ ExΓ©cution du script de sauvegarde avant dΓ©ploiement..." - sh ''' - if [ -f /srv/devops/the-tip-top/backup.sh ]; then - bash /srv/devops/the-tip-top/backup.sh - else - echo "⚠️ Aucun script backup.sh trouvΓ©." - fi - ''' - } - } - - /* ─────────────────────────────── - * 7️⃣ DΓ©ploiement - * ─────────────────────────────── */ stage('Deploy') { steps { - echo "πŸš€ DΓ©ploiement du backend sur ${env.ENV}..." + echo "πŸš€ DΓ©ploiement sur ${env.ENV}..." sh """ - echo "πŸ“‚ DEPLOY_PATH utilisΓ© : ${DEPLOY_PATH}" - - if [ ! -f "${DEPLOY_PATH}/docker-compose.yml" ]; then - echo "❌ Fichier docker-compose.yml introuvable dans ${DEPLOY_PATH}" - ls -l ${DEPLOY_PATH} || echo "⚠️ Impossible de lister le contenu." - exit 1 - fi - cd "${DEPLOY_PATH}" - - echo "πŸ“¦ Pull de l'image Docker depuis le registre..." docker compose pull backend - - echo "πŸ”„ RecrΓ©ation du conteneur backend..." docker compose up -d --force-recreate backend """ } } - /* ─────────────────────────────── - * 8️⃣ VΓ©rification de santΓ© (via /health) - * ─────────────────────────────── */ - * ─────────────────────────────── */ stage('Health Check') { steps { - echo "🩺 VΓ©rification du backend aprΓ¨s dΓ©ploiement..." + echo "🩺 VΓ©rification de l’état du backend..." script { def domain = (env.ENV == 'dev') ? "api.dev.dsp5-archi-o24a-15m-g3.fr" : (env.ENV == 'preprod') ? "api.preprod.dsp5-archi-o24a-15m-g3.fr" : @@ -182,15 +125,12 @@ pipeline { } } - /* ─────────────────────────────── - * πŸ”š Post Actions - * ─────────────────────────────── */ post { success { - echo "βœ… Pipeline backend ${env.ENV} terminΓ© avec succΓ¨s !" + echo "βœ… Pipeline ${env.ENV} terminΓ© avec succΓ¨s !" } failure { - echo "❌ Γ‰chec du pipeline backend pour ${env.ENV}." + echo "❌ Γ‰chec du pipeline ${env.ENV}." } } } diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..b50e5018 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,17 @@ +// eslint.config.js +export default [ + { + files: ["**/*.js"], + ignores: ["node_modules/**"], + languageOptions: { + sourceType: "module", + ecmaVersion: "latest", + }, + rules: { + semi: ["error", "always"], + quotes: ["error", "double"], + "no-unused-vars": ["warn"], + "no-console": "off", + }, + }, +]; diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..4a932210 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,6 @@ +// jest.config.js +export default { + testEnvironment: "node", + transform: {}, // pas de transpilation Babel ici + verbose: true, +};