Skip to content

Commit

Permalink
build: WiP
Browse files Browse the repository at this point in the history
Signed-off-by: Jendrik Johannes <jendrik.johannes@gmail.com>
  • Loading branch information
jjohannes committed Sep 2, 2024
1 parent 29ed403 commit c629b6e
Show file tree
Hide file tree
Showing 109 changed files with 1,066 additions and 955 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/node-zxc-build-release-artifact.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -845,7 +845,7 @@ jobs:
NEXUS_PASSWORD: ${{ secrets.sdk-ossrh-password }}
with:
gradle-version: ${{ inputs.gradle-version }}
arguments: "release${{ inputs.release-profile }} -PpublishingPackageGroup=com.swirlds --scan -PpublishSigningEnabled=true --no-configuration-cache"
arguments: "release${{ inputs.release-profile }} -PpublishingPackageGroup=com.swirlds -Ps01SonatypeHost=true -PpublishSigningEnabled=true --scan --no-configuration-cache"

- name: Gradle Publish Services to ${{ inputs.version-policy == 'specified' && 'Maven Central' || 'Google Artifact Registry' }} (${{ inputs.release-profile }})
uses: gradle/gradle-build-action@29c0906b64b8fc82467890bfb7a0a7ef34bda89e # v3.1.0
Expand All @@ -855,7 +855,7 @@ jobs:
NEXUS_PASSWORD: ${{ secrets.svcs-ossrh-password }}
with:
gradle-version: ${{ inputs.gradle-version }}
arguments: "release${{ inputs.release-profile }} -PpublishingPackageGroup=com.hedera --scan -PpublishSigningEnabled=true --no-configuration-cache"
arguments: "release${{ inputs.release-profile }} -PpublishingPackageGroup=com.hedera.hashgraph -PpublishSigningEnabled=true --scan --no-configuration-cache"

- name: Upload SDK Release Archives
if: ${{ inputs.dry-run-enabled != true && inputs.version-policy == 'specified' && !cancelled() && !failure() }}
Expand Down
6 changes: 6 additions & 0 deletions developers.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# This file is here for 'hapi', because that "product" is missing the toplevel folder
# (it contains the 'hapi' module directly)
hedera-base@swirldslabs.com=Hedera Base Team
hedera-services@swirldslabs.com=Hedera Services Team
hedera-smart-contracts@swirldslabs.com=Hedera Smart Contracts Team
release-engineering@swirldslabs.com=Release Engineering Team
7 changes: 2 additions & 5 deletions example-apps/swirlds-platform-base-example/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,12 @@
* limitations under the License.
*/

plugins {
id("application")
id("com.hedera.gradle.platform")
}
plugins { id("com.hedera.gradle.module.application") }

mainModuleInfo {
annotationProcessor("com.swirlds.config.processor")
annotationProcessor("com.google.auto.service.processor")
runtimeOnly("com.swirlds.config.impl")
}

application.mainClass.set("com.swirlds.platform.base.example.Application")
application.mainClass = "com.swirlds.platform.base.example.Application"
1 change: 1 addition & 0 deletions gradle/development-branch.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
develop
39 changes: 39 additions & 0 deletions gradle/hedera-gradle-conventions/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Copyright (C) 2022-2024 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 {
`kotlin-dsl`
}

repositories { gradlePluginPortal() }

dependencies {
implementation("com.adarshr:gradle-test-logger-plugin:4.0.0")
implementation("com.autonomousapps:dependency-analysis-gradle-plugin:1.32.0")
implementation("com.diffplug.spotless:spotless-plugin-gradle:6.25.0")
implementation("com.google.protobuf:protobuf-gradle-plugin:0.9.4")
implementation("com.gradle:develocity-gradle-plugin:3.17.5")
implementation("com.gradleup.shadow:shadow-gradle-plugin:8.3.0")
implementation(
"gradle.plugin.com.google.cloud.artifactregistry:artifactregistry-gradle-plugin:2.2.2"
)
implementation("io.github.gradle-nexus:publish-plugin:1.3.0")
implementation("me.champeau.jmh:jmh-gradle-plugin:0.7.2")
implementation("net.swiftzer.semver:semver:1.3.0")
implementation("org.gradlex:extra-java-module-info:1.8")
implementation("org.gradlex:jvm-dependency-conflict-resolution:2.1.2")
implementation("org.gradlex:java-module-dependencies:1.7")
}
1 change: 1 addition & 0 deletions gradle/jdk-version.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
21.0.4
9 changes: 2 additions & 7 deletions gradle/plugins/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,14 @@
* limitations under the License.
*/

plugins {
// Support convention plugins written in Kotlin. Convention plugins are build scripts in
// 'src/main' that automatically become available as plugins in the main build.
`kotlin-dsl`
}
plugins { `kotlin-dsl` }

repositories { gradlePluginPortal() }

