diff --git a/README.md b/README.md index b8ad8a94af..080c8bb2f5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ Example Voting App ========= +This is a sample instavote application + Getting started --------------- diff --git a/result/Jenkinsfile b/result/Jenkinsfile new file mode 100644 index 0000000000..1e6ebdae7d --- /dev/null +++ b/result/Jenkinsfile @@ -0,0 +1,76 @@ +pipeline { + + agent none + + + stages{ + + + stage("build"){ + + + agent{ + docker{ + image 'node:8.16.0-alpine' + } + } + + when{ + changeset "**/result/**" + } + + + steps{ + echo 'Compiling result app' + dir('result'){ + sh 'npm install' + } + } + } + + + stage("test"){ + + agent{ + docker{ + image 'node:8.16.0-alpine' + } + } + + when{ + changeset "**/result/**" + } + + + steps{ + echo 'Running Unit Tests on result app' + dir('result'){ + sh 'npm install' + sh 'npm test' + } + } + } + + + stage('docker-package'){ + agent any + when{ + changeset "**/result/**" + branch 'master' + } + + steps{ + echo 'Packaging result app with docker' + script{ + docker.withRegistry('https://index.docker.io/v1/', 'dockerlogin') { + def workerImage = docker.build("rsdroid/result:v${env.BUILD_ID}", "./result") + workerImage.push() + workerImage.push("${env.BRANCH_NAME}") + workerImage.push("latest") + } + } + } + } + } + +} diff --git a/vote/Jenkinsfile b/vote/Jenkinsfile new file mode 100644 index 0000000000..eb86ef3334 --- /dev/null +++ b/vote/Jenkinsfile @@ -0,0 +1,79 @@ +pipeline { + + agent none + + stages{ + agent{ + docker{ + image 'python:2.7.16-slim' + args '--user root' + } + } + + + stage("build"){ + + when{ + changeset "**/vote/**" + } + + + + steps{ + echo 'Compiling vote app' + dir('vote'){ + sh 'pip install -r requirements.txt' + } + } + } + + + stage("test"){ + when{ + changeset "**/vote/**" + } + + agent{ + docker{ + image 'python:2.7.16-slim' + args '--user root' + } + } + + steps{ + echo 'Running Unit Tests on worker app' + dir('vote'){ + sh 'pip install -r requirements.txt' + sh 'nosetests -v' + } + } + } + + + + stage('docker-package'){ + agent any + when{ + changeset "**/vote/**" + branch 'master' + } + steps{ + echo 'Packaging vote app with docker' + script{ + docker.withRegistry('https://index.docker.io/v1/', 'dockerlogin'){ + def workerImage = docker.build("rsdroid/vote:v${env.BUILD_ID}", "./vote") + workerImage.push() + workerImage.push("${env.BRANCH_NAME}") + workerImage.push("latest") + } + } + } + } + } + + post{ + always{ + echo 'Building multibranch pipeline for worker is completed..' + } + } +} diff --git a/worker/Dockerfile b/worker/Dockerfile new file mode 100644 index 0000000000..a827acb1d1 --- /dev/null +++ b/worker/Dockerfile @@ -0,0 +1,11 @@ +FROM maven:3.6.1-jdk-8-slim + +WORKDIR /app + +COPY . . + +RUN mvn package && \ + mv target/worker-jar-with-dependencies.jar /run/worker.jar && \ + rm -rf /app/* + +CMD java -jar /run/worker.jar diff --git a/worker/Jenkinsfile b/worker/Jenkinsfile new file mode 100644 index 0000000000..28981565da --- /dev/null +++ b/worker/Jenkinsfile @@ -0,0 +1,99 @@ +pipeline { + + agent none + + stages{ + stage("build"){ + agent{ + docker{ + image 'maven:3.6.1-jdk-8-slim' + args '-v $HOME/.m2:/root/.m2' + } + } + + when{ + changeset "**/worker/**" + } + + + + + steps{ + echo 'Compiling worker app' + dir('worker'){ + sh 'mvn compile' + } + } + } + + + stage("test"){ + when{ + changeset "**/worker/**" + } + + agent{ + docker{ + image 'maven:3.6.1-jdk-8-slim' + args '-v $HOME/.m2:/root/.m2' + } + } + + steps{ + echo 'Running Unit Tests on worker app' + dir('worker'){ + sh 'mvn clean test' + } + } + } + + + stage("package"){ + when{ + branch 'master' + changeset "**/worker/**" + } + + agent{ + docker{ + image 'maven:3.6.1-jdk-8-slim' + args '-v $HOME/.m2:/root/.m2' + } + } + + steps{ + echo 'Packaging worker app' + dir('worker'){ + sh 'mvn package -DskipTests' + } + } + } + + + stage('docker-package'){ + agent any + when{ + changeset "**/worker/**" + branch 'master' + } + steps{ + echo 'Packaging worker app with docker' + script{ + docker.withRegistry('https://index.docker.io/v1/', 'dockerlogin') +{ + def workerImage = docker.build("rsdroid/worker:v${env.BUILD_ID}", "./worker") + workerImage.push() + workerImage.push("${env.BRANCH_NAME}") + workerImage.push("latest") + } + } + } + } + } + + post{ + always{ + echo 'Building multibranch pipeline for worker is completed..' + } + } +}