From 6d67cabc6fd3d59982a9501fad08b8e06a2e2d5b Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 17 Mar 2022 17:29:12 +0100 Subject: build(web/ui): Add Gradle integration with Next.js project This change adds support for building the OpenDC web interface project that uses Next.js using Gradle. This enables a single build pipeline using Gradle. --- opendc-web/opendc-web-ui/build.gradle.kts | 61 +++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'opendc-web/opendc-web-ui/build.gradle.kts') diff --git a/opendc-web/opendc-web-ui/build.gradle.kts b/opendc-web/opendc-web-ui/build.gradle.kts index 7edfd134..9063d0e3 100644 --- a/opendc-web/opendc-web-ui/build.gradle.kts +++ b/opendc-web/opendc-web-ui/build.gradle.kts @@ -19,3 +19,64 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ + +import com.github.gradle.node.yarn.task.YarnTask + +description = "Web interface for OpenDC" + +plugins { + java + id("com.github.node-gradle.node") +} + +val lintTask = tasks.register("lintNext") { + args.set(listOf("lint")) + dependsOn(tasks.yarn) + inputs.dir("src") + inputs.files("package.json", "next.config.js", ".eslintrc") + outputs.upToDateWhen { true } +} + +val buildTask = tasks.register("buildNext") { + args.set(listOf("build")) + dependsOn(tasks.yarn) + inputs.dir(project.fileTree("src")) + inputs.dir("node_modules") + inputs.files("package.json", "next.config.js") + outputs.dir("${project.buildDir}/build") +} + +tasks.register("dev") { + args.set(listOf("dev")) + dependsOn(tasks.yarn) + inputs.dir(project.fileTree("src")) + inputs.dir("node_modules") + inputs.files("package.json", "next.config.js") + outputs.upToDateWhen { true } +} + +tasks.register("start") { + args.set(listOf("start")) + dependsOn(buildTask) + inputs.dir(project.fileTree("src")) + inputs.dir("node_modules") + inputs.files("package.json", "next.config.js") + outputs.upToDateWhen { true } +} + +sourceSets { + java { + main { + java.srcDir("src") + resources.srcDir("public") + } + + test { + java.srcDir("test") + } + } +} + +tasks.test { + dependsOn(lintTask) +} -- cgit v1.2.3 From 6cf097b60366ecb2116f742be4374fcec841a950 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Fri, 18 Mar 2022 13:34:09 +0100 Subject: build(web/ui): Support building WebJar for OpenDC web UI This change updates the build process to build a static WebJar out of the OpenDC web UI module. This allows us to embed the UI inside the development distribution of OpenDC for other users to readily deploy it. --- opendc-web/opendc-web-ui/build.gradle.kts | 66 ++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 19 deletions(-) (limited to 'opendc-web/opendc-web-ui/build.gradle.kts') diff --git a/opendc-web/opendc-web-ui/build.gradle.kts b/opendc-web/opendc-web-ui/build.gradle.kts index 9063d0e3..62d71897 100644 --- a/opendc-web/opendc-web-ui/build.gradle.kts +++ b/opendc-web/opendc-web-ui/build.gradle.kts @@ -25,10 +25,19 @@ import com.github.gradle.node.yarn.task.YarnTask description = "Web interface for OpenDC" plugins { - java + `java-library-conventions` id("com.github.node-gradle.node") } +sourceSets { + main { + java.srcDir("src") + } + test { + java.srcDir("test") + } +} + val lintTask = tasks.register("lintNext") { args.set(listOf("lint")) dependsOn(tasks.yarn) @@ -37,22 +46,35 @@ val lintTask = tasks.register("lintNext") { outputs.upToDateWhen { true } } -val buildTask = tasks.register("buildNext") { - args.set(listOf("build")) +tasks.register("dev") { + args.set(listOf("dev")) dependsOn(tasks.yarn) inputs.dir(project.fileTree("src")) inputs.dir("node_modules") inputs.files("package.json", "next.config.js") - outputs.dir("${project.buildDir}/build") + outputs.upToDateWhen { true } } -tasks.register("dev") { - args.set(listOf("dev")) +val buildTask = tasks.register("buildNext") { + args.set(listOf("build")) + + val env = listOf( + "NEXT_BASE_PATH", + "NEXT_PUBLIC_API_BASE_URL", + "NEXT_PUBLIC_SENTRY_DSN", + "NEXT_PUBLIC_AUTH0_DOMAIN", + "NEXT_PUBLIC_AUTH0_CLIENT_ID", + "NEXT_PUBLIC_AUTH0_AUDIENCE", + ) + for (envvar in env) { + environment.put(envvar, "%%${envvar}%%") + } + dependsOn(tasks.yarn) inputs.dir(project.fileTree("src")) inputs.dir("node_modules") inputs.files("package.json", "next.config.js") - outputs.upToDateWhen { true } + outputs.dir(layout.buildDirectory.dir("next")) } tasks.register("start") { @@ -64,19 +86,25 @@ tasks.register("start") { outputs.upToDateWhen { true } } -sourceSets { - java { - main { - java.srcDir("src") - resources.srcDir("public") - } +tasks.processResources { + dependsOn(buildTask) + inputs.dir(project.fileTree("public")) - test { - java.srcDir("test") - } + from(layout.buildDirectory.dir("next")) { + include("routes-manifest.json") + into("META-INF/resources/${project.name}") + } + + from(layout.buildDirectory.dir("next/static")) { + into("META-INF/resources/${project.name}/static/_next/static") } -} -tasks.test { - dependsOn(lintTask) + from(layout.buildDirectory.dir("next/server/pages")) { + include("**/*.html") + into("META-INF/resources/${project.name}/pages") + } + + from(project.fileTree("public")) { + into("META-INF/resources/${project.name}/static") + } } -- cgit v1.2.3 From f2ff40b5170260289e99e0506525f0905f380907 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Tue, 5 Apr 2022 18:41:45 +0200 Subject: fix(web/ui): Add workaround for Quarkus Gradle build issues This chnage add a workaround for the issues that appear when building the Quarkus application due to it accessing the build files of the other local modules. --- opendc-web/opendc-web-ui/build.gradle.kts | 2 ++ 1 file changed, 2 insertions(+) (limited to 'opendc-web/opendc-web-ui/build.gradle.kts') diff --git a/opendc-web/opendc-web-ui/build.gradle.kts b/opendc-web/opendc-web-ui/build.gradle.kts index 62d71897..9e0d4ff0 100644 --- a/opendc-web/opendc-web-ui/build.gradle.kts +++ b/opendc-web/opendc-web-ui/build.gradle.kts @@ -107,4 +107,6 @@ tasks.processResources { from(project.fileTree("public")) { into("META-INF/resources/${project.name}/static") } + + mkdir("${project.buildDir}/classes/java/main") } -- cgit v1.2.3