From d4aa5e61c7423b5b71a012615b37003870e782bc Mon Sep 17 00:00:00 2001 From: Suksan Date: Thu, 25 Apr 2024 16:38:27 +0700 Subject: [PATCH 01/13] Added Jenkins integration --- shopping-cart-v2/Jenkinsfile | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 shopping-cart-v2/Jenkinsfile diff --git a/shopping-cart-v2/Jenkinsfile b/shopping-cart-v2/Jenkinsfile new file mode 100644 index 000000000..4d582f7b8 --- /dev/null +++ b/shopping-cart-v2/Jenkinsfile @@ -0,0 +1,13 @@ +pipeline { + agent { node { label 'maven' } } + environment { APP_NAMESPACE = 'ebomqy-recover' } + stages { + stage('Test') { + steps { + dir('shopping-cart-v2') { + sh './mvnw clean test' + } + } + } + } +} \ No newline at end of file From 8d8970f862720dc8dcb659fe8e75f74a9219217a Mon Sep 17 00:00:00 2001 From: Suksan Date: Thu, 25 Apr 2024 16:51:44 +0700 Subject: [PATCH 02/13] Added Jenkins integration --- shopping-cart-v2/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/shopping-cart-v2/Jenkinsfile b/shopping-cart-v2/Jenkinsfile index 4d582f7b8..565c553d7 100644 --- a/shopping-cart-v2/Jenkinsfile +++ b/shopping-cart-v2/Jenkinsfile @@ -3,6 +3,7 @@ pipeline { environment { APP_NAMESPACE = 'ebomqy-recover' } stages { stage('Test') { + options { timeout(time: 50, unit: 'SECONDS') } steps { dir('shopping-cart-v2') { sh './mvnw clean test' From 3cb345d71f5d89e78cc16bca656369114bcb495f Mon Sep 17 00:00:00 2001 From: Suksan Date: Thu, 25 Apr 2024 16:56:26 +0700 Subject: [PATCH 03/13] Mocking storage --- .../integration/blackbox/ShoppingCartTest.java | 12 ++++++++++++ .../integration/whitebox/ShoppingCartTest.java | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/blackbox/ShoppingCartTest.java b/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/blackbox/ShoppingCartTest.java index 2ed91748c..47352f902 100644 --- a/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/blackbox/ShoppingCartTest.java +++ b/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/blackbox/ShoppingCartTest.java @@ -21,6 +21,18 @@ @QuarkusTest @Tag("integration") public class ShoppingCartTest { + + @BeforeAll + public static void setup() { + CatalogStorage mockStorage = Mockito.mock(InMemoryCatalogStorage.class); + Mockito.when(mockStorage.containsKey(1)).thenReturn(true); + Mockito.when(mockStorage.containsKey(2)).thenReturn(true); + Mockito.when(mockStorage.containsKey(9999)).thenReturn(false); + Mockito.when(mockStorage.get(1)).thenReturn(new Product(1, 100)); + Mockito.when(mockStorage.get(2)).thenReturn(new Product(2, 200)); + QuarkusMock.installMockForType(mockStorage, CatalogStorage.class); + } + private int randomQuantity() { return (new Random()).nextInt(10) + 1; diff --git a/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/whitebox/ShoppingCartTest.java b/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/whitebox/ShoppingCartTest.java index d1eddb753..eda9e7c13 100644 --- a/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/whitebox/ShoppingCartTest.java +++ b/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/whitebox/ShoppingCartTest.java @@ -24,6 +24,15 @@ public class ShoppingCartTest { @Inject CartService cartService; + + @BeforeAll + public static void setup() { + CatalogStorage mockStorage = Mockito.mock(InMemoryCatalogStorage.class); + Mockito.when(mockStorage.containsKey(1)).thenReturn(true); + Mockito.when(mockStorage.containsKey(9999)).thenReturn(false); + Mockito.when(mockStorage.get(1)).thenReturn(new Product(1, 100)); + QuarkusMock.installMockForType(mockStorage, CatalogStorage.class); + } @BeforeEach void clearCart() { From 5ed43166fbc2df87be239b355fad432451cfdbca Mon Sep 17 00:00:00 2001 From: Suksan Date: Thu, 25 Apr 2024 17:02:18 +0700 Subject: [PATCH 04/13] Added Image stage --- shopping-cart-v2/Jenkinsfile | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/shopping-cart-v2/Jenkinsfile b/shopping-cart-v2/Jenkinsfile index 565c553d7..9b604dce0 100644 --- a/shopping-cart-v2/Jenkinsfile +++ b/shopping-cart-v2/Jenkinsfile @@ -10,5 +10,19 @@ pipeline { } } } + stage('Build Image') { + environment { QUAY = credentials('QUAY_USER') } + steps { + dir('shopping-cart-v2') { + sh './scripts/include-container-extensions.sh' + sh ''' + ./scripts/build-and-push-image.sh \ + -u $QUAY_USR \ + -p $QUAY_PSW \ + -b $BUILD_NUMBER + ''' + } + } + } } } \ No newline at end of file From e489779021530916be2fa04ec734e62a6022b07e Mon Sep 17 00:00:00 2001 From: Suksan Date: Thu, 25 Apr 2024 17:07:02 +0700 Subject: [PATCH 05/13] Mocking storage --- shopping-cart-v2/Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/shopping-cart-v2/Jenkinsfile b/shopping-cart-v2/Jenkinsfile index 9b604dce0..ec9286628 100644 --- a/shopping-cart-v2/Jenkinsfile +++ b/shopping-cart-v2/Jenkinsfile @@ -3,7 +3,6 @@ pipeline { environment { APP_NAMESPACE = 'ebomqy-recover' } stages { stage('Test') { - options { timeout(time: 50, unit: 'SECONDS') } steps { dir('shopping-cart-v2') { sh './mvnw clean test' From d9ab34baab059689fa4bacf57ccb2619705c7705 Mon Sep 17 00:00:00 2001 From: Suksan Date: Thu, 25 Apr 2024 17:19:16 +0700 Subject: [PATCH 06/13] Mocking storage --- shopping-cart-v2/Jenkinsfile | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/shopping-cart-v2/Jenkinsfile b/shopping-cart-v2/Jenkinsfile index ec9286628..ea3d54162 100644 --- a/shopping-cart-v2/Jenkinsfile +++ b/shopping-cart-v2/Jenkinsfile @@ -3,9 +3,11 @@ pipeline { environment { APP_NAMESPACE = 'ebomqy-recover' } stages { stage('Test') { + //options { timeout(time: 50, unit: 'SECONDS') } steps { dir('shopping-cart-v2') { - sh './mvnw clean test' + //sh './mvnw clean test' + echo "Test Finished" } } } @@ -23,5 +25,23 @@ pipeline { } } } + stage('Deploy') { + environment { QUAY = credentials('QUAY_USER') } + steps { + dir('shopping-cart-v2') { + script { + def status = sh( + script: "./scripts/tag-exists-in-quay.sh $QUAY_USR/do400-recover latest", + returnStatus: true + ) + if (status != 0) { + error("Tag not found in Quay!") + } + } + sh './scripts/redeploy.sh $APP_NAMESPACE' + } + } + } + } } \ No newline at end of file From 83226127210608084fd8455a7a649fc9e1aa55ba Mon Sep 17 00:00:00 2001 From: Suksan Date: Thu, 25 Apr 2024 17:34:22 +0700 Subject: [PATCH 07/13] Mocking storage --- shopping-cart-v2/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shopping-cart-v2/Jenkinsfile b/shopping-cart-v2/Jenkinsfile index ea3d54162..b18f76edb 100644 --- a/shopping-cart-v2/Jenkinsfile +++ b/shopping-cart-v2/Jenkinsfile @@ -31,7 +31,7 @@ pipeline { dir('shopping-cart-v2') { script { def status = sh( - script: "./scripts/tag-exists-in-quay.sh $QUAY_USR/do400-recover latest", + script: "./scripts/tag-exists-in-quay.sh $QUAY_USER/do400-recover latest", returnStatus: true ) if (status != 0) { From f6150885852fe3704427671e5d801fafe1ae3405 Mon Sep 17 00:00:00 2001 From: Suksan Date: Thu, 25 Apr 2024 17:42:05 +0700 Subject: [PATCH 08/13] Mocking storage --- shopping-cart-v2/Jenkinsfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/shopping-cart-v2/Jenkinsfile b/shopping-cart-v2/Jenkinsfile index b18f76edb..8ab2eaea9 100644 --- a/shopping-cart-v2/Jenkinsfile +++ b/shopping-cart-v2/Jenkinsfile @@ -6,8 +6,7 @@ pipeline { //options { timeout(time: 50, unit: 'SECONDS') } steps { dir('shopping-cart-v2') { - //sh './mvnw clean test' - echo "Test Finished" + sh './mvnw clean test' } } } @@ -31,7 +30,7 @@ pipeline { dir('shopping-cart-v2') { script { def status = sh( - script: "./scripts/tag-exists-in-quay.sh $QUAY_USER/do400-recover latest", + script: "./scripts/tag-exists-in-quay.sh $QUAY_USR/do400-recover latest", returnStatus: true ) if (status != 0) { From 2892f6cd8ba82e9361c6409b99d56febcac7ad6c Mon Sep 17 00:00:00 2001 From: Suksan Date: Fri, 26 Apr 2024 10:46:46 +0700 Subject: [PATCH 09/13] Added Image Stage 2 --- .../shopping/integration/blackbox/ShoppingCartTest.java | 4 +++- .../shopping/integration/whitebox/ShoppingCartTest.java | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/blackbox/ShoppingCartTest.java b/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/blackbox/ShoppingCartTest.java index 47352f902..7bcb4a27b 100644 --- a/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/blackbox/ShoppingCartTest.java +++ b/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/blackbox/ShoppingCartTest.java @@ -25,15 +25,17 @@ public class ShoppingCartTest { @BeforeAll public static void setup() { CatalogStorage mockStorage = Mockito.mock(InMemoryCatalogStorage.class); + Mockito.when(mockStorage.containsKey(1)).thenReturn(true); Mockito.when(mockStorage.containsKey(2)).thenReturn(true); Mockito.when(mockStorage.containsKey(9999)).thenReturn(false); + Mockito.when(mockStorage.get(1)).thenReturn(new Product(1, 100)); Mockito.when(mockStorage.get(2)).thenReturn(new Product(2, 200)); + QuarkusMock.installMockForType(mockStorage, CatalogStorage.class); } - private int randomQuantity() { return (new Random()).nextInt(10) + 1; } diff --git a/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/whitebox/ShoppingCartTest.java b/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/whitebox/ShoppingCartTest.java index eda9e7c13..62872c4bd 100644 --- a/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/whitebox/ShoppingCartTest.java +++ b/shopping-cart-v2/src/test/java/com/redhat/shopping/integration/whitebox/ShoppingCartTest.java @@ -28,9 +28,12 @@ public class ShoppingCartTest { @BeforeAll public static void setup() { CatalogStorage mockStorage = Mockito.mock(InMemoryCatalogStorage.class); + Mockito.when(mockStorage.containsKey(1)).thenReturn(true); Mockito.when(mockStorage.containsKey(9999)).thenReturn(false); + Mockito.when(mockStorage.get(1)).thenReturn(new Product(1, 100)); + QuarkusMock.installMockForType(mockStorage, CatalogStorage.class); } From f5db91477ba3cbe5b505023f78e972ad8eb19113 Mon Sep 17 00:00:00 2001 From: Suksan Date: Fri, 26 Apr 2024 11:00:16 +0700 Subject: [PATCH 10/13] Added Image Stage 2 --- shopping-cart-v2/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shopping-cart-v2/Jenkinsfile b/shopping-cart-v2/Jenkinsfile index 8ab2eaea9..56f985631 100644 --- a/shopping-cart-v2/Jenkinsfile +++ b/shopping-cart-v2/Jenkinsfile @@ -30,7 +30,7 @@ pipeline { dir('shopping-cart-v2') { script { def status = sh( - script: "./scripts/tag-exists-in-quay.sh $QUAY_USR/do400-recover latest", + script: "./scripts/tag-exists-in-quay.sh ${QUAY_USR}/do400-recover latest", returnStatus: true ) if (status != 0) { From 7f8d1c09f65f3f1a2ea6757ac36557d711ed007d Mon Sep 17 00:00:00 2001 From: Suksan Date: Fri, 26 Apr 2024 11:08:33 +0700 Subject: [PATCH 11/13] Added Image Stage 2 --- shopping-cart-v2/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shopping-cart-v2/Jenkinsfile b/shopping-cart-v2/Jenkinsfile index 56f985631..c8c4e264c 100644 --- a/shopping-cart-v2/Jenkinsfile +++ b/shopping-cart-v2/Jenkinsfile @@ -30,7 +30,7 @@ pipeline { dir('shopping-cart-v2') { script { def status = sh( - script: "./scripts/tag-exists-in-quay.sh ${QUAY_USR}/do400-recover latest", + script: "./scripts/tag-exists-in-quay.sh suksan_toja/do400-recover latest", returnStatus: true ) if (status != 0) { From ce2f92de701ed15d1f10e14d4303c3d783bac2aa Mon Sep 17 00:00:00 2001 From: Suksan Date: Fri, 26 Apr 2024 11:15:48 +0700 Subject: [PATCH 12/13] Added Image Stage 2 --- shopping-cart-v2/Jenkinsfile | 2 +- shopping-cart-v2/scripts/tag-exists-in-quay.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/shopping-cart-v2/Jenkinsfile b/shopping-cart-v2/Jenkinsfile index c8c4e264c..8ab2eaea9 100644 --- a/shopping-cart-v2/Jenkinsfile +++ b/shopping-cart-v2/Jenkinsfile @@ -30,7 +30,7 @@ pipeline { dir('shopping-cart-v2') { script { def status = sh( - script: "./scripts/tag-exists-in-quay.sh suksan_toja/do400-recover latest", + script: "./scripts/tag-exists-in-quay.sh $QUAY_USR/do400-recover latest", returnStatus: true ) if (status != 0) { diff --git a/shopping-cart-v2/scripts/tag-exists-in-quay.sh b/shopping-cart-v2/scripts/tag-exists-in-quay.sh index 87f5fa0b0..7988d980b 100755 --- a/shopping-cart-v2/scripts/tag-exists-in-quay.sh +++ b/shopping-cart-v2/scripts/tag-exists-in-quay.sh @@ -1,7 +1,7 @@ #!/bin/bash function tag_exists() { - curl -sfSL https://quay.io/v1/repositories/$1/tags/$2 &> /dev/null + curl -sfSL https://quay.io/repositories/$1/tags/$2 &> /dev/null } echo "Checking the existence of the tag $2 in the repository $1" From 0bb496e5c10fb60bcf46109f1d9a2ebdd108e879 Mon Sep 17 00:00:00 2001 From: Suksan Date: Fri, 26 Apr 2024 11:28:49 +0700 Subject: [PATCH 13/13] Added Image Stage 2 --- shopping-cart-v2/scripts/tag-exists-in-quay.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shopping-cart-v2/scripts/tag-exists-in-quay.sh b/shopping-cart-v2/scripts/tag-exists-in-quay.sh index 7988d980b..87f5fa0b0 100755 --- a/shopping-cart-v2/scripts/tag-exists-in-quay.sh +++ b/shopping-cart-v2/scripts/tag-exists-in-quay.sh @@ -1,7 +1,7 @@ #!/bin/bash function tag_exists() { - curl -sfSL https://quay.io/repositories/$1/tags/$2 &> /dev/null + curl -sfSL https://quay.io/v1/repositories/$1/tags/$2 &> /dev/null } echo "Checking the existence of the tag $2 in the repository $1"