diff --git a/.github/ci-gradle.properties b/.github/ci-gradle.properties new file mode 100644 index 0000000..dcfd473 --- /dev/null +++ b/.github/ci-gradle.properties @@ -0,0 +1,7 @@ +org.gradle.daemon=false + +org.gradle.parallel=true +org.gradle.jvmargs=-Xmx6g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC -XX:MaxMetaspaceSize=1536m +#org.gradle.workers.max=2 + +kotlin.compiler.execution.strategy=in-process \ No newline at end of file diff --git a/.github/workflows/development.yaml b/.github/workflows/development.yaml new file mode 100644 index 0000000..ccbcdae --- /dev/null +++ b/.github/workflows/development.yaml @@ -0,0 +1,21 @@ +name: Development +on: [push] + +jobs: + build: + name: Tests + runs-on: ubuntu-latest + timeout-minutes: 60 + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Java + uses: actions/setup-java@v3 + with: + java-version: 17 + distribution: 'temurin' + + - name: Tests + run: | + ./gradlew runJvmTests --stacktrace \ No newline at end of file diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..9b6cb76 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,37 @@ +name: Release +on: + release: + types: [prereleased, released] + +jobs: + + release: + name: Publish State Manager + runs-on: macOS-latest + timeout-minutes: 60 + steps: + + - name: Fetch Sources + uses: actions/checkout@v3 + with: + ref: ${{ github.event.release.tag_name }} + + - name: Copy CI gradle.properties + run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties + + - name: Setup Java + uses: actions/setup-java@v3 + with: + java-version: 17 + distribution: 'temurin' + + - name: Deploy to Sonatype + run: | + NEW_VERSION=$(echo "${GITHUB_REF}" | cut -d "/" -f3) + echo "New version: ${NEW_VERSION}" + ./gradlew -Pversion=${NEW_VERSION} kotlinUpgradeYarnLock publish --stacktrace + env: + ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.ORG_GRADLE_PROJECT_mavenCentralUsername }} + ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.ORG_GRADLE_PROJECT_mavenCentralPassword }} + ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.ORG_GRADLE_PROJECT_signingInMemoryKey }} + ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.ORG_GRADLE_PROJECT_signingInMemoryKeyPassword }} \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 8c3033a..1cc4e19 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,3 +5,8 @@ plugins { } group = "dev.programadorthi.state" + +tasks.register("runJvmTests") { + group = "other" + description = "Execute JVM tests in each module only" +} diff --git a/buildSrc/src/main/kotlin/BasicSetup.kt b/buildSrc/src/main/kotlin/BasicSetup.kt index 2180a00..4003a7e 100644 --- a/buildSrc/src/main/kotlin/BasicSetup.kt +++ b/buildSrc/src/main/kotlin/BasicSetup.kt @@ -1,10 +1,7 @@ import org.gradle.api.JavaVersion import org.gradle.api.Project import org.gradle.api.tasks.testing.AbstractTestTask -import org.gradle.jvm.toolchain.JavaLanguageVersion -import org.gradle.jvm.toolchain.JvmVendorSpec -import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.invoke +import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension @@ -12,7 +9,6 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.tasks.KotlinCompile -import org.gradle.api.tasks.testing.logging.TestExceptionFormat fun Project.applyBasicSetup() { configureTargets() @@ -33,6 +29,10 @@ fun Project.applyBasicSetup() { showStackTraces = true } } + + rootProject.tasks.named("runJvmTests") { + dependsOn(tasks.named("jvmTest")) + } }