diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 00000000..b0ee0654 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,87 @@ +pipeline{ + agent any + tools{ + jdk 'jdk17' + nodejs 'node16' + } + environment { + SCANNER_HOME=tool 'sonar-scanner' + } + stages { + stage('clean workspace'){ + steps{ + cleanWs() + } + } + stage('Checkout from Git'){ + steps{ + git branch: 'main', url: 'https://github.com/Iamthor15/DevSecOps-Project' + } + } + stage("Sonarqube Analysis "){ + steps{ + withSonarQubeEnv('sonar-server') { + sh ''' $SCANNER_HOME/bin/sonar-scanner -Dsonar.projectName=Netflix \ + -Dsonar.projectKey=Netflix ''' + } + } + } + stage("quality gate"){ + steps { + script { + waitForQualityGate abortPipeline: false, credentialsId: 'Sonar-token' + } + } + } + stage('Install Dependencies') { + steps { + sh "npm install" + } + } + stage('OWASP FS SCAN') { + steps { + dependencyCheck additionalArguments: '--scan ./ --disableYarnAudit --disableNodeAudit', odcInstallation: 'DP-Check' + dependencyCheckPublisher pattern: '**/dependency-check-report.xml' + } + } + stage('TRIVY FS SCAN') { + steps { + sh "trivy fs . > trivyfs.txt" + } + } + stage("Docker Build & Push"){ + steps{ + script{ + withDockerRegistry(credentialsId: 'docker', toolName: 'docker'){ + sh "docker build --build-arg TMDB_V3_API_KEY=0c2fe67ca7a6c9d723fd6414791cb98f -t netflix ." + sh "docker tag netflix rithik1504/netflix:latest " + sh "docker push rithik1504/netflix:latest " + } + } + } + } + stage("TRIVY"){ + steps{ + sh "trivy image rithik1504/netflix:latest > trivyimage.txt" + } + } + stage('Deploy to container'){ + steps{ + sh 'docker run -d -p 8081:80 rithik1504/netflix:latest' + } + } + } +} +post { + always { + emailext attachLog: true, + subject: "'${currentBuild.result}'", + body: "Project: ${env.JOB_NAME}
" + + "Build Number: ${env.BUILD_NUMBER}
" + + "URL: ${env.BUILD_URL}
", + to: 'singhrithik946@gmail.com', + attachmentsPattern: 'trivyfs.txt,trivyimage.txt' + } + } +} +