From 25848e9a17925f977ba3144747de6f4b5a0811ce Mon Sep 17 00:00:00 2001 From: Teodor Grigor Date: Tue, 20 Aug 2024 22:26:34 +0300 Subject: [PATCH] Add GitHub Action for automated build process --- .github/workflows/code-quality.yml | 65 +++++++++++++++++++ build.gradle.kts | 17 +++-- .../teogor/drifter/plugin/UnityBuildTask.kt | 7 +- settings.gradle.kts | 9 ++- 4 files changed, 88 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/code-quality.yml diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml new file mode 100644 index 0000000..28bd61c --- /dev/null +++ b/.github/workflows/code-quality.yml @@ -0,0 +1,65 @@ +name: Code Quality CI + +on: + push: + branches: [ main ] + pull_request: + branches: [ '*' ] + +jobs: + lint: + name: Spotless check + runs-on: macos-latest + steps: + - name: Check out code + uses: actions/checkout@v4.1.7 + - name: Set up JDK + uses: actions/setup-java@v4.2.2 + with: + distribution: 'zulu' + java-version: 17 + - name: spotless + run: ./gradlew spotlessCheck + + api_check: + name: API check + runs-on: macos-latest + steps: + - name: Check out code + uses: actions/checkout@v4.1.7 + - name: Set up JDK + uses: actions/setup-java@v4.2.2 + with: + distribution: 'zulu' + java-version: 17 + - name: API check + run: ./gradlew apiCheck + + build: + name: Build and Tests + runs-on: macos-latest + steps: + - uses: actions/checkout@v4.1.7 + + - name: set up JDK + uses: actions/setup-java@v4.2.2 + with: + distribution: 'zulu' + java-version: 17 + + - name: Cache Gradle and wrapper + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Make Gradle executable + run: chmod +x ./gradlew + + - name: Build with Gradle + run: | + ./gradlew build diff --git a/build.gradle.kts b/build.gradle.kts index 1919935..13cfe35 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -116,11 +116,18 @@ val modulesByPath = listOf( val ktlintVersion = "0.50.0" -val excludeModules = listOf( - project.name, - "app", - "module-unity", -) +val isCI = System.getenv("CI") != null +val excludeModules = if (!isCI) { + listOf( + project.name, + "app", + "module-unity", + ) +} else { + listOf( + project.name, + ) +} subprojects { if (!excludeModules.contains(this.name)) { diff --git a/gradle-plugin/src/main/kotlin/dev/teogor/drifter/plugin/UnityBuildTask.kt b/gradle-plugin/src/main/kotlin/dev/teogor/drifter/plugin/UnityBuildTask.kt index a3a59c0..9e7b394 100644 --- a/gradle-plugin/src/main/kotlin/dev/teogor/drifter/plugin/UnityBuildTask.kt +++ b/gradle-plugin/src/main/kotlin/dev/teogor/drifter/plugin/UnityBuildTask.kt @@ -109,8 +109,11 @@ private fun String.splitCamelCase(): String { private fun String.toTitleCase(): String { return this.split(" ").joinToString(" ") { word -> word.replaceFirstChar { char -> - if (char.isLowerCase()) char.titlecase(Locale.getDefault()) - else char.toString() + if (char.isLowerCase()) { + char.titlecase(Locale.getDefault()) + } else { + char.toString() + } } } } diff --git a/settings.gradle.kts b/settings.gradle.kts index 1fd7d80..22c3320 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -23,9 +23,12 @@ enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") rootProject.name = "Drifter" -// Demo Application -include(":demo:app") -include(":demo:module-unity") +val isCI = System.getenv("CI") != null +if (!isCI) { + // Demo Application + include(":demo:app") + include(":demo:module-unity") +} // Drifter include(":bom")