dependencies {
implementation("com.adarshr:gradle-test-logger-plugin:4.0.0")
implementation("com.autonomousapps:dependency-analysis-gradle-plugin:1.32.0")
implementation("com.autonomousapps:dependency-analysis-gradle-plugin:2.0.1")
implementation("com.diffplug.spotless:spotless-plugin-gradle:6.25.0")
implementation("com.github.johnrengelman:shadow:8.1.1")
implementation("com.google.protobuf:protobuf-gradle-plugin:0.9.4")
implementation("com.gradle:develocity-gradle-plugin:3.17.5")
implementation(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,25 +14,21 @@
* limitations under the License.
*/

plugins {
id("base")
id("com.diffplug.spotless")
}
plugins { id("base") }

// Convenience for local development: when running './gradlew' without any parameters just show the
// tasks from the 'build' group
// Convenience for local development: when running './gradlew' without any parameters show the tasks
// from the 'build' group
defaultTasks("tasks")

tasks.named<TaskReportTask>("tasks") {
if (!isDetail) {
displayGroup = "build"
}
tasks.register("qualityCheck") {
group = "build"
description = "Run all spotless and quality checks."
dependsOn(tasks.assemble)
}

tasks.register("qualityGate") {
group = "build"
description = "Apply spotless rules and run all quality checks."
dependsOn(tasks.spotlessApply)
dependsOn(tasks.assemble)
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2022-2024 Hedera Hashgraph, LLC
* Copyright (C) 2016-2024 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.
Expand All @@ -14,7 +14,9 @@
* limitations under the License.
*/

plugins {
id("java-library")
id("com.hedera.gradle.java")
}
version =
providers
.fileContents(isolated.rootProject.projectDirectory.file("version.txt"))
.asText
.get()
.trim()
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Copyright (C) 2022-2024 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() } }

plugins {
id("org.gradlex.java-module-dependencies")
id("com.hedera.gradle.feature.build-cache")
id("com.hedera.gradle.feature.repositories")
id("com.hedera.gradle.report.develocity")
}

// 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(".")
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* Copyright (C) 2024 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.
*/

import com.autonomousapps.DependencyAnalysisSubExtension
import org.gradlex.javamodule.dependencies.tasks.ModuleDirectivesOrderingCheck
import org.gradlex.javamodule.dependencies.tasks.ModuleDirectivesScopeCheck

plugins {
id("com.autonomousapps.dependency-analysis")
id("com.hedera.gradle.base.lifecycle")
id("com.hedera.gradle.jpms-modules")
}

// ordering check is done by SortModuleInfoRequiresStep
tasks.withType<ModuleDirectivesOrderingCheck> { enabled = false }

// Do not report dependencies from one source set to another as 'required'.
// In particular, in case of test fixtures, the analysis would suggest to
// add as testModuleInfo { require(...) } to the main module. This is
// conceptually wrong, because in whitebox testing the 'main' and 'test'
// module are conceptually considered one module (main module extended with tests)
configure<DependencyAnalysisSubExtension> { issues { onAny { exclude(project.path) } } }

tasks.named("qualityGate") { dependsOn(tasks.withType<ModuleDirectivesScopeCheck>()) }
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import com.hedera.gradle.spotless.RepairDashedCommentsFormatterStep
import com.hedera.gradle.spotless.SortModuleInfoRequiresStep
import com.hedera.gradle.spotless.StripOldLicenseFormatterStep

plugins { id("com.hedera.gradle.spotless") }
plugins { id("com.diffplug.spotless") }

spotless {
java {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

plugins { id("com.hedera.gradle.spotless") }
plugins { id("com.diffplug.spotless") }

spotless {
kotlinGradle {
Expand All @@ -39,8 +39,12 @@ spotless {
*/${"\n\n"}
"""
.trimIndent(),
"(import|plugins|pluginManagement|dependencyResolutionManagement|repositories|tasks|allprojects|subprojects)"
"(import|plugins|pluginManagement|dependencyResolutionManagement|repositories|tasks|allprojects|subprojects|buildCache|version)"
)
.updateYearWithLatest(true)
}
kotlin {
// For the Kotlin classes (*.kt files)
ktfmt().kotlinlangStyle()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,12 @@
* limitations under the License.
*/

plugins { id("com.hedera.gradle.spotless") }
plugins { id("com.diffplug.spotless") }

spotless {
flexmark {
target("**/*.md")
targetExclude("platform-sdk/sdk/**")
flexmark()
trimTrailingWhitespace()
indentWithSpaces()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Copyright (C) 2022-2024 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.diffplug.spotless") }

spotless {
format("misc") {
// define the files to apply `misc` to
target(".gitignore")

// define the steps to apply to those files
trimTrailingWhitespace()
indentWithSpaces()
endWithNewline()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,6 @@
plugins { id("com.diffplug.spotless") }

spotless {
// Disable the automatic application of Spotless to all source sets when the check task is run.
isEnforceCheck = false

// optional: limit format enforcement to just the files changed by this feature branch
ratchetFrom("origin/develop")

format("misc") {
// define the files to apply `misc` to
target(".gitignore")

// define the steps to apply to those files
trimTrailingWhitespace()
indentWithSpaces()
endWithNewline()
}

format("actionYaml") {
target(".github/workflows/*.yaml")
/*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/*
* Copyright (C) 2022-2024 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.hedera.gradle.base.lifecycle")
id("com.diffplug.spotless")
}

spotless {
// Disable the automatic application of Spotless to all source sets when the check task is run.
isEnforceCheck = false

// limit format enforcement to just the files changed by this feature branch
@Suppress("UnstableApiUsage")
ratchetFrom(
"origin/" +
providers
.fileContents(
isolated.rootProject.projectDirectory.file("gradle/development-branch.txt")
)
.asText
.getOrElse("main")
)
}

tasks.withType<JavaCompile>().configureEach {
// When doing a 'qualityGate' run, make sure spotlessApply is done before doing compilation and
// other checks based on compiled code
mustRunAfter(tasks.spotlessApply)
}

tasks.named("qualityCheck") { dependsOn(tasks.spotlessCheck) }

tasks.named("qualityGate") { dependsOn(tasks.spotlessApply) }
Loading

0 comments on commit c629b6e

Please sign in to comment.