From e9efe1ab8f2b76c18e86e9a93b9c22afe5f948b6 Mon Sep 17 00:00:00 2001 From: Mali Bayhan Date: Fri, 10 Dec 2021 09:58:35 -0800 Subject: [PATCH] master- Sync Repo --- jenkins/cd/Jenkinsfile | 20 +++++---- jenkins/without-cd/Jenkinsfile-build | 27 ------------- jenkins/without-cd/Jenkinsfile-deploy | 38 ------------------ target/classes/application.yml | 2 + .../kreuzwerker/cdc/messagingapp/Friend.class | Bin 0 -> 356 bytes .../messagingapp/MessagingApplication.class | Bin 0 -> 778 bytes .../kreuzwerker/cdc/messagingapp/User.class | Bin 0 -> 518 bytes .../cdc/messagingapp/UserServiceClient.class | Bin 0 -> 1422 bytes .../MessagingApplicationTests.class | Bin 0 -> 576 bytes .../UserServiceContractTest.class | Bin 0 -> 7344 bytes .../UserServiceContractTestV1.class | Bin 0 -> 4109 bytes ...enericStateWithParameterContractTest.class | Bin 0 -> 7446 bytes 12 files changed, 15 insertions(+), 72 deletions(-) delete mode 100644 jenkins/without-cd/Jenkinsfile-build delete mode 100644 jenkins/without-cd/Jenkinsfile-deploy create mode 100644 target/classes/application.yml create mode 100644 target/classes/de/kreuzwerker/cdc/messagingapp/Friend.class create mode 100644 target/classes/de/kreuzwerker/cdc/messagingapp/MessagingApplication.class create mode 100644 target/classes/de/kreuzwerker/cdc/messagingapp/User.class create mode 100644 target/classes/de/kreuzwerker/cdc/messagingapp/UserServiceClient.class create mode 100644 target/test-classes/de/kreuzwerker/cdc/messagingapp/MessagingApplicationTests.class create mode 100644 target/test-classes/de/kreuzwerker/cdc/messagingapp/UserServiceContractTest.class create mode 100644 target/test-classes/de/kreuzwerker/cdc/messagingapp/UserServiceContractTestV1.class create mode 100644 target/test-classes/de/kreuzwerker/cdc/messagingapp/UserServiceGenericStateWithParameterContractTest.class diff --git a/jenkins/cd/Jenkinsfile b/jenkins/cd/Jenkinsfile index af03390..36d37a0 100644 --- a/jenkins/cd/Jenkinsfile +++ b/jenkins/cd/Jenkinsfile @@ -1,24 +1,31 @@ #!groovy -pipeline { +def MAVEN_IMAGE = 'maven:3.8.2-openjdk-11-slim' - agent any +pipeline { + // agent any + + agent { + docker { + image "${MAVEN_IMAGE}" + } + } environment { - BRANCH_NAME=env.GIT_BRANCH.replace("origin/", "") + BRANCH_NAME = env.GIT_BRANCH.replace('origin/', '') } stages { stage('Build') { steps { dir('messaging-app') { - sh '../mvnw clean verify' + sh '../mvnw clean verify' } } } stage('Publish Pacts') { steps { dir('messaging-app') { - sh '../mvnw pact:publish -Dpact.consumer.version=${GIT_COMMIT} -Dpact.tag=${BRANCH_NAME}' + sh '../mvnw pact:publish -Dpact.consumer.version=${GIT_COMMIT} -Dpact.tag=${BRANCH_NAME}' } } } @@ -40,5 +47,4 @@ pipeline { } } } - -} \ No newline at end of file +} diff --git a/jenkins/without-cd/Jenkinsfile-build b/jenkins/without-cd/Jenkinsfile-build deleted file mode 100644 index 6a97182..0000000 --- a/jenkins/without-cd/Jenkinsfile-build +++ /dev/null @@ -1,27 +0,0 @@ -#!groovy -pipeline { - - agent any - - environment { - BRANCH_NAME=env.GIT_BRANCH.replace("origin/", "") - } - - stages { - stage('Build') { - steps { - dir('messaging-app') { - sh '../mvnw clean verify' - } - } - } - stage('Publish Pacts') { - steps { - dir('messaging-app') { - sh '../mvnw pact:publish -Dpact.consumer.version=${GIT_COMMIT} -Dpact.tag=${BRANCH_NAME}' - } - } - } - } - -} \ No newline at end of file diff --git a/jenkins/without-cd/Jenkinsfile-deploy b/jenkins/without-cd/Jenkinsfile-deploy deleted file mode 100644 index c1ed3ca..0000000 --- a/jenkins/without-cd/Jenkinsfile-deploy +++ /dev/null @@ -1,38 +0,0 @@ -#!groovy -pipeline { - - agent any - - parameters { - string(name: 'GIT_COMMIT', defaultValue: '', description: 'Version (a.k.a. git commit) to deploy') - } - - options { - skipDefaultCheckout() - } - - stages { - stage('Check Pact Verifications') { - steps { - sh 'curl -LO https://github.com/pact-foundation/pact-ruby-standalone/releases/download/v1.88.3/pact-1.88.3-linux-x86_64.tar.gz' - sh 'tar xzf pact-1.88.3-linux-x86_64.tar.gz' - dir('pact/bin') { - sh "./pact-broker can-i-deploy -a messaging-app -b http://pact_broker -e ${GIT_COMMIT} --to prod" - } - } - } - stage('Deploy') { - steps { - echo 'Deploying to prod now...' - } - } - stage('Tag Pact') { - steps { - dir('pact/bin') { - sh "./pact-broker create-version-tag -a messaging-app -b http://pact_broker -e ${GIT_COMMIT} -t prod" - } - } - } - } - -} \ No newline at end of file diff --git a/target/classes/application.yml b/target/classes/application.yml new file mode 100644 index 0000000..4d30c5d --- /dev/null +++ b/target/classes/application.yml @@ -0,0 +1,2 @@ +user-service: + base-url: "http://localhost:8090" \ No newline at end of file diff --git a/target/classes/de/kreuzwerker/cdc/messagingapp/Friend.class b/target/classes/de/kreuzwerker/cdc/messagingapp/Friend.class new file mode 100644 index 0000000000000000000000000000000000000000..d8f2be19e379320068bb43a30e4f3da3c32c71ed GIT binary patch literal 356 zcma)2yH3ME5S(=!8yrJ|`2rdgD7c0WL=!2M1w~N$v%NBx_z|6LkoYSqBnm!&k3y^+ zBwBRR&hG5&-rRkCe|!SC#;Fg7aGtT+TJBz7*lyXXG)q;zayu2WsCwKaYHOSV4u2;zqu} uku!!jWd4989dRWw5LOA2;P~<#lea;3B+(m4566;+djY1HNkuprRM8I_<4<7# literal 0 HcmV?d00001 diff --git a/target/classes/de/kreuzwerker/cdc/messagingapp/MessagingApplication.class b/target/classes/de/kreuzwerker/cdc/messagingapp/MessagingApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..ee6f530b8f754f5f427577472489161fb7e83cc5 GIT binary patch literal 778 zcmbVKO;g)25Pb>>4kj%SC@uXs^cHeJ7lunZ%s^&(GHs_}(nC+OBaDbGd1M(n{Z~D~ z^w1x`k78K4bdrNlJ$ToZyEK89p zorIbEjJ7!oJ>`ximV>6Q>Ry*It@KX}6Bb5Pf?boFEF~C#8uoO5rwELTEHp7cD^g@Y2v@KGO_Rn_@j(- z3yFyh&Fs8+Z)e`le*b)a0k}rjgTrtZO1{vtczcz4AvF)efG0A~MWoV5ESLN-m)e8N z(4LDI!DEp|{9!hifnjh{kw}J)|3{6Dri*>zbQTj=k40|$jJh#&S308-$^9%4@trVo zLWtzvlU6bfbDFbK6-LF}SGggwK2}jGOrfda%|CkJZ+gMVcJ2?UQEi}7Wrhrui_0l_ zyv;({Kn0y9cF|&J`6`w7MKY6mB4(xkjx{EEjd51!K#r8% zNLjopH-=M?6Z#An4yve8=D=H@Tc}&yz&5FxHs7I)l};(PslqJ=s=W{Fy<5pX#Tu1C U*AFN*ZC=G8jtDUvQ*?0h3*hN~IsgCw literal 0 HcmV?d00001 diff --git a/target/classes/de/kreuzwerker/cdc/messagingapp/UserServiceClient.class b/target/classes/de/kreuzwerker/cdc/messagingapp/UserServiceClient.class new file mode 100644 index 0000000000000000000000000000000000000000..01706bd2a9f0b0ff4aeabbeaff9f1a93e003d2c4 GIT binary patch literal 1422 zcmb7ETTc@~6#j954)K&Ip_P%7emT=ocpTPAxgo{$QerQDm7cNv?NfhXwwMO zmSLQABb&6X%~rTgwJ_?ygfD(`F9{6YRf)3q1g7$peef0Q;!B09z}$;0v8qW`m8x1y z&!q#kWF91mw$dt{qykGlS!*PdG+dXF)#gnoe+7h98E3@ggKc*ZIC=41#`PBYa|JKf zWJ<-%#P0!hE48-a$ecfxv7IgBTJRtEhyYX3ZLzRmqYNn5gJT##L#Qv%8lAc0;i=ZdML0 zbykMwB(P>;hy9lC>tKy@wQ zMbmMc>OrKNEye4`+7DVrbIHx+z#m!Npnz9{^9neZr@SWlLZH$hOX{@FEvpCX+60!p z?3)$^E?M8l0R`urV9k;75Gd5Hn`0cPfRF*?78W3T!@ z!*LOp*kT}D#uaAB^LbFP;j$@U zp4}YZ5<@sXe-8_TWe)(1O z(=<_`aLVYR%v@GSm7y~h_kt%v$NV}N%g`|_oG7i_DMMvvcf?RVH<4_hf~6K}SYT-T zO3SN!8b~`7K_VHtz6nJ#5>^%UyjgX3Dr4yR|6Z`i&d{b|ZU;RnM}DVC*{OuV&X zDrd${cwmgjr`{SM&Ki|nFUr;1Z%lxus>SbQqs2E_sf5tY+VnbxIzvUt)y+7HR$vA>T?7535A?(EXNK13my&W{$W3 literal 0 HcmV?d00001 diff --git a/target/test-classes/de/kreuzwerker/cdc/messagingapp/UserServiceContractTest.class b/target/test-classes/de/kreuzwerker/cdc/messagingapp/UserServiceContractTest.class new file mode 100644 index 0000000000000000000000000000000000000000..4c211d24bf051430c21fe7a35a1d9eb61bb88419 GIT binary patch literal 7344 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 literal 0 HcmV?d00001 diff --git a/target/test-classes/de/kreuzwerker/cdc/messagingapp/UserServiceContractTestV1.class b/target/test-classes/de/kreuzwerker/cdc/messagingapp/UserServiceContractTestV1.class new file mode 100644 index 0000000000000000000000000000000000000000..c3e1b35adab6ae6eb51c34486100ef7271a7cc88 GIT binary patch literal 4109 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