diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..e3e94a3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,36 @@ +name: CI + +on: + push: + branches: [master] + pull_request: + branches: [master] + +permissions: + contents: read + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + +jobs: + build: + name: Build (JDK 21) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + java-version: '21' + distribution: temurin + + - name: Validate Gradle wrapper + uses: gradle/actions/wrapper-validation@v4 + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Build + run: ./gradlew build -x test --stacktrace diff --git a/.gitignore b/.gitignore index c1de5c5..b51e920 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,6 @@ secrets/ !**/src/test/**/out/ ### VS Code ### -.vscode/ \ No newline at end of file +.vscode/ + +.DS_Store \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 2222fea..c1bbe84 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,28 +6,31 @@ plugins { alias(libs.plugins.versions) } -group = "com.myapp" -version = "1.1.0" +val mainClassName = "com.myapp.ApplicationKt" +val fatJarName = "vapi4k-template.jar" +val jvmVersion = libs.versions.jvm.get().toInt() + +val buildFatJarTask = "buildFatJar" +val cleanTask = "clean" +val stageTask = "stage" + +val preReleaseSuffixes = listOf("-RC", "-BETA", "-ALPHA", "-M") application { - mainClass.set("com.myapp.ApplicationKt") + mainClass.set(mainClassName) } ktor { fatJar { // Change this to whatever name you want // It also has to be changed in the Dockerfile - archiveFileName.set("vapi4k-template.jar") + archiveFileName.set(fatJarName) } } // This must match the version defined in system.properties kotlin { - jvmToolchain(21) -} - -repositories { - mavenCentral() + jvmToolchain(jvmVersion) } dependencies { @@ -36,20 +39,20 @@ dependencies { } // Required for heroku deployments -tasks.register("stage") { - dependsOn("buildFatJar", "clean") +tasks.register(stageTask) { + dependsOn(buildFatJarTask, cleanTask) doLast { println("Stage task completed") } } // Required for heroku deployments -tasks.named("buildFatJar") { - mustRunAfter("clean") +tasks.named(buildFatJarTask) { + mustRunAfter(cleanTask) } tasks.withType { rejectVersionIf { - listOf("-RC", "-BETA", "-ALPHA", "-M").any { candidate.version.uppercase().contains(it) } + preReleaseSuffixes.any { candidate.version.uppercase().contains(it) } } } diff --git a/gradle.properties b/gradle.properties index 6f3aa1a..687e6ee 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,6 @@ +group = "com.myapp" +version=1.1.0 + kotlin.code.style=official -# Version properties have been moved to gradle/libs.versions.toml +org.gradle.configuration-cache=true +org.gradle.jvmargs=-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:MaxMetaspaceSize=1024m -Xss10m -Dkotlin.daemon.jvm.options=-Xss10m diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 214b044..d14c82f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,9 @@ [versions] -kotlin = "2.3.20" -ktor = "3.4.2" -versions = "0.53.0" +gradle = "9.5.0" +jvm = "21" +kotlin = "2.3.21" +ktor = "3.4.3" +versions = "0.54.0" vapi4k = "1.7.0" [libraries] diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f8e1ee3..d997cfc 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c61a118..1a70468 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index adff685..739907d 100755 --- a/gradlew +++ b/gradlew @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/2d6327017519d23b96af35865dc997fcb544fb40/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. diff --git a/settings.gradle.kts b/settings.gradle.kts index 7d12264..18adfb6 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,6 +1,20 @@ +pluginManagement { + repositories { + gradlePluginPortal() + mavenCentral() + } +} + plugins { id("org.gradle.toolchains.foojay-resolver-convention").version("1.0.0") } +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + mavenCentral() + } +} + rootProject.name = "vapi4k-template"