소스 검색

staging preprod

formation 3 년 전
부모
커밋
7448cc9ca5
3개의 변경된 파일165개의 추가작업 그리고 235개의 파일을 삭제
  1. 83 129
      Jenkinsfile
  2. 1 1
      angular-client/src/environments/environment.ts
  3. 81 105
      docker-compose.yml

+ 83 - 129
Jenkinsfile

@@ -1,74 +1,93 @@
-node{ 
-   stage('Prepare Node and NPM') { // confirm nodejs plugin and setting
-   env.NODEJS_HOME = "${tool 'NodeJS'}"
-    //on linux / mac
+node{
+
+    env.NODEJS_HOME = "${tool 'NodeJS'}"
+    // on linux / mac
     env.PATH="${env.NODEJS_HOME}/bin:${env.PATH}"
     env.PATH="${env.NODEJS_HOME}/bin:${env.PATH}"
     // on windows
     // on windows
-    // env.PATH="${env.NODEJS_HOME};${env.PATH}"
+    //env.PATH="${env.NODEJS_HOME};${env.PATH}"
     sh 'npm --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'
-    }
-<<<<<<< HEAD
+	stage('checkout')
+	{
+		deleteDir()
+		checkout scm
+	}
+	 
+	stage("Stop Preprod Container")
+	{
+		echo e ;
+	}
+	
+	// stage("Stop Preprod Container")
+	// {
+	// 	sh "docker kill server-apache-preprod server-express-preprod | docker rm server-apache-preprod server-express-preprod || true"
+	// 	sh 'docker system prune -f'
+	// }
+
 
 
-    // stage('Test'){
-=======
-    stage('Test') 
+    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 build/docker/httpd/")
+	}
+	
+	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 /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("Wait mysql"){
+	// imageSql.inside {
+	// sh 'while ! mysqladmin ping -h0.0.0.0 --silent; do sleep 1; done'
+	// }
+	// }
+	// stage("Run test"){
+	// imageApache.inside {
+	// sh "php /var/www/src/bin/console doctrine:schema:update --force"
+	// sh "php /var/www/src/bin/phpunit"
+	// }
+	// }
+	
+	
+	// stage("Push preprod images to nexus")
+	// {
+	// 	docker.withRegistry('http://localhost:8083','885ef60c-9352-489a-bd1c-e4b695747c21')
+	// 	{
+	// 			imageApache.push('latest')
+	// 		    imageExpress.push('latest')
+	// 	}
+	// }
+
+     stage('Test') 
     {
     {
->>>>>>> test
         
         
        dir("${env.WORKSPACE}/angular-client")
        dir("${env.WORKSPACE}/angular-client")
        {
        {
-            // sh 'npm i @angular-devkit/build-angular'
+            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
-			// }
+			try
+			{
+				sh 'npm run test-ci'
+			} 
+			catch(err) 
+			{
+				sh 'echo TEST FAILED'
+				junit 'target/surefire-reports/TESTS-TestSuite.xml/*.xml'
+				throw err
+			}
             
             
-            def karma = docker.image('trion/ng-cli-karma')
+            /*def karma = docker.image('trion/ng-cli-karma')
             karma.pull()
             karma.pull()
 
 
             try 
             try 
@@ -80,7 +99,7 @@ node{
                 
                 
                     try 
                     try 
                     {
                     {
-                        sh ('karma start karma.conf.js')
+                        sh ('./node_modules/karma/bin/karma start karma.conf.js')
                     }
                     }
                     catch(err) 
                     catch(err) 
                     {
                     {
@@ -96,78 +115,13 @@ node{
             {
             {
             sh 'echo RUN DOCKER FAILED'
             sh 'echo RUN DOCKER FAILED'
             throw err
             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")
+	stage('ls')
 	{
 	{
-		containerSql=imageExpress.run("--name server-express-preprod -v /home/projet/fatboar/${e}/mysql:/var/lib/mysql --network=web")
+	    sh 'ls -ls'
 	}
 	}
-	
-	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"
-    //     }
-    // }
-	
-
-<<<<<<< HEAD
-    stage('Build Docker MEAN Stack(PreProduction Deployment)') 
-=======
-    stage('Build Docker MEAN Stack(Test Deployment)') 
->>>>>>> test
-    {
-        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é!"'  
-   }
 }
 }

+ 1 - 1
angular-client/src/environments/environment.ts

@@ -5,7 +5,7 @@
 export const environment = {
 export const environment = {
   production: false,
   production: false,
   name: "(Dev)",
   name: "(Dev)",
-  apiUrl: `https://api-preprod.foodgame.fr`,
+  apiUrl: `http://api-dev.foodgame.fr`,
 };
 };
 
 
 /*
 /*

+ 81 - 105
docker-compose.yml

@@ -1,113 +1,89 @@
-version: '3.0' # specify docker-compose version
- 
-# Define the services/ containers to be run
-services:
- angular: # name of the first service
-  build: angular-client # specify the directory of the Dockerfile
-  ports:
-  - "4200:4200" # specify port mapping
- 
- express: # name of the second service
-  build: express-server # specify the directory of the Dockerfile
-  ports:
-  - "9991:9991" #specify ports mapping
-  links:
-  - database # link this service to the database service
- 
- database: # name of the third service
-  image: mongo # specify image to build container from
-  ports:
-  - "27017:27017" # specify port forwarding
-
-
+version: '3'
 
 
+networks:
+  private:
+  web:
+   external:
+    name: web
+  #pipeline-test-mean-stack-docker_default:
+  #pipeline-test-mean-stack-docker_private:
+  #grafana:
 
 
-# version: '3'
+#volumes:
+#  app_data: {}
+#  database:
 
 
-# networks:
-#   private:
-#   web:
-#    external:
-#     name: web
-#   #pipeline-test-mean-stack-docker_default:
-#   #pipeline-test-mean-stack-docker_private:
-#   #grafana:
-
-# #volumes:
-# #  app_data: {}
-# #  database:
-
-# services:
-#   express_preprod:
-#     #   container_name: express_"${ENV}"
-#         build: express-server
-#         ports:
-#           - "4000:4000"
-#         networks:
-#           - web
-#           - private
-#           #- pipeline-test-mean-stack-docker_default
-#           #- pipeline-test-mean-stack-docker_private
-#           #- grafana
-#         volumes:
-#           - /var/log:/var/www/app/log/root
-#         labels:
-#           - traefik.enable=true
-#           - traefik.http.routers.express_preprod.rule=Host(`api-preprod.foodgame.fr`)
-#     #     - traefik.http.routers.apache_prod.rule=Host(`${URLEXPRESS}`)
-#           - traefik.http.services.express_preprod.loadbalancer.server.port=4000
-#           - traefik.http.routers.express_preprod.entrypoints=websecure
-#           - traefik.http.routers.express_preprod.tls.certresolver=myresolver
-#         links:
-#           - database_preprod
-#         restart: always
+services:
+  express_preprod:
+    #   container_name: express_"${ENV}"
+        build: express-server
+        ports:
+          - "4000:4000"
+        networks:
+          - web
+          - private
+          #- pipeline-test-mean-stack-docker_default
+          #- pipeline-test-mean-stack-docker_private
+          #- grafana
+        volumes:
+          - /var/log:/var/www/app/log/root
+        labels:
+          - traefik.enable=true
+          - traefik.http.routers.express_preprod.rule=Host(`api-preprod.foodgame.fr`)
+    #     - traefik.http.routers.apache_prod.rule=Host(`${URLEXPRESS}`)
+          - traefik.http.services.express_preprod.loadbalancer.server.port=4000
+          - traefik.http.routers.express_preprod.entrypoints=websecure
+          - traefik.http.routers.express_preprod.tls.certresolver=myresolver
+        links:
+          - database_preprod
+        restart: always
 
 
-#   database_preprod:
-# #   container_name: mongo_"${ENV}"
-#     image: mongo:4.4.6
-#     ports:
-#       - "27017:27017"
-#     volumes:
-#       - ./backup:/backup
-#       - /var/lib/mongodb/data_preprod:/data/db
-# #     - database:/data/database
-#     labels:
-#       - traefik.enable=true
-#       - traefik.http.routers.database_preprod.rule=Host(`mongodb-preprod.foodgame.fr`)
-# #     - traefik.http.routers.apache_prod.rule=Host(`${URLMONGO}`)
-#       - traefik.http.services.database_preprod.loadbalancer.server.port=27017
-#       - traefik.http.routers.database_preprod.entrypoints=websecure
-#       - traefik.http.routers.database_preprod.tls.certresolver=myresolver  
-#     networks:
-#       - web
-#       - private
-#       #- pipeline-test-FatboarProject_default
-#       #- pipeline-test-FatboarProject_private
-#     restart: always
+  database_preprod:
+#   container_name: mongo_"${ENV}"
+    image: mongo:4.4.6
+    ports:
+      - "27017:27017"
+    volumes:
+      - ./backup:/backup
+      - /var/lib/mongodb/data_preprod:/data/db
+#     - database:/data/database
+    labels:
+      - traefik.enable=true
+      - traefik.http.routers.database_preprod.rule=Host(`mongodb-preprod.foodgame.fr`)
+#     - traefik.http.routers.apache_prod.rule=Host(`${URLMONGO}`)
+      - traefik.http.services.database_preprod.loadbalancer.server.port=27017
+      - traefik.http.routers.database_preprod.entrypoints=websecure
+      - traefik.http.routers.database_preprod.tls.certresolver=myresolver  
+    networks:
+      - web
+      - private
+      #- pipeline-test-FatboarProject_default
+      #- pipeline-test-FatboarProject_private
+    restart: always
 
 
-#   apache_preprod:
-# #   container_name: apache_"${ENV}"    
-#     build:  
-#       context: ./
-#      #dockerfile: build/docker/httpd/Dockerfile
-#       dockerfile: build/docker/apache/Dockerfile
-#     ports:
-#       - "8080:80"
-#     networks:
-#       - web
-#       - private
-#       #- pipeline-test-FatboarProject_default
-#       #- pipeline-test-FatboarProject_private
-#     volumes:     
-#       - /var/log:/var/log/apache2
-#     labels:
-#       - traefik.enable=true
-#       - traefik.http.routers.apache_prod.rule=Host(`angular-preprod.foodgame.fr`)
-# #     - traefik.http.routers.apache_prod.rule=Host(`${URLANGULAR}`)
-#       - traefik.http.services.apache_prod.loadbalancer.server.port=80
-#       - traefik.http.routers.apache_prod.entrypoints=websecure
-#       - traefik.http.routers.apache_prod.tls.certresolver=myresolver  
-#     restart: always  
+  apache_preprod:
+#   container_name: apache_"${ENV}"    
+    build:  
+      context: ./
+      dockerfile: build/docker/httpd/Dockerfile
+      #dockerfile: build/docker/apache/Dockerfile
+    ports:
+      - "8080:80"
+    networks:
+      - web
+      - private
+      #- pipeline-test-FatboarProject_default
+      #- pipeline-test-FatboarProject_private
+    volumes:     
+      - /var/log:/var/log/apache2
+    labels:
+      - traefik.enable=true
+      - traefik.http.routers.apache_prod.rule=Host(`angular-preprod.foodgame.fr`)
+#     - traefik.http.routers.apache_prod.rule=Host(`${URLANGULAR}`)
+      - traefik.http.services.apache_prod.loadbalancer.server.port=80
+      - traefik.http.routers.apache_prod.entrypoints=websecure
+      - traefik.http.routers.apache_prod.tls.certresolver=myresolver  
+    restart: always