diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c6b8830..00e8ad4 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -16,7 +16,7 @@ kotlin { val commonTest by sourceSets.getting { dependencies { - implementation(opensavvyConventions.aligned.kotlin.test.junit) + implementation(opensavvyConventions.aligned.kotlin.test.junit5) } } } -- 2.51.2 From 77cdcd8d0e0daa51ed45105928dfd4762b743422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Mon, 27 Nov 2023 21:12:05 +0100 Subject: [PATCH 02/13] upgrade(conventions): OpenSavvy Gradle Conventions 0.3.0 See https://gitlab.com/opensavvy/automation/gradle-conventions/-/releases/0.3.0 --- gradle/conventions/settings.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/conventions/settings.gradle.kts b/gradle/conventions/settings.gradle.kts index c08e5b5..64d4817 100644 --- a/gradle/conventions/settings.gradle.kts +++ b/gradle/conventions/settings.gradle.kts @@ -18,7 +18,7 @@ pluginManagement { } plugins { - id("dev.opensavvy.conventions.settings") version "0.2.1" + id("dev.opensavvy.conventions.settings") version "0.3.0" } enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") -- 2.51.2 From acc34e3cfdffb0aa32bf92064a3eaac9b4252ee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Mon, 27 Nov 2023 21:26:59 +0100 Subject: [PATCH 03/13] ci(gitlab): Add missing 'region' keyword --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index febaf79..8ad3e71 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -168,7 +168,7 @@ mirror-playground: allow_failure: true # endregion -# GitLab Pages +# region GitLab Pages pages: image: alpine:latest -- 2.51.2 From 2ac1482a0be9f75d924befda2dba3646d6c5fbb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Mon, 27 Nov 2023 21:29:31 +0100 Subject: [PATCH 04/13] ci(gitlab): Explicitly run the JVM tests --- .gitlab-ci.yml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8ad3e71..db90bd1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,11 +17,26 @@ workflow: - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_TAG -# region Check +variables: + kotlin_jvm: "yes" + +# region Kotlin Multiplatform -check: +.kotlin-jvm: extends: [ .os.gradle ] + image: registry.gitlab.com/opensavvy/automation/containers/java:latest needs: [ os.version ] + + rules: + - if: $kotlin_jvm == "yes" + when: always + - when: never + +# endregion +# region Check + +check[jvm]: + extends: [ .kotlin-jvm ] stage: test script: @@ -36,7 +51,7 @@ check: publish-maven:gitlab: extends: [ .os.gradle ] - needs: [ os.version, check ] + needs: [ os.version ] stage: deploy script: -- 2.51.2 From 161ebadac57b8521e0ce2e03a5964bf28738da69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Sat, 2 Dec 2023 12:52:48 +0100 Subject: [PATCH 05/13] ci(gitlab): Run the JS browser tests --- .gitlab-ci.yml | 23 +++++++++++++++++++++++ core/build.gradle.kts | 4 ++++ 2 files changed, 27 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index db90bd1..ebf9f91 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,6 +19,7 @@ workflow: variables: kotlin_jvm: "yes" + kotlin_js_browser: "yes" # region Kotlin Multiplatform @@ -32,6 +33,16 @@ variables: when: always - when: never +.kotlin-js-browser: + extends: [ .os.gradle ] + image: registry.gitlab.com/opensavvy/automation/containers/chromium:latest + needs: [ os.version ] + + rules: + - if: $kotlin_js_browser == "yes" + when: always + - when: never + # endregion # region Check @@ -42,6 +53,18 @@ check[jvm]: script: - > ./gradlew check + -x jsBrowserTest + -PappVersion=$project_version + + interruptible: true + +check[jsBrowser]: + extends: [ .kotlin-js-browser ] + stage: test + + script: + - > + ./gradlew jsBrowserTest -PappVersion=$project_version interruptible: true diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 66e2196..6117390 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -5,6 +5,10 @@ plugins { kotlin { jvm() + js { + browser() + nodejs() + } } library { -- 2.51.2 From 797dd53bdb123686a5653e633d345c95ab39d9b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Sat, 2 Dec 2023 12:59:03 +0100 Subject: [PATCH 06/13] ci(gitlab): Run the NodeJS tests --- .gitlab-ci.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ebf9f91..32cd00e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,6 +20,7 @@ workflow: variables: kotlin_jvm: "yes" kotlin_js_browser: "yes" + kotlin_js_node: "yes" # region Kotlin Multiplatform @@ -43,6 +44,16 @@ variables: when: always - when: never +.kotlin-js-node: + extends: [ .os.gradle ] + image: registry.gitlab.com/opensavvy/automation/containers/chromium:latest + needs: [ os.version ] + + rules: + - if: $kotlin_js_node == "yes" + when: always + - when: never + # endregion # region Check @@ -54,6 +65,7 @@ check[jvm]: - > ./gradlew check -x jsBrowserTest + -x jsNodeTest -PappVersion=$project_version interruptible: true @@ -69,6 +81,17 @@ check[jsBrowser]: interruptible: true +check[nodeJs]: + extends: [ .kotlin-js-node ] + stage: test + + script: + - > + ./gradlew jsNodeTest + -PappVersion=$project_version + + interruptible: true + # endregion # region Publishing -- 2.51.2 From 73525d95d556b815536f48a011084ed326c85084 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Mon, 4 Dec 2023 20:53:35 +0100 Subject: [PATCH 07/13] ci(gitlab): OpenSavvy CI Containers 0.2.0 --- .gitlab-ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8ee1838..4cdf21d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,6 +8,10 @@ include: - remote: https://gitlab.com/opensavvy/ci-templates/-/raw/main/version.gitlab-ci.yml - remote: https://gitlab.com/opensavvy/ci-templates/-/raw/main/mirror.gitlab-ci.yml +variables: + # https://gitlab.com/opensavvy/automation/containers + ci_containers: 0.2.0 + workflow: rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' -- 2.51.2 From ae698e6c12bd881e1a6807917d84571bfe6cc4b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Sat, 2 Dec 2023 13:15:07 +0100 Subject: [PATCH 08/13] build: Use the typesafe syntax to configure KMP dependencies --- app/build.gradle.kts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 00e8ad4..8d23d82 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -8,16 +8,12 @@ kotlin { withJava() // required by the application plugin } - val commonMain by sourceSets.getting { - dependencies { - implementation(projects.core) - } + sourceSets.commonMain.dependencies { + implementation(projects.core) } - val commonTest by sourceSets.getting { - dependencies { - implementation(opensavvyConventions.aligned.kotlin.test.junit5) - } + sourceSets.commonTest.dependencies { + implementation(opensavvyConventions.aligned.kotlin.test.junit5) } } -- 2.51.2 From 20550f7dcdf60fb7a8e32813056bcf04f0389043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Sat, 2 Dec 2023 13:20:23 +0100 Subject: [PATCH 09/13] refactor: Move the tests to the Core module --- app/build.gradle.kts | 4 ---- app/src/commonTest/kotlin/Test.kt | 12 ------------ core/build.gradle.kts | 13 +++++++++++++ core/src/commonTest/kotlin/HelloWorldTest.kt | 12 ++++++++++++ 4 files changed, 25 insertions(+), 16 deletions(-) delete mode 100644 app/src/commonTest/kotlin/Test.kt create mode 100644 core/src/commonTest/kotlin/HelloWorldTest.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8d23d82..4ffb5d7 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -11,10 +11,6 @@ kotlin { sourceSets.commonMain.dependencies { implementation(projects.core) } - - sourceSets.commonTest.dependencies { - implementation(opensavvyConventions.aligned.kotlin.test.junit5) - } } application { diff --git a/app/src/commonTest/kotlin/Test.kt b/app/src/commonTest/kotlin/Test.kt deleted file mode 100644 index 2597e32..0000000 --- a/app/src/commonTest/kotlin/Test.kt +++ /dev/null @@ -1,12 +0,0 @@ -package opensavvy.playground - -import kotlin.test.Test -import kotlin.test.assertTrue - -class Test { - - @Test - fun helloWorld() { - assertTrue(true) - } -} diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 6117390..9f23d72 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -9,6 +9,19 @@ kotlin { browser() nodejs() } + + sourceSets.commonTest.dependencies { + implementation(opensavvyConventions.aligned.kotlin.test.annotations) + implementation(opensavvyConventions.aligned.kotlin.test.common) + } + + sourceSets.jvmTest.dependencies { + implementation(opensavvyConventions.aligned.kotlin.test.junit5) + } + + sourceSets.jsTest.dependencies { + implementation(opensavvyConventions.aligned.kotlin.test.js) + } } library { diff --git a/core/src/commonTest/kotlin/HelloWorldTest.kt b/core/src/commonTest/kotlin/HelloWorldTest.kt new file mode 100644 index 0000000..25cf10d --- /dev/null +++ b/core/src/commonTest/kotlin/HelloWorldTest.kt @@ -0,0 +1,12 @@ +package opensavvy.playground.core + +import kotlin.test.Test +import kotlin.test.assertEquals + +class HelloWorldTest { + + @Test + fun helloWorld() { + assertEquals("Hello World!", message) + } +} -- 2.51.2 From d47eb31d3a5c8deef8fce3650df165b6126c1432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Wed, 6 Dec 2023 20:13:59 +0100 Subject: [PATCH 10/13] ci(gitlab): Run the LinuxX64 tests --- .gitlab-ci.yml | 21 +++++++++++++++++++++ core/build.gradle.kts | 1 + 2 files changed, 22 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 32cd00e..9db14ba 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,6 +21,7 @@ variables: kotlin_jvm: "yes" kotlin_js_browser: "yes" kotlin_js_node: "yes" + kotlin_native_linuxX64: "yes" # region Kotlin Multiplatform @@ -54,6 +55,14 @@ variables: when: always - when: never +.kotlin-native-linuxX64: + extends: [ .kotlin-jvm ] # it already runs on Linux + + rules: + - if: $kotlin_native_linuxX64 == "yes" + when: always + - when: never + # endregion # region Check @@ -66,6 +75,7 @@ check[jvm]: ./gradlew check -x jsBrowserTest -x jsNodeTest + -x linuxX64Test -PappVersion=$project_version interruptible: true @@ -92,6 +102,17 @@ check[nodeJs]: interruptible: true +check[linuxX64]: + extends: [ .kotlin-native-linuxX64 ] + stage: test + + script: + - > + ./gradlew linuxX64Test + -PappVersion=$project_version + + interruptible: true + # endregion # region Publishing diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 9f23d72..b4a4c6f 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -9,6 +9,7 @@ kotlin { browser() nodejs() } + linuxX64() sourceSets.commonTest.dependencies { implementation(opensavvyConventions.aligned.kotlin.test.annotations) -- 2.51.2 From 2d6b7273cd85d1a7f3496622b9ee566772b10862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Wed, 6 Dec 2023 20:29:33 +0100 Subject: [PATCH 11/13] ci(gitlab): Run the iOSArm64 tests --- .gitlab-ci.yml | 29 +++++++++++++++++++++++++++++ core/build.gradle.kts | 3 +++ 2 files changed, 32 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9db14ba..5004ee7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,6 +22,7 @@ variables: kotlin_js_browser: "yes" kotlin_js_node: "yes" kotlin_native_linuxX64: "yes" + kotlin_native_iosArm64: "yes" # region Kotlin Multiplatform @@ -63,6 +64,21 @@ variables: when: always - when: never +.kotlin-native-iosArm64: + extends: [ .os.gradle ] + image: macos-13-xcode-14 + needs: [ os.version ] + + before_script: + - xcodebuild -downloadPlatform iOS + tags: + - saas-macos-medium-m1 + + rules: + - if: $kotlin_native_iosArm64 == "yes" + when: always + - when: never + # endregion # region Check @@ -76,6 +92,7 @@ check[jvm]: -x jsBrowserTest -x jsNodeTest -x linuxX64Test + -x iosSimulatorArm64Test -PappVersion=$project_version interruptible: true @@ -113,6 +130,18 @@ check[linuxX64]: interruptible: true +check[iosArm64]: + extends: [ .kotlin-native-iosArm64 ] + stage: test + + script: + - > + ./gradlew iosSimulatorArm64Test + --no-configuration-cache + -PappVersion=$project_version + + interruptible: true + # endregion # region Publishing diff --git a/core/build.gradle.kts b/core/build.gradle.kts index b4a4c6f..c4d6cac 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -10,6 +10,9 @@ kotlin { nodejs() } linuxX64() + iosArm64() + iosSimulatorArm64() + iosX64() sourceSets.commonTest.dependencies { implementation(opensavvyConventions.aligned.kotlin.test.annotations) -- 2.51.2 From d21a91f20c174578091ee1e2138526653a7b9aea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Mon, 11 Dec 2023 22:44:20 +0100 Subject: [PATCH 12/13] build(gradle): Move the template modules to gradle/templates This will reduce the number of conflicts in the future, which should hopefully make adoption simpler. --- build.gradle.kts | 2 +- .../templates/template-app}/build.gradle.kts | 2 +- .../template-app}/src/commonMain/kotlin/Main.kt | 0 .../templates/template-lib}/README.md | 0 .../templates/template-lib}/build.gradle.kts | 16 ++++++++++++++++ .../src/commonMain/kotlin/HelloWorld.kt | 0 .../src/commonTest/kotlin/HelloWorldTest.kt | 0 settings.gradle.kts | 4 ++-- 8 files changed, 20 insertions(+), 4 deletions(-) rename {app => gradle/templates/template-app}/build.gradle.kts (83%) rename {app => gradle/templates/template-app}/src/commonMain/kotlin/Main.kt (100%) rename {core => gradle/templates/template-lib}/README.md (100%) rename {core => gradle/templates/template-lib}/build.gradle.kts (68%) rename {core => gradle/templates/template-lib}/src/commonMain/kotlin/HelloWorld.kt (100%) rename {core => gradle/templates/template-lib}/src/commonTest/kotlin/HelloWorldTest.kt (100%) diff --git a/build.gradle.kts b/build.gradle.kts index 33856b8..04ac20c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,7 +18,7 @@ plugins { dependencies { // List the 'library' projects - dokkatoo(projects.core) + // dokkatoo(projects.core) } // region Check the users of the project didn't forget to rename the group diff --git a/app/build.gradle.kts b/gradle/templates/template-app/build.gradle.kts similarity index 83% rename from app/build.gradle.kts rename to gradle/templates/template-app/build.gradle.kts index 4ffb5d7..28177ee 100644 --- a/app/build.gradle.kts +++ b/gradle/templates/template-app/build.gradle.kts @@ -9,7 +9,7 @@ kotlin { } sourceSets.commonMain.dependencies { - implementation(projects.core) + implementation(projects.gradle.templates.templateLib) } } diff --git a/app/src/commonMain/kotlin/Main.kt b/gradle/templates/template-app/src/commonMain/kotlin/Main.kt similarity index 100% rename from app/src/commonMain/kotlin/Main.kt rename to gradle/templates/template-app/src/commonMain/kotlin/Main.kt diff --git a/core/README.md b/gradle/templates/template-lib/README.md similarity index 100% rename from core/README.md rename to gradle/templates/template-lib/README.md diff --git a/core/build.gradle.kts b/gradle/templates/template-lib/build.gradle.kts similarity index 68% rename from core/build.gradle.kts rename to gradle/templates/template-lib/build.gradle.kts index c4d6cac..8a39f63 100644 --- a/core/build.gradle.kts +++ b/gradle/templates/template-lib/build.gradle.kts @@ -38,3 +38,19 @@ library { url.set("https://www.apache.org/licenses/LICENSE-2.0.txt") } } + +// region Publication test +// Even though this module is included in all repositories that import the Playground, we +// don't want to always publish this template. + +val appGroup: String? by project + +if (appGroup != "dev.opensavvy.playground") { + tasks.configureEach { + if (name.startsWith("publish")) { + onlyIf("Publishing is only enabled when built as part of the Playground") { false } + } + } +} + +// endregion diff --git a/core/src/commonMain/kotlin/HelloWorld.kt b/gradle/templates/template-lib/src/commonMain/kotlin/HelloWorld.kt similarity index 100% rename from core/src/commonMain/kotlin/HelloWorld.kt rename to gradle/templates/template-lib/src/commonMain/kotlin/HelloWorld.kt diff --git a/core/src/commonTest/kotlin/HelloWorldTest.kt b/gradle/templates/template-lib/src/commonTest/kotlin/HelloWorldTest.kt similarity index 100% rename from core/src/commonTest/kotlin/HelloWorldTest.kt rename to gradle/templates/template-lib/src/commonTest/kotlin/HelloWorldTest.kt diff --git a/settings.gradle.kts b/settings.gradle.kts index 3715a71..a7955ae 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -26,6 +26,6 @@ plugins { } include( - "app", - "core", + "gradle:templates:template-app", + "gradle:templates:template-lib", ) -- 2.51.2 From 8c1ca2c6d7a004b68bf5fb2612b09d677decbc4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Sat, 16 Dec 2023 18:07:04 +0100 Subject: [PATCH 13/13] ci(gitlab): Disable the Tailwind example --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0ed3d32..42e6b81 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -226,6 +226,8 @@ example:tailwind: - PREFIX="$CI_PROJECT_ROOT_NAMESPACE/" - echo "URL=https://$CI_PROJECT_ROOT_NAMESPACE.$CI_PAGES_DOMAIN/-/${CI_PROJECT_PATH//$PREFIX}/-/jobs/$CI_JOB_ID/artifacts/kotlin-tailwind/index.html" >>deploy.env + allow_failure: true # TODO: remove after https://gitlab.com/opensavvy/automation/kotlin-vite/-/issues/37 + artifacts: paths: - kotlin-tailwind