From e1bd56fc84b4ba5ec8f093d9a5162cc2ffc559a5 Mon Sep 17 00:00:00 2001 From: Christian Melchior Date: Thu, 18 Jun 2020 18:28:23 +0200 Subject: [PATCH 1/9] Attempt to fix CI cache --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index d2a1eecd86..20bc4947e2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,7 +58,7 @@ try { stage('Prepare Docker Images') { // TODO Should be renamed to 'master' when merged there. // TODO Figure out why caching the image doesn't work. - buildEnv = buildDockerEnv("realm-java-ci:v10", push: currentBranch == 'v10') + buildEnv = buildDockerEnv("ci/realm-java:v10", push: currentBranch == 'cm/bug/ci-cache') def props = readProperties file: 'dependencies.list' echo "Version in dependencies.list: ${props.MONGODB_REALM_SERVER_VERSION}" def mdbRealmImage = docker.image("docker.pkg.github.com/realm/ci/mongodb-realm-test-server:${props.MONGODB_REALM_SERVER_VERSION}") From 38f699dae865dd8bf502355633d179bd47ddcc23 Mon Sep 17 00:00:00 2001 From: Christian Melchior Date: Thu, 18 Jun 2020 18:52:01 +0200 Subject: [PATCH 2/9] Only cache from v10 branch --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 20bc4947e2..d68e99f42d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,7 +58,7 @@ try { stage('Prepare Docker Images') { // TODO Should be renamed to 'master' when merged there. // TODO Figure out why caching the image doesn't work. - buildEnv = buildDockerEnv("ci/realm-java:v10", push: currentBranch == 'cm/bug/ci-cache') + buildEnv = buildDockerEnv("ci/realm-java:v10", push: currentBranch == 'v10') def props = readProperties file: 'dependencies.list' echo "Version in dependencies.list: ${props.MONGODB_REALM_SERVER_VERSION}" def mdbRealmImage = docker.image("docker.pkg.github.com/realm/ci/mongodb-realm-test-server:${props.MONGODB_REALM_SERVER_VERSION}") From dfd7e70a1547dcc491df2d4c77af9a975a28b7dc Mon Sep 17 00:00:00 2001 From: Christian Melchior Date: Thu, 18 Jun 2020 19:28:59 +0200 Subject: [PATCH 3/9] ECR repository should now exist. --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index d68e99f42d..20bc4947e2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,7 +58,7 @@ try { stage('Prepare Docker Images') { // TODO Should be renamed to 'master' when merged there. // TODO Figure out why caching the image doesn't work. - buildEnv = buildDockerEnv("ci/realm-java:v10", push: currentBranch == 'v10') + buildEnv = buildDockerEnv("ci/realm-java:v10", push: currentBranch == 'cm/bug/ci-cache') def props = readProperties file: 'dependencies.list' echo "Version in dependencies.list: ${props.MONGODB_REALM_SERVER_VERSION}" def mdbRealmImage = docker.image("docker.pkg.github.com/realm/ci/mongodb-realm-test-server:${props.MONGODB_REALM_SERVER_VERSION}") From 6bad4ee56153897f0833062e36ba992a7299a099 Mon Sep 17 00:00:00 2001 From: Christian Melchior Date: Fri, 19 Jun 2020 07:35:05 +0200 Subject: [PATCH 4/9] Only cache from v10 branch --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 20bc4947e2..d68e99f42d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,7 +58,7 @@ try { stage('Prepare Docker Images') { // TODO Should be renamed to 'master' when merged there. // TODO Figure out why caching the image doesn't work. - buildEnv = buildDockerEnv("ci/realm-java:v10", push: currentBranch == 'cm/bug/ci-cache') + buildEnv = buildDockerEnv("ci/realm-java:v10", push: currentBranch == 'v10') def props = readProperties file: 'dependencies.list' echo "Version in dependencies.list: ${props.MONGODB_REALM_SERVER_VERSION}" def mdbRealmImage = docker.image("docker.pkg.github.com/realm/ci/mongodb-realm-test-server:${props.MONGODB_REALM_SERVER_VERSION}") From c6c96dd3a6c375f2f8ea2f1f6cf5f4a054f96327 Mon Sep 17 00:00:00 2001 From: Christian Melchior Date: Fri, 19 Jun 2020 07:39:37 +0200 Subject: [PATCH 5/9] Back to creating cache --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index d68e99f42d..20bc4947e2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,7 +58,7 @@ try { stage('Prepare Docker Images') { // TODO Should be renamed to 'master' when merged there. // TODO Figure out why caching the image doesn't work. - buildEnv = buildDockerEnv("ci/realm-java:v10", push: currentBranch == 'v10') + buildEnv = buildDockerEnv("ci/realm-java:v10", push: currentBranch == 'cm/bug/ci-cache') def props = readProperties file: 'dependencies.list' echo "Version in dependencies.list: ${props.MONGODB_REALM_SERVER_VERSION}" def mdbRealmImage = docker.image("docker.pkg.github.com/realm/ci/mongodb-realm-test-server:${props.MONGODB_REALM_SERVER_VERSION}") From ddbf31206613acf41fc21bceaf4f3dee2bffc3db Mon Sep 17 00:00:00 2001 From: Christian Melchior Date: Fri, 19 Jun 2020 07:53:15 +0200 Subject: [PATCH 6/9] Debug remote function --- Jenkinsfile | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 20bc4947e2..945be88167 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,7 +58,7 @@ try { stage('Prepare Docker Images') { // TODO Should be renamed to 'master' when merged there. // TODO Figure out why caching the image doesn't work. - buildEnv = buildDockerEnv("ci/realm-java:v10", push: currentBranch == 'cm/bug/ci-cache') + buildEnv = dockerBuild("ci/realm-java:v10", push: currentBranch == 'cm/bug/ci-cache') def props = readProperties file: 'dependencies.list' echo "Version in dependencies.list: ${props.MONGODB_REALM_SERVER_VERSION}" def mdbRealmImage = docker.image("docker.pkg.github.com/realm/ci/mongodb-realm-test-server:${props.MONGODB_REALM_SERVER_VERSION}") @@ -354,3 +354,36 @@ def gradle(String commands) { def gradle(String relativePath, String commands) { sh "cd ${relativePath} && chmod +x gradlew && ./gradlew ${commands} --stacktrace" } + +def dockerBuild(Map args=[:], String name) { + def extra_args = args.get('extra_args', '') + def directory = args.get('directory', '.') + def imageName = args.get('name', name) + def push = args.get('push', false) + + def getImageId = { i -> + return sh(script: "docker images -q ${i}", returnStdout: true, label: 'Lookup Docker image ID') + } + + def image = null + + docker.withRegistry("https://${env.DOCKER_REGISTRY}", "ecr:eu-west-1:aws-ci-user") { + def remoteName = "${env.DOCKER_REGISTRY}/${imageName}" + echo "RemoteName: ${remoteName}" + try { + docker.image(remoteName).pull() + extra_args += " --cache-from \"${remoteName}\"" + } catch(e) {} + echo "extraArgs: ${extra_args}" + def oldId = getImageId(imageName) + echo "oldId: ${oldId}" + + def args = "--cache-from \"${imageName}\" ${extra_args} ${directory}" + echo "args: ${args}" + image = docker.build(imageName, ) + if (push && getImageId(image.imageName()) != oldId) { + image.push(remoteName) + } + } + return image +} \ No newline at end of file From 6bb57b1f7614b627ac6f7b5694ab6e343a802438 Mon Sep 17 00:00:00 2001 From: Christian Melchior Date: Fri, 19 Jun 2020 07:55:53 +0200 Subject: [PATCH 7/9] Fix build --- Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 945be88167..784445199d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -378,9 +378,9 @@ def dockerBuild(Map args=[:], String name) { def oldId = getImageId(imageName) echo "oldId: ${oldId}" - def args = "--cache-from \"${imageName}\" ${extra_args} ${directory}" - echo "args: ${args}" - image = docker.build(imageName, ) + def buildArgs = "--cache-from \"${imageName}\" ${extra_args} ${directory}" + echo "buildArgs: ${args}" + image = docker.build(imageName, buildArgs) if (push && getImageId(image.imageName()) != oldId) { image.push(remoteName) } From 53e0e3eeaa353dbd98de5f9ed76aedebdf485f5e Mon Sep 17 00:00:00 2001 From: Christian Melchior Date: Fri, 19 Jun 2020 08:00:11 +0200 Subject: [PATCH 8/9] Print proper debug info --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 784445199d..736ce2e3bb 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -379,7 +379,7 @@ def dockerBuild(Map args=[:], String name) { echo "oldId: ${oldId}" def buildArgs = "--cache-from \"${imageName}\" ${extra_args} ${directory}" - echo "buildArgs: ${args}" + echo "buildArgs: ${buildArgs}" image = docker.build(imageName, buildArgs) if (push && getImageId(image.imageName()) != oldId) { image.push(remoteName) From 32b4306db4fa8b02d40510496b3e539d3eea51a9 Mon Sep 17 00:00:00 2001 From: Christian Melchior Date: Mon, 22 Jun 2020 08:07:53 +0200 Subject: [PATCH 9/9] Only push from v10 --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 736ce2e3bb..93daf84bec 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,7 +58,7 @@ try { stage('Prepare Docker Images') { // TODO Should be renamed to 'master' when merged there. // TODO Figure out why caching the image doesn't work. - buildEnv = dockerBuild("ci/realm-java:v10", push: currentBranch == 'cm/bug/ci-cache') + buildEnv = dockerBuild("ci/realm-java:v10", push: currentBranch == 'v10') def props = readProperties file: 'dependencies.list' echo "Version in dependencies.list: ${props.MONGODB_REALM_SERVER_VERSION}" def mdbRealmImage = docker.image("docker.pkg.github.com/realm/ci/mongodb-realm-test-server:${props.MONGODB_REALM_SERVER_VERSION}")