8 Commits

Author SHA1 Message Date
4c3e6cd384 ci: enforce SonarQube quality gate
All checks were successful
Tests / Backend - Tests skipped: 7, passed: 27
Backend Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 60.55% (333/550) * Lines of Code: 550 #### Quality Gates Summary No active quality gates.
Tests / Frontend - Lint, Tests et Build passed: 45
Frontend Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 86.14% (230/267) * Lines of Code: 267 #### Quality Gates Summary No active quality gates.
THE-TIP-TOP-MULTIBRANCH/pipeline/head This commit looks good
2026-08-28 09:08:06 +00:00
55fb17634d security: remove hardcoded admin credentials 2026-08-28 09:05:11 +00:00
4d7ca7945b ci: make SonarQube quality gate non-blocking
All checks were successful
Tests / Backend - Tests skipped: 7, passed: 27
Backend Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 60.91% (335/550) * Lines of Code: 550 #### Quality Gates Summary No active quality gates.
Tests / Frontend - Lint, Tests et Build passed: 45
Frontend Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 86.14% (230/267) * Lines of Code: 267 #### Quality Gates Summary No active quality gates.
THE-TIP-TOP-MULTIBRANCH/pipeline/head This commit looks good
2026-08-24 20:06:32 +00:00
c22c72e99c fix: provide Node.js to SonarQube analysis
Some checks failed
Tests / Backend - Tests skipped: 7, passed: 27
Backend Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 60.91% (335/550) * Lines of Code: 550 #### Quality Gates Summary No active quality gates.
Tests / Frontend - Lint, Tests et Build passed: 45
Frontend Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 86.14% (230/267) * Lines of Code: 267 #### Quality Gates Summary No active quality gates.
THE-TIP-TOP-MULTIBRANCH/pipeline/head There was a failure building this commit
2026-08-24 19:53:42 +00:00
efe5073aaa fix: use existing SonarQube project key
All checks were successful
Tests / Backend - Tests skipped: 7, passed: 27
Backend Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 60.55% (333/550) * Lines of Code: 550 #### Quality Gates Summary No active quality gates.
Tests / Frontend - Lint, Tests et Build passed: 45
Frontend Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 86.14% (230/267) * Lines of Code: 267 #### Quality Gates Summary No active quality gates.
THE-TIP-TOP-MULTIBRANCH/pipeline/head This commit looks good
2026-08-24 19:45:51 +00:00
39b7b7f8a4 fix: avoid duplicate SonarQube test indexing
Some checks failed
Tests / Backend - Tests skipped: 7, passed: 27
Backend Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 60.55% (333/550) * Lines of Code: 550 #### Quality Gates Summary No active quality gates.
Tests / Frontend - Lint, Tests et Build passed: 45
Frontend Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 86.14% (230/267) * Lines of Code: 267 #### Quality Gates Summary No active quality gates.
THE-TIP-TOP-MULTIBRANCH/pipeline/head There was a failure building this commit
2026-08-24 19:42:55 +00:00
f8c02b3cfc ci: integrate SonarQube analysis and quality gate
Some checks failed
Tests / Backend - Tests skipped: 7, passed: 27
Backend Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 60.55% (333/550) * Lines of Code: 550 #### Quality Gates Summary No active quality gates.
Tests / Frontend - Lint, Tests et Build passed: 45
Frontend Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 86.14% (230/267) * Lines of Code: 267 #### Quality Gates Summary No active quality gates.
THE-TIP-TOP-MULTIBRANCH/pipeline/head There was a failure building this commit
2026-08-24 19:38:44 +00:00
35bffc8a0b ci: publish coverage reports in Jenkins
All checks were successful
Tests / Backend - Tests skipped: 7, passed: 27
Backend Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 60.55% (333/550) * Lines of Code: 550 #### Quality Gates Summary No active quality gates.
Tests / Frontend - Lint, Tests et Build passed: 45
Frontend Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 86.14% (230/267) * Lines of Code: 267 #### Quality Gates Summary No active quality gates.
THE-TIP-TOP-MULTIBRANCH/pipeline/head This commit looks good
2026-08-24 18:51:03 +00:00
2 changed files with 104 additions and 14 deletions

