From 32090cd3b38beb8c0792771f5f43062477efafe5 Mon Sep 17 00:00:00 2001 From: Jeromy Cannon Date: Fri, 13 Oct 2023 19:01:27 +0100 Subject: [PATCH 1/8] add gradle build docker image tasks Signed-off-by: Jeromy Cannon --- build.gradle.kts | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index cecc1f3ea..baa3ae192 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,10 +14,30 @@ * limitations under the License. */ -plugins { id("com.hedera.fullstack.root") } +import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage + +plugins { + id("com.hedera.fullstack.root") + id("com.bmuschko.docker-remote-api").version("9.3.4") +} repositories { // mavenLocal() // uncomment to use local maven repository mavenCentral() gradlePluginPortal() } + +val appVersion = project.version.toString() + +fun createDockerBuildTask(taskName: String, containerName: String) { + tasks.register(taskName) { + inputDir.set(file("docker/${containerName}")) + images.add("ghcr.io/hashgraph/full-stack-testing/${containerName}:${appVersion}") + } +} + +createDockerBuildTask("buildKubectlBats", "kubectl-bats") + +createDockerBuildTask("buildUbi8InitDind", "ubi8-init-dind") + +createDockerBuildTask("buildUbi8InitJava17", "ubi8-init-java17") \ No newline at end of file From 5f80826cddd154e035653715c17e8dc4bf0b7985 Mon Sep 17 00:00:00 2001 From: Jeromy Cannon Date: Fri, 13 Oct 2023 19:27:03 +0100 Subject: [PATCH 2/8] spotlessApply Signed-off-by: Jeromy Cannon --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index baa3ae192..7a3a0ddfa 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -40,4 +40,4 @@ createDockerBuildTask("buildKubectlBats", "kubectl-bats") createDockerBuildTask("buildUbi8InitDind", "ubi8-init-dind") -createDockerBuildTask("buildUbi8InitJava17", "ubi8-init-java17") \ No newline at end of file +createDockerBuildTask("buildUbi8InitJava17", "ubi8-init-java17") From 01f93ab9e18a8c84257808d6a8d1b4370e484155 Mon Sep 17 00:00:00 2001 From: Jeromy Cannon Date: Mon, 16 Oct 2023 15:21:46 +0100 Subject: [PATCH 3/8] multi-arch support Signed-off-by: Jeromy Cannon --- build.gradle.kts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 7a3a0ddfa..4b7ca89ea 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -30,9 +30,15 @@ repositories { val appVersion = project.version.toString() fun createDockerBuildTask(taskName: String, containerName: String) { - tasks.register(taskName) { + tasks.register(taskName + "LinuxAmd64") { inputDir.set(file("docker/${containerName}")) images.add("ghcr.io/hashgraph/full-stack-testing/${containerName}:${appVersion}") + platform = "linux/amd64" + } + tasks.register(taskName + "LinuxArm64") { + inputDir.set(file("docker/${containerName}")) + images.add("ghcr.io/hashgraph/full-stack-testing/${containerName}:${appVersion}") + platform = "linux/arm64" } } From 3a65cfbb4dcd776a4aea2b102db5a7c6b759c209 Mon Sep 17 00:00:00 2001 From: Jeromy Cannon Date: Tue, 17 Oct 2023 19:17:17 +0100 Subject: [PATCH 4/8] switch to com.palantir.docker plugin for doing gradle docker build/push Signed-off-by: Jeromy Cannon --- build.gradle.kts | 23 ----------------- docker/kubectl-bats/build.gradle | 37 +++++++++++++++++++++++++++ docker/ubi8-init-dind/build.gradle | 37 +++++++++++++++++++++++++++ docker/ubi8-init-java17/build.gradle | 38 ++++++++++++++++++++++++++++ settings.gradle.kts | 23 +++++++++-------- 5 files changed, 125 insertions(+), 33 deletions(-) create mode 100644 docker/kubectl-bats/build.gradle create mode 100644 docker/ubi8-init-dind/build.gradle create mode 100644 docker/ubi8-init-java17/build.gradle diff --git a/build.gradle.kts b/build.gradle.kts index 4b7ca89ea..19961cbfa 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,8 +14,6 @@ * limitations under the License. */ -import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage - plugins { id("com.hedera.fullstack.root") id("com.bmuschko.docker-remote-api").version("9.3.4") @@ -26,24 +24,3 @@ repositories { mavenCentral() gradlePluginPortal() } - -val appVersion = project.version.toString() - -fun createDockerBuildTask(taskName: String, containerName: String) { - tasks.register(taskName + "LinuxAmd64") { - inputDir.set(file("docker/${containerName}")) - images.add("ghcr.io/hashgraph/full-stack-testing/${containerName}:${appVersion}") - platform = "linux/amd64" - } - tasks.register(taskName + "LinuxArm64") { - inputDir.set(file("docker/${containerName}")) - images.add("ghcr.io/hashgraph/full-stack-testing/${containerName}:${appVersion}") - platform = "linux/arm64" - } -} - -createDockerBuildTask("buildKubectlBats", "kubectl-bats") - -createDockerBuildTask("buildUbi8InitDind", "ubi8-init-dind") - -createDockerBuildTask("buildUbi8InitJava17", "ubi8-init-java17") diff --git a/docker/kubectl-bats/build.gradle b/docker/kubectl-bats/build.gradle new file mode 100644 index 000000000..160c4b33f --- /dev/null +++ b/docker/kubectl-bats/build.gradle @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2023 Hedera Hashgraph, LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +plugins { + id("com.palantir.docker").version("0.35.0") +} + +var repo = "ghcr.io" +var registry = "hashgraph/full-stack-testing" +var containerName = "kubectl-bats" +var appVersion = project.version.toString() + +docker { + name = "${repo}/${registry}/${containerName}:${appVersion}" + version = "${appVersion}" + buildx(true) + var isCi = System.getenv("CI") + if (isCi != null && !isCi.isEmpty()) { + platform('linux/arm64', 'linux/amd64') + push(true) + } else { + load(true) // loads the image into the local docker daemon, doesn't support multi-platform + } +} diff --git a/docker/ubi8-init-dind/build.gradle b/docker/ubi8-init-dind/build.gradle new file mode 100644 index 000000000..3a6285fd7 --- /dev/null +++ b/docker/ubi8-init-dind/build.gradle @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2023 Hedera Hashgraph, LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +plugins { + id("com.palantir.docker").version("0.35.0") +} + +var repo = "ghcr.io" +var registry = "hashgraph/full-stack-testing" +var containerName = "ubi8-init-dind" +var appVersion = project.version.toString() + +docker { + name = "${repo}/${registry}/${containerName}:${appVersion}" + version = "${appVersion}" + buildx(true) + var isCi = System.getenv("CI") + if (isCi != null && !isCi.isEmpty()) { + platform('linux/arm64', 'linux/amd64') + push(true) + } else { + load(true) // loads the image into the local docker daemon, doesn't support multi-platform + } +} diff --git a/docker/ubi8-init-java17/build.gradle b/docker/ubi8-init-java17/build.gradle new file mode 100644 index 000000000..08a02b3ea --- /dev/null +++ b/docker/ubi8-init-java17/build.gradle @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2023 Hedera Hashgraph, LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +plugins { + id("com.palantir.docker").version("0.35.0") +} + +var repo = "ghcr.io" +var registry = "hashgraph/full-stack-testing" +var containerName = "ubi8-init-java17" +var appVersion = project.version.toString() + +docker { + name = "${repo}/${registry}/${containerName}:${appVersion}" + version = "${appVersion}" + files('entrypoint.sh', 'network-node.service') + buildx(true) + var isCi = System.getenv("CI") + if (isCi != null && !isCi.isEmpty()) { + platform('linux/arm64', 'linux/amd64') + push(true) + } else { + load(true) // loads the image into the local docker daemon, doesn't support multi-platform + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 2f2ec2531..abf27cd49 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -14,28 +14,26 @@ * limitations under the License. */ -pluginManagement { - includeBuild("build-logic") - // includeBuild("fullstack-gradle-plugin") -} +pluginManagement { includeBuild("build-logic") } plugins { id("com.gradle.enterprise").version("3.14.1") id("com.hedera.fullstack.settings") - // id("com.hedera.fullstack.fullstack-gradle-plugin") -} - -dependencyResolutionManagement { - // includeBuild("fullstack-gradle-plugin") } rootProject.name = "full-stack-testing" includeBuild(".") // https://github.com/gradlex-org/java-module-dependencies/issues/26 +// Include the subprojects +include(":docker-kubectl-bats", "docker/kubectl-bats") + +include(":docker-ubi8-init-dind", "docker/ubi8-init-dind") + +include(":docker-ubi8-init-java17", "docker/ubi8-init-java17") + include(":fullstack-bom") -// Include the subprojects include(":fullstack-alerting-api") include(":fullstack-alerting-core") @@ -95,3 +93,8 @@ gradleEnterprise { } } } + +fun include(name: String, path: String) { + include(name) + project(name).projectDir = File(rootDir, path) +} From 1b42c80e28a28696ab67f897207845367d536f04 Mon Sep 17 00:00:00 2001 From: Jeromy Cannon Date: Wed, 18 Oct 2023 13:00:48 +0100 Subject: [PATCH 5/8] converted to kotlin style plugin Signed-off-by: Jeromy Cannon --- docker/kubectl-bats/build.gradle | 2 +- docker/ubi8-init-dind/build.gradle | 2 +- docker/ubi8-init-java17/build.gradle | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/kubectl-bats/build.gradle b/docker/kubectl-bats/build.gradle index 160c4b33f..1b38f5f00 100644 --- a/docker/kubectl-bats/build.gradle +++ b/docker/kubectl-bats/build.gradle @@ -15,7 +15,7 @@ */ plugins { - id("com.palantir.docker").version("0.35.0") + id("com.palantir.docker") version "0.35.0" } var repo = "ghcr.io" diff --git a/docker/ubi8-init-dind/build.gradle b/docker/ubi8-init-dind/build.gradle index 3a6285fd7..5b23f288a 100644 --- a/docker/ubi8-init-dind/build.gradle +++ b/docker/ubi8-init-dind/build.gradle @@ -15,7 +15,7 @@ */ plugins { - id("com.palantir.docker").version("0.35.0") + id("com.palantir.docker") version "0.35.0" } var repo = "ghcr.io" diff --git a/docker/ubi8-init-java17/build.gradle b/docker/ubi8-init-java17/build.gradle index 08a02b3ea..dd88ac4b7 100644 --- a/docker/ubi8-init-java17/build.gradle +++ b/docker/ubi8-init-java17/build.gradle @@ -15,7 +15,7 @@ */ plugins { - id("com.palantir.docker").version("0.35.0") + id("com.palantir.docker") version "0.35.0" } var repo = "ghcr.io" From df4f6e697622669d85d83dbe06b98bbeb9644387 Mon Sep 17 00:00:00 2001 From: Jeromy Cannon Date: Wed, 18 Oct 2023 13:03:35 +0100 Subject: [PATCH 6/8] updated to kotlin style plugin setting of version Signed-off-by: Jeromy Cannon --- build.gradle.kts | 1 - fullstack-gradle-plugin/build.gradle.kts | 2 +- settings.gradle.kts | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 19961cbfa..8823f172b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -16,7 +16,6 @@ plugins { id("com.hedera.fullstack.root") - id("com.bmuschko.docker-remote-api").version("9.3.4") } repositories { diff --git a/fullstack-gradle-plugin/build.gradle.kts b/fullstack-gradle-plugin/build.gradle.kts index 296d12db0..408ab5c29 100644 --- a/fullstack-gradle-plugin/build.gradle.kts +++ b/fullstack-gradle-plugin/build.gradle.kts @@ -16,7 +16,7 @@ plugins { id("java-gradle-plugin") - id("com.gradle.plugin-publish").version("1.2.1") + id("com.gradle.plugin-publish") version "1.2.1" id("com.hedera.fullstack.root") id("com.hedera.fullstack.conventions") id("com.hedera.fullstack.maven-publish") diff --git a/settings.gradle.kts b/settings.gradle.kts index abf27cd49..9a54d6d97 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -17,7 +17,7 @@ pluginManagement { includeBuild("build-logic") } plugins { - id("com.gradle.enterprise").version("3.14.1") + id("com.gradle.enterprise") version "3.14.1" id("com.hedera.fullstack.settings") } From 4180730215ee34de142a2b4556bc5c108252a0d1 Mon Sep 17 00:00:00 2001 From: Jeromy Cannon Date: Wed, 18 Oct 2023 14:19:38 +0100 Subject: [PATCH 7/8] spotlessApply Signed-off-by: Jeromy Cannon --- build.gradle.kts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 8823f172b..cecc1f3ea 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,9 +14,7 @@ * limitations under the License. */ -plugins { - id("com.hedera.fullstack.root") -} +plugins { id("com.hedera.fullstack.root") } repositories { // mavenLocal() // uncomment to use local maven repository From 02ad00bc3b4a9e271fd2dca5d6d0cfc17ee0f311 Mon Sep 17 00:00:00 2001 From: Jeromy Cannon Date: Wed, 18 Oct 2023 19:42:19 +0100 Subject: [PATCH 8/8] updated to switch from groovy to kotlin file name extension Signed-off-by: Jeromy Cannon --- docker/kubectl-bats/{build.gradle => build.gradle.kts} | 7 +++---- docker/ubi8-init-dind/{build.gradle => build.gradle.kts} | 7 +++---- .../ubi8-init-java17/{build.gradle => build.gradle.kts} | 9 ++++----- 3 files changed, 10 insertions(+), 13 deletions(-) rename docker/kubectl-bats/{build.gradle => build.gradle.kts} (87%) rename docker/ubi8-init-dind/{build.gradle => build.gradle.kts} (87%) rename docker/ubi8-init-java17/{build.gradle => build.gradle.kts} (83%) diff --git a/docker/kubectl-bats/build.gradle b/docker/kubectl-bats/build.gradle.kts similarity index 87% rename from docker/kubectl-bats/build.gradle rename to docker/kubectl-bats/build.gradle.kts index 1b38f5f00..40cc1cf95 100644 --- a/docker/kubectl-bats/build.gradle +++ b/docker/kubectl-bats/build.gradle.kts @@ -25,11 +25,10 @@ var appVersion = project.version.toString() docker { name = "${repo}/${registry}/${containerName}:${appVersion}" - version = "${appVersion}" + version = appVersion buildx(true) - var isCi = System.getenv("CI") - if (isCi != null && !isCi.isEmpty()) { - platform('linux/arm64', 'linux/amd64') + if (!System.getenv("CI").isNullOrEmpty()) { + platform("linux/arm64", "linux/amd64") push(true) } else { load(true) // loads the image into the local docker daemon, doesn't support multi-platform diff --git a/docker/ubi8-init-dind/build.gradle b/docker/ubi8-init-dind/build.gradle.kts similarity index 87% rename from docker/ubi8-init-dind/build.gradle rename to docker/ubi8-init-dind/build.gradle.kts index 5b23f288a..53d1192b5 100644 --- a/docker/ubi8-init-dind/build.gradle +++ b/docker/ubi8-init-dind/build.gradle.kts @@ -25,11 +25,10 @@ var appVersion = project.version.toString() docker { name = "${repo}/${registry}/${containerName}:${appVersion}" - version = "${appVersion}" + version = appVersion buildx(true) - var isCi = System.getenv("CI") - if (isCi != null && !isCi.isEmpty()) { - platform('linux/arm64', 'linux/amd64') + if (!System.getenv("CI").isNullOrEmpty()) { + platform("linux/arm64", "linux/amd64") push(true) } else { load(true) // loads the image into the local docker daemon, doesn't support multi-platform diff --git a/docker/ubi8-init-java17/build.gradle b/docker/ubi8-init-java17/build.gradle.kts similarity index 83% rename from docker/ubi8-init-java17/build.gradle rename to docker/ubi8-init-java17/build.gradle.kts index dd88ac4b7..5737a756f 100644 --- a/docker/ubi8-init-java17/build.gradle +++ b/docker/ubi8-init-java17/build.gradle.kts @@ -25,12 +25,11 @@ var appVersion = project.version.toString() docker { name = "${repo}/${registry}/${containerName}:${appVersion}" - version = "${appVersion}" - files('entrypoint.sh', 'network-node.service') + version = appVersion + files("entrypoint.sh", "network-node.service") buildx(true) - var isCi = System.getenv("CI") - if (isCi != null && !isCi.isEmpty()) { - platform('linux/arm64', 'linux/amd64') + if (!System.getenv("CI").isNullOrEmpty()) { + platform("linux/arm64", "linux/amd64") push(true) } else { load(true) // loads the image into the local docker daemon, doesn't support multi-platform