diff --git a/README.md b/README.md index b8ad8a94..12c47f53 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ Example Voting App ========= +DUPA!! + Getting started --------------- diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 00000000..67b903c9 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,16 @@ + +services: + vote: + image: dart913/vote:latest + ports: + - 5000:80 + redis: + image: redis:alpine + db: + image: postgres:15-alpine + result: + image: dart913/result:latest + ports: + - 5001:80 + worker: + image: dart913/worker:latest diff --git a/vote/Jenkinsfile b/vote/Jenkinsfile index cf328100..924b5240 100644 --- a/vote/Jenkinsfile +++ b/vote/Jenkinsfile @@ -2,6 +2,10 @@ pipeline { agent none stages{ stage('build'){ + when{ + changeset "**/vote/**" + } + agent{ docker{ image 'python:3.11-slim' @@ -12,14 +16,14 @@ pipeline { steps{ echo 'Compiling vote app.' dir('vote'){ - sh "pip install -r requirements.txt" - } } } stage('test'){ - + when{ + changeset "**/vote/**" + } agent { docker{ image 'python:3.11-slim' @@ -32,21 +36,22 @@ pipeline { sh "pip install -r requirements.txt" sh 'nosetests -v' - - } } } stage('docker-package'){ agent any - + when{ + changeset "**/vote/**" + branch 'master' + } steps{ echo 'Packaging wvoteorker app with docker' script{ docker.withRegistry('https://index.docker.io/v1/', 'dockerlogin') { // ./vote is the path to the Dockerfile that Jenkins will find from the Github repo - def voteImage = docker.build("okapetanios/vote:v${env.BUILD_ID}", "./vote") + def voteImage = docker.build("dart913/vote:v${env.BUILD_ID}", "./vote") voteImage.push() voteImage.push("${env.BRANCH_NAME}") voteImage.push("latest") @@ -54,14 +59,12 @@ pipeline { } } } - } post { always{ echo 'Pipeline for vote is complete' } } - } diff --git a/worker/Jenkinsfile b/worker/Jenkinsfile index b66016b2..4fa2371a 100644 --- a/worker/Jenkinsfile +++ b/worker/Jenkinsfile @@ -1,41 +1,90 @@ -pipeline { - agent{ - docker{ - image 'maven:3.9.8-sapmachine-21' - args '-v $HOME/.m2:/root/.m2' - } - } - stages{ - stage('build'){ - steps{ - echo 'building worker app' - dir('worker'){ - sh 'mvn compile' - } - } - } - stage('test'){ - steps{ - echo 'running unit tests on worker app' - dir('worker'){ - sh 'mvn clean test' - } - } - } - stage('package'){ - steps{ - echo 'packaging worker app into a jarfile' - dir('worker'){ - sh 'mvn package -DskipTests' - archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true - } - } - } - } - post{ - always{ - echo 'the job is complete' +pipeline { + + agent none + + stages{ + stage("build"){ + when{ + changeset "**/worker/**" + } + + agent{ + docker{ + image 'maven:3.9.8-sapmachine-21' + args '-v $HOME/.m2:/root/.m2' + } + } + + steps{ + echo 'Compiling worker app..' + dir('worker'){ + sh 'mvn compile' + } + } + } + stage("test"){ + when{ + changeset "**/worker/**" + } + agent{ + docker{ + image 'maven:3.9.8-sapmachine-21' + args '-v $HOME/.m2:/root/.m2' + } + } + steps{ + echo 'Running Unit Tets on worker app..' + dir('worker'){ + sh 'mvn clean test' + } + } + } + stage("package"){ + when{ + branch 'master' + changeset "**/worker/**" + } + agent{ + docker{ + image 'maven:3.9.8-sapmachine-21' + args '-v $HOME/.m2:/root/.m2' + } + } + steps{ + echo 'Packaging worker app' + dir('worker'){ + sh 'mvn package -DskipTests' + archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true + } + + } + } + + 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("dart913/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..' } } } +