84
Jenkinsfile vendored
View File

@@ -180,6 +180,25 @@ pipeline {
allowEmptyResults: true allowEmptyResults: true
) )
recordCoverage(
tools: [[
parser: 'LCOV',
pattern: 'backend/coverage/lcov.info'
]],
sourceCodeRetention: 'EVERY_BUILD',
id: 'backend-coverage',
name: 'Backend Coverage'
)
publishHTML([
allowMissing: true,
alwaysLinkToLastBuild: true,
keepAll: true,
reportDir: 'backend/coverage',
reportFiles: 'index.html',
reportName: 'Backend Coverage HTML'
])
archiveArtifacts( archiveArtifacts(
artifacts: 'backend/coverage/**', artifacts: 'backend/coverage/**',
fingerprint: true, fingerprint: true,
@@ -225,6 +244,25 @@ pipeline {
allowEmptyResults: true allowEmptyResults: true
) )
recordCoverage(
tools: [[
parser: 'LCOV',
pattern: 'frontend/coverage/lcov.info'
]],
sourceCodeRetention: 'EVERY_BUILD',
id: 'frontend-coverage',
name: 'Frontend Coverage'
)
publishHTML([
allowMissing: true,
alwaysLinkToLastBuild: true,
keepAll: true,
reportDir: 'frontend/coverage',
reportFiles: 'index.html',
reportName: 'Frontend Coverage HTML'
])
archiveArtifacts( archiveArtifacts(
artifacts: 'frontend/coverage/**', artifacts: 'frontend/coverage/**',
fingerprint: true, fingerprint: true,
@@ -234,6 +272,52 @@ pipeline {
} }
} }
stage('SonarQube Analysis') {
when {
branch 'develop'
}
tools {
nodejs 'node22'
}
steps {
script {
def scannerHome = tool 'sonar-scanner'
withEnv(["SCANNER_HOME=${scannerHome}"]) {
withSonarQubeEnv('sonarqube') {
sh '''
echo "Node utilisé par Sonar :"
node -v
"${SCANNER_HOME}/bin/sonar-scanner" \
-Dsonar.projectKey=THE-TIP-TOP \
-Dsonar.projectName=THE-TIP-TOP \
-Dsonar.sources=backend/src,frontend/src \
-Dsonar.tests=backend/tests,frontend/src/test \
-Dsonar.exclusions=frontend/src/test/**,backend/tests/**,**/node_modules/**,**/coverage/**,**/dist/** \
-Dsonar.test.inclusions=backend/tests/**,frontend/src/test/** \
-Dsonar.javascript.lcov.reportPaths=backend/coverage/lcov.info,frontend/coverage/lcov.info \
-Dsonar.sourceEncoding=UTF-8
'''
}
}
}
}
}
stage('SonarQube Quality Gate') {
when {
branch 'develop'
}
steps {
timeout(time: 5, unit: 'MINUTES') {
waitForQualityGate abortPipeline: true
}
}
}
stage('Construction des images Docker') { stage('Construction des images Docker') {
when { when {
expression { expression {

View File

@@ -1,9 +1,15 @@
require('dotenv').config()
const bcrypt = require('bcrypt') const bcrypt = require('bcrypt')
const prisma = require('../config/prisma') const prisma = require('../config/prisma')
async function createAdmin() { async function createAdmin() {
const email = 'admin@thetiptop.fr' const email = process.env.ADMIN_EMAIL
const password = 'Admin@TipTop2026!' const password = process.env.ADMIN_PASSWORD
if (!email || !password) {
throw new Error('ADMIN_EMAIL et ADMIN_PASSWORD doivent être définis')
}
const existing = await prisma.user.findUnique({ where: { email } }) const existing = await prisma.user.findUnique({ where: { email } })