|
|
@@ -1,24 +1,135 @@
|
|
|
-node {
|
|
|
- // Set the desired Node.js version
|
|
|
- withEnv(["PATH+NODEJS=/path/to/nodejs/bin"]) {
|
|
|
- stage('Install dependencies') {
|
|
|
- sh 'npm install --legacy-peer-deps'
|
|
|
- }
|
|
|
+node{
|
|
|
+ stage('Prepare Node and NPM') { // confirm nodejs plugin and setting
|
|
|
+ env.NODEJS_HOME = "${tool 'NodeJS'}"
|
|
|
+ //on linux / mac
|
|
|
+ env.PATH="${env.NODEJS_HOME}/bin:${env.PATH}"
|
|
|
+ // on windows
|
|
|
+ //env.PATH="${env.NODEJS_HOME};${env.PATH}"
|
|
|
+ sh'node --version'
|
|
|
+ sh 'npm --version'
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ stage('checkout'){
|
|
|
+ deleteDir()
|
|
|
+ checkout scm
|
|
|
+ echo 'Pulling..................' + env.BRANCH_NAME
|
|
|
+ }
|
|
|
+ stage('Stop Container'){
|
|
|
+ sh 'docker ps | grep "workflow_" -v | awk -F " " \'{if(NR>1)print $1}\' | xargs docker kill | xargs docker rm || true'
|
|
|
+ sh 'docker system prune -f'
|
|
|
+ }
|
|
|
+ //stage('Build Container')
|
|
|
+ // {
|
|
|
+ // imageApache=docker.build('server-apache-dev', '--no-cache -f build/docker/apache/Dockerfile .')
|
|
|
+ // imageSql=docker.build('server-mysql-dev', '--no-cache -f build/docker/mysql/Dockerfile .')
|
|
|
+ // containerMysql=imageSql.run('--name server-mysql-dev')
|
|
|
+ // containerApache=imageApache.run('-p 8080:80 --link server-mysql-dev:mysql')
|
|
|
+ // }
|
|
|
+ // stage('Waiting Container'){
|
|
|
+ // waitUntil{
|
|
|
+ // try{
|
|
|
+ // sh "docker exec ${containerApache.id} php -v"
|
|
|
+ // return true
|
|
|
+ // } catch(Exception $e){
|
|
|
+ // return false
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ stage('stage 1bis'){
|
|
|
+ sh 'docker -v'
|
|
|
+ sh 'docker ps'
|
|
|
+ }
|
|
|
+
|
|
|
+ stage('stage 2bis'){
|
|
|
+ sh 'ls -ls'
|
|
|
+ }
|
|
|
+ stage('Test') {
|
|
|
+
|
|
|
+ dir("${env.WORKSPACE}/angular-client") {
|
|
|
+ sh 'npm install phantomjs-prebuilt --save-dev'
|
|
|
+ sh 'npm install --force'
|
|
|
+
|
|
|
+ try {
|
|
|
|
|
|
- stage('Test') {
|
|
|
- dir("${env.WORKSPACE}/angular-client") {
|
|
|
- sh 'npm i @angular-devkit/build-angular'
|
|
|
-
|
|
|
- try {
|
|
|
- sh 'npm run test-ci'
|
|
|
- } catch(err) {
|
|
|
- sh 'echo TEST FAILED'
|
|
|
- junit 'target/surefire-reports/TESTS-TestSuite.xml/*.xml'
|
|
|
- throw err
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ // Exporter la variable d'environnement NODE_OPTIONS
|
|
|
+ sh 'export NODE_OPTIONS=--openssl-legacy-provider && npm run test-ci'
|
|
|
|
|
|
- // Other build steps, deployment, etc.
|
|
|
+ } catch(err) {
|
|
|
+ sh 'echo TEST FAILED'
|
|
|
+ junit 'target/surefire-reports/TESTS-TestSuite.xml/*.xml'
|
|
|
+ throw err
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // def imageApache = stage("Build apache preprod")
|
|
|
+ // {
|
|
|
+ // docker.build("server-apache-preprod", "--no-cache --label traefik.enable=true --label traefik.http.routers.server-apache-preprod.rule='Host(`angular-preprod.foodgame.fr`)' --label traefik.http.routers.server-apache-preprod.entrypoints=websecure --label traefik.http.routers.server-apache-preprod.tls.certresolver=myresolver -f build/docker/httpd/Dockerfile .")
|
|
|
+ // }
|
|
|
+
|
|
|
+ // def imageExpress = stage("Build express preprod")
|
|
|
+ // {
|
|
|
+ // docker.build("server-express-preprod", "--no-cache -f express-server/Dockerfile express-server")
|
|
|
+ // }
|
|
|
+
|
|
|
+ /*stage("Run Container express preprod")
|
|
|
+ {
|
|
|
+ containerSql=imageExpress.run("--name server-express-preprod -v /var/log:/var/www/app/log/root --link database_preprod:mongo --network=web")
|
|
|
+ }
|
|
|
+ stage("Run Container apache preprod")
|
|
|
+ {
|
|
|
+ containerApache=imageApache.run("--name server-apache-preprod --link server-mysql-preprod:mysql --network=web")
|
|
|
+ }*/
|
|
|
+
|
|
|
+
|
|
|
+ /*stage("Run Container express preprod")
|
|
|
+ {
|
|
|
+ containerSql=imageExpress.run("--name server-express-preprod -v /home/projet/fatboar/${e}/mysql:/var/lib/mysql --network=web")
|
|
|
+ }
|
|
|
+
|
|
|
+ stage("Run Container apache preprod")
|
|
|
+ {
|
|
|
+ containerApache=imageApache.run("--name server-apache-preprod --link server-mysql-preprod:mysql --network=web")
|
|
|
+ }*/
|
|
|
+
|
|
|
+
|
|
|
+ // stage("Push preprod images to nexus")
|
|
|
+ // {
|
|
|
+ // /*docker.withRegistry('http://localhost:8083','885ef60c-9352-489a-bd1c-e4b695747c21')
|
|
|
+ // {
|
|
|
+ // imageApache.push('latest')
|
|
|
+ // imageExpress.push('latest')
|
|
|
+ // }*/
|
|
|
+ // }
|
|
|
+ // stage('SonarQube analysis')
|
|
|
+ // {
|
|
|
+ // def scannerHome = tool name: 'SonarQube Scanner', type: 'hudson.plugins.sonar.SonarRunnerInstallation';
|
|
|
+ // withSonarQubeEnv('SonarQube')
|
|
|
+ // {
|
|
|
+ // // If you have configured more than one global server connection, you can specify its name
|
|
|
+ // sh "${scannerHome}/bin/sonar-scanner \
|
|
|
+ // -Dsonar.projectKey=FatboarProject \
|
|
|
+ // -Dsonar.sources=. \
|
|
|
+ // -Dsonar.host.url=https://sonarqube.foodgame.fr \
|
|
|
+ // -Dsonar.login=sqp_09ee9072c917af8212864baf0f75c950afc14c64"
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+
|
|
|
+ // stage('Build Docker MEAN Stack(Test Deployment)')
|
|
|
+ // {
|
|
|
+ // sh 'docker-compose -v'
|
|
|
+ // sh 'docker-compose build'
|
|
|
+ // sh 'docker-compose up -d'
|
|
|
+ // }
|
|
|
+
|
|
|
+ stage('Fin du Pipeline')
|
|
|
+ {
|
|
|
+ sh 'echo "Félicitation tout c\'est bien déroulé!"'
|
|
|
+ }
|
|
|
+}
|