import groovy.io.FileType import com.amazonaws.auth.STSAssumeRoleSessionCredentialsProvider import com.amazonaws.services.s3.AmazonS3Client apply plugin: 'java-library' apply plugin: 'maven-publish' group = 'com.mojang' version = project.hasProperty('buildNumber') ? "${project.majorMinor}.${project.buildNumber}" : "${project.majorMinor}.0-SNAPSHOT" buildscript { repositories { mavenCentral() maven { url "https://libraries.minecraft.net" } } dependencies { classpath 'com.amazonaws:aws-java-sdk:1.11.33' } } repositories { maven { url "https://libraries.minecraft.net" } mavenCentral() } dependencies { testCompile 'com.google.guava:guava:26.0-jre' testCompile 'junit:junit-dep:4.11' testCompile 'org.hamcrest:hamcrest-library:1.3' testCompile 'org.mockito:mockito-core:1.10.19' testCompile 'com.google.guava:guava-testlib:26.0-jre' testCompile 'org.openjdk.jmh:jmh-core:1.21' annotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess:1.21' } task sourcesJar(type: Jar) { classifier = 'sources' from sourceSets.main.allSource } sourceSets { main { java { srcDirs = ['src/main/java'] } resources { srcDirs = ['src/main/resources'] } } test { java { srcDirs = ['src/test/java'] } resources { srcDirs = ['src/test/resources'] } } } artifacts { archives jar archives sourcesJar } test { testLogging { events "failed", "skipped" showStandardStreams = true showExceptions true } } publishing { publications { mavenJava(MavenPublication) { from components.java artifact sourcesJar } } } task report { doLast { println "##teamcity[buildNumber '${project.version}']" } } def publishDir = file("$buildDir/repo") def uploadFile(s3, bucket, path, filename) { println "Uploading $filename to $bucket as $path" s3.putObject(bucket, path, filename) } clean.doLast { delete publishDir } if (version.endsWith("SNAPSHOT")) { publishing.repositories { mavenLocal() } } else { publishing.repositories { maven { url "$buildDir/repo" } } publish.doLast { def AWSRoleARN = (System.getenv("AWS_ROLE_ARN") != null && System.getenv("AWS_ROLE_ARN") != "" ? System.getenv("AWS_ROLE_ARN") : null) if (AWSRoleARN == null) throw new GradleException("AWS Role has not been configured, use the `AWS_ROLE_ARN` environment variable") def auth = new STSAssumeRoleSessionCredentialsProvider.Builder(AWSRoleARN, "JavaBrigadierPublish").build() def s3 = new AmazonS3Client(auth) publishDir.eachFileRecurse { if (!it.name.contains(".xml") && !it.name.contains(".md5") && it.isFile()) { def relPath = publishDir.toPath().relativize(it.toPath()).toFile().toString().replaceAll('\\\\', '/') uploadFile(s3, "minecraft-libraries", relPath, it) } } } }