Skip to content

Commit

Permalink
feat: add helm execution gradle task: HelmInstallChartTask (#304)
Browse files Browse the repository at this point in the history
Signed-off-by: Jeromy Cannon <[email protected]>
  • Loading branch information
jeromy-cannon authored Oct 4, 2023
1 parent 05444df commit 6a29222
Show file tree
Hide file tree
Showing 18 changed files with 459 additions and 36 deletions.
28 changes: 28 additions & 0 deletions .github/workflows/zxc-compile-code.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -163,13 +163,31 @@ jobs:
gradle-version: ${{ inputs.gradle-version }}
arguments: assemble --scan

- name: Examples Compile
id: gradle-build-examples
uses: gradle/gradle-build-action@243af859f8ca30903d9d7f7936897ca0358ba691 # v2.7.1
with:
gradle-version: ${{ inputs.gradle-version }}
arguments: assemble --scan
build-root-directory: fullstack-examples
gradle-executable: gradlew

- name: Spotless Check
uses: gradle/gradle-build-action@243af859f8ca30903d9d7f7936897ca0358ba691 # v2.7.1
if: ${{ inputs.enable-spotless-check && steps.gradle-build.conclusion == 'success' && !cancelled() }}
with:
gradle-version: ${{ inputs.gradle-version }}
arguments: spotlessCheck --scan

- name: Examples Spotless Check
uses: gradle/gradle-build-action@243af859f8ca30903d9d7f7936897ca0358ba691 # v2.7.1
if: ${{ inputs.enable-spotless-check && steps.gradle-build-examples.conclusion == 'success' && !cancelled() }}
with:
gradle-version: ${{ inputs.gradle-version }}
arguments: spotlessCheck --scan
build-root-directory: fullstack-examples
gradle-executable: gradlew

- name: Unit Tests
id: gradle-test
uses: gradle/gradle-build-action@243af859f8ca30903d9d7f7936897ca0358ba691 # v2.7.1
Expand All @@ -178,6 +196,16 @@ jobs:
gradle-version: ${{ inputs.gradle-version }}
arguments: check --scan

- name: Examples Unit Tests
id: gradle-test-examples
uses: gradle/gradle-build-action@243af859f8ca30903d9d7f7936897ca0358ba691 # v2.7.1
if: ${{ inputs.enable-unit-tests && steps.gradle-build-examples.conclusion == 'success' && !cancelled() && !failure() }}
with:
gradle-version: ${{ inputs.gradle-version }}
arguments: check --scan
build-root-directory: fullstack-examples
gradle-executable: gradlew

- name: Publish Unit Test Report
uses: actionite/publish-unit-test-result-action@1e01e49081c6c4073913aa4b7980fa83e709f322 # v2.3.0
if: ${{ inputs.enable-unit-tests && steps.gradle-build.conclusion == 'success' && !cancelled() && !failure() }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ plugins {
}

javaModuleDependencies {
versionsFromConsistentResolution(":fullstack-helm-client")

moduleNameToGA.put("com.hedera.fullstack.junit.support", "com.hedera.fullstack:fullstack-junit-support")
moduleNameToGA.put("com.hedera.fullstack.test.toolkit", "com.hedera.fullstack:fullstack-test-toolkit")
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/*
* Copyright 2023 Hedera Hashgraph, LLC
*
* This software is the confidential and proprietary information of
* Hedera Hashgraph, LLC. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into
* with Hedera Hashgraph.
*
* HEDERA HASHGRAPH MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
* THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE, OR NON-INFRINGEMENT. HEDERA HASHGRAPH SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
*/

plugins {
id("com.autonomousapps.dependency-analysis")
id("com.hedera.fullstack.aggregate-reports")
id("com.hedera.fullstack.spotless-conventions")
id("com.hedera.fullstack.spotless-kotlin-conventions")
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,15 @@
* limitations under the License.
*/

package com.hedera.fullstack.gradle.plugin;
plugins {
`kotlin-dsl`
}

public class Dummy {}
repositories {
gradlePluginPortal()
mavenCentral()
}

dependencies {
implementation("com.gradle:gradle-enterprise-gradle-plugin:3.14.1")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/*
* 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.
*/

pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral()
}
}

plugins {
id("com.gradle.enterprise")
}

// Enable Gradle Build Scan
gradleEnterprise {
buildScan {
termsOfServiceUrl = "https://gradle.com/terms-of-service"
termsOfServiceAgree = "yes"

if (!System.getenv("CI").isNullOrEmpty()) {
publishAlways()
tag("CI")
}
}
}

// Allow projects inside a build to be addressed by dependency coordinates notation.
// https://docs.gradle.org/current/userguide/composite_builds.html#included_build_declaring_substitutions
// Some functionality of the 'java-module-dependencies' plugin relies on this.
includeBuild(".")
23 changes: 17 additions & 6 deletions build-logic/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@

//dependencyResolutionManagement {
// repositories {
// gradlePluginPortal()
// }
//}
/*
* 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.
*/

includeBuild("project-plugins")

includeBuild("settings-plugins")
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

plugins { id("com.hedera.fullstack.umbrella") }
plugins { id("com.hedera.fullstack.root") }

repositories {
// mavenLocal() // uncomment to use local maven repository
Expand Down
41 changes: 30 additions & 11 deletions fullstack-examples/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,41 @@
* limitations under the License.
*/

import com.hedera.fullstack.gradle.plugin.HelmInstallChartTask

plugins {
id("java")
id("com.hedera.fullstack.root")
id("com.hedera.fullstack.conventions")
id("com.hedera.fullstack.jpms-modules")
id("com.hedera.fullstack.fullstack-gradle-plugin")
}

dependencies {
api(platform("com.hedera.fullstack:fullstack-bom"))
implementation("com.hedera.fullstack:fullstack-readiness-api")
implementation("com.hedera.fullstack:fullstack-monitoring-api")
implementation("com.hedera.fullstack:fullstack-test-toolkit")
implementation("com.hedera.fullstack:fullstack-validator-api")
}

dependencies { api(platform(project(":fullstack-bom"))) }
tasks.register<HelmInstallChartTask>("helmInstallFstChart") {
createNamespace.set(true)
namespace.set("fst-ns")
release.set("fst")
chart.set("../charts/hedera-network")
}

testing {
suites {
@Suppress("UnstableApiUsage", "unused")
val fullstack by
registering(JvmTestSuite::class) {
useJUnitJupiter()
dependencies { implementation(project(":fullstack-examples")) }
}
}
tasks.register<HelmInstallChartTask>("helmInstallNginxChart") {
createNamespace.set(true)
namespace.set("nginx-ns")
release.set("nginx-release")
chart.set("oci://ghcr.io/nginxinc/charts/nginx-ingress")
}

tasks.assemble.configure { dependsOn(tasks.named("fullstackClasses")) }
// TODO: task register helmUninstallNginxChart

tasks.check {
dependsOn("helmInstallNginxChart")
// TODO: depends on helmUninstallNginxChart
}
29 changes: 29 additions & 0 deletions fullstack-examples/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* 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.
*/

pluginManagement {
includeBuild("../build-logic")
includeBuild("..")
repositories {
mavenLocal()
mavenCentral()
gradlePluginPortal()
}
}

rootProject.name = "fullstack-examples"

includeBuild("..")
25 changes: 23 additions & 2 deletions fullstack-gradle-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,27 @@
* limitations under the License.
*/

plugins { id("com.hedera.fullstack.conventions") }
plugins {
id("java-gradle-plugin")
id("com.gradle.plugin-publish").version("1.2.1")
id("com.hedera.fullstack.conventions")
id("com.hedera.fullstack.maven-publish")
}

dependencies { api(platform(project(":fullstack-bom"))) }
dependencies {
api(platform(project(":fullstack-bom")))
implementation(project(":fullstack-helm-client"))
}

gradlePlugin {
plugins {
create("fullstackPlugin") {
id = "com.hedera.fullstack.fullstack-gradle-plugin"
group = "com.hedera.fullstack"
implementationClass = "com.hedera.fullstack.gradle.plugin.FullstackPlugin"
displayName = "Fullstack Plugin"
description =
"The Fullstack Plugin provides tools for working with Fullstack infrastructure."
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*
* 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.
*/

package com.hedera.fullstack.gradle.plugin;

import org.gradle.api.Plugin;
import org.gradle.api.Project;

public class FullstackPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
// currently no implementation is needed
}
}
Loading

0 comments on commit 6a29222

Please sign in to comment.