From 27d086843ff5daafd472e4c91fcc57356d45dd96 Mon Sep 17 00:00:00 2001 From: Vicente Falco Date: Thu, 11 May 2017 12:07:33 +0200 Subject: [PATCH 1/3] Jenkins - Docker --- Jenkinsfile | 68 ++++++++++++++++++++++++++++++++++++++ services/auth/Dockerfile | 4 ++- services/client/Dockerfile | 4 ++- services/nginx/Dockerfile | 6 ++-- services/salix/Dockerfile | 4 ++- 5 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000..c4d8b09406 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,68 @@ +#!groovy + +def image; +def branchName = "${env.BRANCH_NAME}"; +def branchNameTest = "preprod"; +def branchNameProd = "master"; +def prefixDocker = "test"; +def dockerNginxName = "nginx"; +def dockerAuthName = "auth"; +def dockerSalixName = "salix" +def dockerClientName = "client" +def buildNumber = "${env.BUILD_NUMBER}"; +String[] dockers = [dockerNginxName, dockerAuthName, dockerSalixName, dockerClientName]; + +node { + + if (branchName == branchNameProd) + prefixDocker = "prod"; + + stage ('Checkout') { + checkout scm + } + + stage ('build Project Salix'){ + sh "gulp build" + } + + for (int i = 0; i < dockers.size(); i++) + { + def element = dockers[i]; + stage ("docker ${element}") + { + stage ("Stopping ${prefixDocker}-${element} actual") + { + try + { + def returnDocker = sh (script: "docker stop ${prefixDocker}-${element}", returnStdout: true).trim(); + echo "${returnDocker}"; + returnDocker = sh (script: "docker rm ${prefixDocker}-${element}", returnStdout: true).trim(); + echo "${returnDocker}"; + returnDocker = sh (script: "docker -force rmi ${prefixDocker}-${element}:${buildNumber-1}", returnStdout: true).trim(); + echo "${returnDocker}"; + }catch(Exception _){ + echo "Error Stage Stopping" + } + } + stage ("Create Docker Image ${element}") { + dir("./services/${element}"){ + stage ("Install modules service ${element}"){ + if (fileExists('./package.json')) + sh "npm i" + } + stage("Build image ${element}"){ + image = docker.build("${prefixDocker}-${element}:${buildNumber}", ".") + } + } + } + stage ("Run Docker ${element}"){ + image.run ("--name ${prefixDocker}-${element}") + } + /* + stage('docker registry'){ + docker.withServer('tcp://harbor.verdnatura.es','docker-registry') + } + */ + } + } +} \ No newline at end of file diff --git a/services/auth/Dockerfile b/services/auth/Dockerfile index 9c80229536..ef4e55eb26 100644 --- a/services/auth/Dockerfile +++ b/services/auth/Dockerfile @@ -6,4 +6,6 @@ WORKDIR /app RUN npm install -CMD ["npm", "start"] \ No newline at end of file +CMD ["npm", "start"] + +EXPOSE 3000:3000 diff --git a/services/client/Dockerfile b/services/client/Dockerfile index afb62ac9aa..69792567db 100644 --- a/services/client/Dockerfile +++ b/services/client/Dockerfile @@ -6,4 +6,6 @@ WORKDIR /app RUN npm install -CMD ["npm", "start"] \ No newline at end of file +CMD ["npm", "start"] + +EXPOSE 3002:3002 \ No newline at end of file diff --git a/services/nginx/Dockerfile b/services/nginx/Dockerfile index ff059ad87f..bd0d86399b 100644 --- a/services/nginx/Dockerfile +++ b/services/nginx/Dockerfile @@ -4,6 +4,8 @@ RUN rm /etc/nginx/nginx.conf RUN rm /etc/nginx/conf.d/default.conf -COPY conf-prod.conf /etc/nginx/nginx.conf +COPY conf-prod.conf /etc/nginx/nginx.conf -COPY build /etc/nginx \ No newline at end of file +COPY static /usr/share/nginx/html + +EXPOSE 80:8080 \ No newline at end of file diff --git a/services/salix/Dockerfile b/services/salix/Dockerfile index afb62ac9aa..41cc0e1a2a 100644 --- a/services/salix/Dockerfile +++ b/services/salix/Dockerfile @@ -6,4 +6,6 @@ WORKDIR /app RUN npm install -CMD ["npm", "start"] \ No newline at end of file +CMD ["npm", "start"] + +EXPOSE 3001:3001 \ No newline at end of file From d93c6e18853e572c097b9f8fee4885b6ab17ebae Mon Sep 17 00:00:00 2001 From: Vicente Falco Date: Fri, 12 May 2017 12:41:35 +0200 Subject: [PATCH 2/3] Jenkins - Docker --- Jenkinsfile | 29 ++++++++++++++++++----------- services/auth/Dockerfile | 2 +- services/client/Dockerfile | 2 +- services/nginx/Dockerfile | 2 +- services/salix/Dockerfile | 2 +- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index c4d8b09406..3f08d4f5d8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,16 +1,20 @@ -#!groovy +#!/usr/bin/env groovy + +import groovy.json.*; def image; def branchName = "${env.BRANCH_NAME}"; def branchNameTest = "preprod"; def branchNameProd = "master"; def prefixDocker = "test"; -def dockerNginxName = "nginx"; -def dockerAuthName = "auth"; -def dockerSalixName = "salix" -def dockerClientName = "client" +def dockerNginxName = ["nginx", "-p 80:8080 --link test-auth:auth --link test-salix:salix --link test-client:client"] +def dockerAuthName = ["auth", "-p 3000:3000"] +def dockerSalixName = ["salix", "-p 3001:3001"] +def dockerClientName = ["client", "-p 3002:3002"] + def buildNumber = "${env.BUILD_NUMBER}"; -String[] dockers = [dockerNginxName, dockerAuthName, dockerSalixName, dockerClientName]; + +def dockers = [dockerAuthName, dockerSalixName, dockerClientName, dockerNginxName] node { @@ -25,9 +29,11 @@ node { sh "gulp build" } - for (int i = 0; i < dockers.size(); i++) + for (int i = 0; i < dockers.size(); i++) { - def element = dockers[i]; + def element = dockers[i][0] + def ports = dockers[i][1] + stage ("docker ${element}") { stage ("Stopping ${prefixDocker}-${element} actual") @@ -38,8 +44,9 @@ node { echo "${returnDocker}"; returnDocker = sh (script: "docker rm ${prefixDocker}-${element}", returnStdout: true).trim(); echo "${returnDocker}"; - returnDocker = sh (script: "docker -force rmi ${prefixDocker}-${element}:${buildNumber-1}", returnStdout: true).trim(); - echo "${returnDocker}"; + //returnDocker = sh (script: "docker rmi ${prefixDocker}-${element}:${buildNumber-3}", returnStdout: true).trim(); + echo "borran ${prefixDocker}-${element}:${buildNumber-3}"; + //echo "${returnDocker}"; }catch(Exception _){ echo "Error Stage Stopping" } @@ -56,7 +63,7 @@ node { } } stage ("Run Docker ${element}"){ - image.run ("--name ${prefixDocker}-${element}") + image.run ("${ports} --name ${prefixDocker}-${element}") } /* stage('docker registry'){ diff --git a/services/auth/Dockerfile b/services/auth/Dockerfile index ef4e55eb26..c7f1590cc1 100644 --- a/services/auth/Dockerfile +++ b/services/auth/Dockerfile @@ -8,4 +8,4 @@ RUN npm install CMD ["npm", "start"] -EXPOSE 3000:3000 +EXPOSE 3000 diff --git a/services/client/Dockerfile b/services/client/Dockerfile index 69792567db..865de516e2 100644 --- a/services/client/Dockerfile +++ b/services/client/Dockerfile @@ -8,4 +8,4 @@ RUN npm install CMD ["npm", "start"] -EXPOSE 3002:3002 \ No newline at end of file +EXPOSE 3002 \ No newline at end of file diff --git a/services/nginx/Dockerfile b/services/nginx/Dockerfile index bd0d86399b..727770d37e 100644 --- a/services/nginx/Dockerfile +++ b/services/nginx/Dockerfile @@ -8,4 +8,4 @@ COPY conf-prod.conf /etc/nginx/nginx.conf COPY static /usr/share/nginx/html -EXPOSE 80:8080 \ No newline at end of file +EXPOSE 8080 \ No newline at end of file diff --git a/services/salix/Dockerfile b/services/salix/Dockerfile index 41cc0e1a2a..9addf39cb5 100644 --- a/services/salix/Dockerfile +++ b/services/salix/Dockerfile @@ -8,4 +8,4 @@ RUN npm install CMD ["npm", "start"] -EXPOSE 3001:3001 \ No newline at end of file +EXPOSE 3001 \ No newline at end of file From a9212721f148f675f702fe82bfeb369afc40d2fb Mon Sep 17 00:00:00 2001 From: Vicente Falco Date: Fri, 12 May 2017 13:14:52 +0200 Subject: [PATCH 3/3] docker nginx conf --- services/nginx/conf-prod.conf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/nginx/conf-prod.conf b/services/nginx/conf-prod.conf index e0c9529b1d..c2a028fa85 100644 --- a/services/nginx/conf-prod.conf +++ b/services/nginx/conf-prod.conf @@ -25,15 +25,15 @@ http { } location ~ ^/auth(?:/(.*))?$ { - proxy_pass http://192.168.99.100:3000/$1$is_args$args; + proxy_pass http://test-auth:3000/$1$is_args$args; } location ~ ^/salix(?:/(.*))?$ { - proxy_pass http://192.168.99.100:3001/$1$is_args$args; + proxy_pass http://test-salix:3001/$1$is_args$args; } location ~ ^/client(?:/(.*))?$ { - proxy_pass http://192.168.99.100:3002/$1$is_args$args; + proxy_pass http://test-client:3002/$1$is_args$args; } } } \ No newline at end of file