pipeline { agent any environment { NODE_VERSION = '20.17.0' } stages { stage('Fetch Cache') { options { cache(caches: [ arbitraryFileCache( cacheName: 'Next', cacheValidityDecidingFile: '', excludes: '', includes: '**/*', path: "./.nx/cache" ) ], defaultBranch: 'dev', maxCacheSize: 256000, skipSave: true) } steps { echo 'Start fetching Cache.' } } stage('Checkout Repository') { steps { checkout scm } } stage('Check Node.js and npm') { steps { script { sh "node -v" sh "npm -v" } } } stage('Install Dependencies') { steps { sh 'npm ci' } } stage('Run Unit Tests') { steps { sh 'npm test' } } stage('Build Project') { steps { sh 'npm run build 2>&1 | tee build_report.log' // Captures build output } } stage('Save Cache') { options { cache(caches: [ arbitraryFileCache( cacheName: 'Next', cacheValidityDecidingFile: '', excludes: '', includes: '**/*', path: "./.nx/cache" ) ], defaultBranch: 'dev', maxCacheSize: 256000, skipRestore: true) } steps { echo 'Start saving Cache.' } } } post { always { junit '**/reports/junit.xml' archiveArtifacts artifacts: 'reports/**', fingerprint: true archiveArtifacts artifacts: 'build_report.log', fingerprint: true cleanWs(cleanWhenNotBuilt: false, notFailBuild: true) } success { echo 'Build completed successfully!' } failure { echo 'Build failed!' } } }