2023-08-02 01:30:48 -04:00
import org.apache.tools.ant.taskdefs.condition.*
import org.gradle.internal.logging.text.*
import org.apereo.cas.metadata.*
import java.nio.file.*
import org.gradle.internal.logging.text.*
import static org . gradle . internal . logging . text . StyledTextOutput . Style
2020-03-29 16:36:54 -04:00
buildscript {
repositories {
2023-08-02 01:30:48 -04:00
if ( project . privateRepoUrl ) {
maven {
url project . privateRepoUrl
credentials {
username = project . privateRepoUsername
password = System . env . PRIVATE_REPO_TOKEN
}
}
}
2020-03-29 16:36:54 -04:00
mavenLocal ( )
mavenCentral ( )
2023-08-02 01:30:48 -04:00
gradlePluginPortal ( )
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots'
mavenContent { snapshotsOnly ( ) }
}
maven {
url "https://repo.spring.io/milestone"
mavenContent { releasesOnly ( ) }
}
2020-03-29 16:36:54 -04:00
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${project.springBootVersion}"
2023-08-02 01:30:48 -04:00
classpath "io.freefair.gradle:maven-plugin:${project.gradleFreeFairPluginVersion}"
classpath "io.freefair.gradle:lombok-plugin:${project.gradleFreeFairPluginVersion}"
classpath "io.spring.gradle:dependency-management-plugin:${project.gradleDependencyManagementPluginVersion}"
classpath "com.google.cloud.tools:jib-gradle-plugin:${project.jibVersion}"
classpath "com.bmuschko:gradle-docker-plugin:${project.gradleDockerPluginVersion}"
classpath "de.undercouch:gradle-download-task:${project.gradleDownloadTaskVersion}"
classpath "org.apereo.cas:cas-server-core-api-configuration-model:${project.'cas.version'}"
classpath "org.apereo.cas:cas-server-core-configuration-metadata-repository:${project.'cas.version'}"
2020-03-29 16:36:54 -04:00
}
}
repositories {
2023-08-02 01:30:48 -04:00
if ( project . privateRepoUrl ) {
maven {
url project . privateRepoUrl
credentials {
username = project . privateRepoUsername
password = System . env . PRIVATE_REPO_TOKEN
}
}
}
2020-03-29 16:36:54 -04:00
mavenLocal ( )
mavenCentral ( )
2023-08-02 01:30:48 -04:00
maven { url 'https://oss.sonatype.org/content/repositories/releases' }
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots'
mavenContent { snapshotsOnly ( ) }
}
maven {
url "https://repository.apache.org/content/repositories/snapshots"
mavenContent { snapshotsOnly ( ) }
}
maven {
url 'https://build.shibboleth.net/nexus/content/repositories/releases/'
mavenContent { releasesOnly ( ) }
}
maven {
url "https://build.shibboleth.net/nexus/content/repositories/snapshots"
mavenContent { snapshotsOnly ( ) }
}
maven {
url "https://repo.spring.io/milestone"
mavenContent { releasesOnly ( ) }
}
maven {
url "https://jitpack.io"
content {
includeGroupByRegex ".*wss4j.*"
}
mavenContent { releasesOnly ( ) }
}
2020-03-29 16:36:54 -04:00
}
apply plugin: "io.freefair.war-overlay"
apply plugin: "war"
2023-08-02 01:30:48 -04:00
apply plugin: "org.springframework.boot"
apply plugin: "io.freefair.lombok"
2020-03-29 16:36:54 -04:00
apply from: rootProject . file ( "gradle/springboot.gradle" )
2023-08-02 01:30:48 -04:00
apply plugin: "com.google.cloud.tools.jib"
apply plugin: "com.bmuschko.docker-remote-api"
apply from: rootProject . file ( "gradle/tasks.gradle" )
2020-03-29 16:36:54 -04:00
2023-08-02 01:30:48 -04:00
configurations {
all {
resolutionStrategy {
cacheChangingModulesFor 0 , "seconds"
cacheDynamicVersionsFor 0 , "seconds"
preferProjectModules ( )
def failIfConflict = project . hasProperty ( "failOnVersionConflict" ) & & Boolean . valueOf ( project . getProperty ( "failOnVersionConflict" ) )
if ( failIfConflict ) {
failOnVersionConflict ( )
}
}
exclude ( group: "cglib" , module: "cglib" )
exclude ( group: "cglib" , module: "cglib-full" )
exclude ( group: "org.slf4j" , module: "slf4j-log4j12" )
exclude ( group: "org.slf4j" , module: "slf4j-simple" )
exclude ( group: "org.slf4j" , module: "jcl-over-slf4j" )
exclude ( group: "org.apache.logging.log4j" , module: "log4j-to-slf4j" )
}
}
war {
entryCompression = ZipEntryCompression . STORED
enabled = false
2020-03-29 16:36:54 -04:00
}
2023-08-02 01:30:48 -04:00
java {
toolchain {
languageVersion = JavaLanguageVersion . of ( project . targetCompatibility )
}
}
2020-03-29 16:36:54 -04:00
2023-08-02 01:30:48 -04:00
bootBuildImage {
imageName = "${project.'containerImageOrg'}/${project.'containerImageName'}:${project.version}"
}
2020-03-29 16:36:54 -04:00
2023-08-02 01:30:48 -04:00
[ 'jibDockerBuild' , 'jibBuildTar' , 'jib' ] . each { taskName - >
if ( gradle . gradleVersion > = "8.0" ) {
getTasksByName ( taskName , true ) . each ( it - > {
it . notCompatibleWithConfigurationCache ( "Jib is not compatible with configuration cache" ) ;
it . enabled = ! gradle . startParameter . isConfigurationCacheRequested ( )
} )
2020-03-29 16:36:54 -04:00
}
}
2023-08-02 01:30:48 -04:00
def imagePlatforms = project . dockerImagePlatform . split ( "," )
def dockerUsername = providers . systemProperty ( "dockerUsername" ) . getOrNull ( )
def dockerPassword = providers . systemProperty ( "dockerPassword" ) . getOrNull ( )
def imageTagPostFix = providers . systemProperty ( "dockerImageTagPostfix" ) . getOrElse ( "" )
jib {
if ( gradle . gradleVersion > = "8.0" & & gradle . startParameter . isConfigurationCacheRequested ( ) ) {
def out = services . get ( StyledTextOutputFactory ) . create ( "cas" )
out . withStyle ( Style . Info ) . println ( "You are seeing this message because the Gradle configuration cache is turned on" )
out . withStyle ( Style . Info ) . println ( "Running Jib tasks to produce Docker images will require the command-line option: --no-configuration-cache" )
out . withStyle ( Style . Info ) . println ( "Jib does not support the Gradle configuration cache; Please see https://github.com/GoogleContainerTools/jib/issues/3132" )
out . withStyle ( Style . Info ) . println ( "Jib tasks are disabled." )
}
from {
image = project . baseDockerImage
platforms {
imagePlatforms . each {
def given = it . split ( ":" )
platform {
architecture = given [ 0 ]
os = given [ 1 ]
}
}
}
}
to {
image = "${project.'containerImageOrg'}/${project.'containerImageName'}:${project.version}"
/ * *
ecr - login: Amazon Elastic Container Registry ( ECR )
gcr: Google Container Registry ( GCR )
osxkeychain: Docker Hub
* /
credHelper = "osxkeychain"
if ( dockerUsername ! = null & & dockerPassword ! = null ) {
auth {
username = "${dockerUsername}"
password = "${dockerPassword}"
}
}
tags = [ project . version ]
}
container {
creationTime = "USE_CURRENT_TIMESTAMP"
entrypoint = [ '/docker/entrypoint.sh' ]
ports = [ '80' , '443' , '8080' , '8443' , '8444' , '8761' , '8888' , '5000' ]
labels = [ version: project . version , name: project . name , group: project . group , org: project . containerImageOrg ]
workingDirectory = '/docker/cas/war'
}
extraDirectories {
paths {
path {
from = file ( 'src/main/jib' )
}
path {
from = file ( 'etc/cas' )
into = '/etc/cas'
}
path {
from = file ( "build/libs" )
into = "/docker/cas/war"
}
}
permissions = [
'/docker/entrypoint.sh' : '755'
]
2020-03-29 16:36:54 -04:00
}
2023-08-02 01:30:48 -04:00
allowInsecureRegistries = project . allowInsecureRegistries
2020-03-29 16:36:54 -04:00
}
2023-08-02 01:30:48 -04:00
import com.bmuschko.gradle.docker.tasks.image.*
tasks . register ( "casBuildDockerImage" , DockerBuildImage ) {
dependsOn ( "build" )
def imageTag = "${project.'cas.version'}"
inputDir = project . projectDir
images . add ( "apereo/cas:${imageTag}${imageTagPostFix}" )
images . add ( "apereo/cas:latest${imageTagPostFix}" )
if ( dockerUsername ! = null & & dockerPassword ! = null ) {
username = dockerUsername
password = dockerPassword
}
doLast {
def out = services . get ( StyledTextOutputFactory ) . create ( "cas" )
out . withStyle ( Style . Success ) . println ( "Built CAS images successfully." )
2020-03-29 16:36:54 -04:00
}
}
2023-08-02 01:30:48 -04:00
tasks . register ( "casPushDockerImage" , DockerPushImage ) {
dependsOn ( "casBuildDockerImage" )
def imageTag = "${project.'cas.version'}"
images . add ( "apereo/cas:${imageTag}${imageTagPostFix}" )
images . add ( "apereo/cas:latest${imageTagPostFix}" )
if ( dockerUsername ! = null & & dockerPassword ! = null ) {
username = dockerUsername
password = dockerPassword
}
doLast {
def out = services . get ( StyledTextOutputFactory ) . create ( "cas" )
out . withStyle ( Style . Success ) . println ( "Pushed CAS images successfully." )
2020-03-29 16:36:54 -04:00
}
}
2023-08-02 01:30:48 -04:00
dependencies {
/ * *
* Do NOT modify the lines below or else you will risk breaking dependency management .
* /
implementation enforcedPlatform ( "org.apereo.cas:cas-server-support-bom:${project.'cas.version'}" )
implementation platform ( org . springframework . boot . gradle . plugin . SpringBootPlugin . BOM_COORDINATES )
/ * *
* Do NOT modify the lines below or else you will risk breaking the build .
* /
implementation "org.apereo.cas:cas-server-core-api-configuration-model"
implementation "org.apereo.cas:cas-server-webapp-init"
2020-03-29 16:36:54 -04:00
2023-08-02 01:30:48 -04:00
developmentOnly "org.springframework.boot:spring-boot-devtools:${project.springBootVersion}"
/ * *
* CAS dependencies and modules may be listed here .
*
* There is no need to specify the version number for each dependency
* since versions are all resolved and controlled by the dependency management
* plugin via the CAS bom .
* * /
implementation "org.apereo.cas:cas-server-support-rest"
implementation "org.apereo.cas:cas-server-support-json-service-registry"
implementation "org.apereo.cas:cas-server-support-jdbc"
if ( project . hasProperty ( "casModules" ) ) {
def dependencies = project . getProperty ( "casModules" ) . split ( "," )
dependencies . each {
def projectsToAdd = rootProject . subprojects . findAll { project - >
project . name = = "cas-server-core-${it}" | | project . name = = "cas-server-support-${it}"
}
projectsToAdd . each { implementation it }
}
}
testImplementation "org.springframework.boot:spring-boot-starter-test"
2020-03-29 16:36:54 -04:00
}
2023-08-02 01:30:48 -04:00