plugins { alias(catalog.plugins.lombok) apply false alias(catalog.plugins.sambal) alias(catalog.plugins.gradle.docker) id 'java-library' id 'war' id 'maven-publish' } import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage import com.bmuschko.gradle.docker.tasks.image.DockerPushImage import com.bmuschko.gradle.docker.tasks.container.DockerCreateContainer import com.bmuschko.gradle.docker.tasks.container.DockerStartContainer import com.bmuschko.gradle.docker.tasks.container.DockerStopContainer allprojects { pluginManager.withPlugin('java-library') { apply plugin: 'net.woggioni.gradle.lombok' repositories { maven { url = getProperty('gitea.maven.url') content { includeGroup 'net.woggioni' includeGroup 'com.lys' } } mavenCentral() } lombok { version = catalog.versions.lombok.get() } tasks.withType(JavaCompile) { options.release = 21 } java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } tasks.withType(Test) { useJUnitPlatform() } } pluginManager.withPlugin('maven-publish') { pluginManager.withPlugin('java-library') { java { withJavadocJar() withSourcesJar() } } publishing { repositories { maven { name = "Gitea" url = uri(getProperty('gitea.maven.url')) credentials(HttpHeaderCredentials) { name = "Authorization" value = "token ${System.getenv()["PUBLISHER_TOKEN"]}" } authentication { header(HttpHeaderAuthentication) } } } } } group = 'net.woggioni' version = currentTag ?: (getProperty('jsf.playground.version') + "-" + gitRevision.substring(0, 8)) } dependencies { compileOnly catalog.jakarta.faces.api compileOnly catalog.jakarta.servlet.api compileOnly catalog.jakarta.enterprise.cdi.api implementation catalog.jakarta.faces implementation catalog.jakarta.el implementation catalog.jakarta.cdi.el.api implementation catalog.weld.servlet.core implementation catalog.weld.web implementation catalog.slf4j.api implementation catalog.log4j.slf4j2.impl } Provider prepareDockerBuild = tasks.register('prepareDockerBuild', Copy) { group = 'docker' into project.layout.buildDirectory.file('docker') from(tasks.war) from(file('Dockerfile')) } Provider dockerBuild = tasks.register('dockerBuildImage', DockerBuildImage) { group = 'docker' dependsOn(prepareDockerBuild) images.add('gitea.woggioni.net/woggioni/jsf-playground:latest') images.add("gitea.woggioni.net/woggioni/jsf-playground:${version}") } Provider dockerPush = tasks.register('dockerPushImage', DockerPushImage) { group = 'docker' dependsOn(dockerBuild) registryCredentials { url = getProperty('docker.registry.url') username = 'woggioni' password = System.getenv().get("PUBLISHER_TOKEN") } images = dockerBuild.flatMap { it.images } } Provider dockerCreate = tasks.register('dockerCreateContainer', DockerCreateContainer) { group = 'docker' dependsOn(dockerBuild) targetImageId(dockerBuild.flatMap { it.imageId }) hostConfig.portBindings = ['127.0.0.1:8888:8080'] hostConfig.autoRemove = true } Provider dockerRun = tasks.register('dockerStartContainer', DockerStartContainer) { group = 'docker' dependsOn(dockerCreate) targetContainerId(dockerCreate.flatMap { it.containerId }) } tasks.register('dockerStopContainer', DockerStopContainer) { group = 'docker' dependsOn(dockerRun) targetContainerId(dockerRun.flatMap { it.containerId }) } publishing { publications { maven(MavenPublication) { from(components["web"]) } } }