11plugins {
22 id ' java'
3- id ' eclipse'
4- id ' maven'
5- id ' jacoco'
63 id ' org.springframework.boot' version ' 2.2.5.RELEASE'
74 id ' io.spring.dependency-management' version ' 1.0.9.RELEASE'
8- id ' com.palantir.docker' version ' 0.25.0'
9- // id 'org.sonarqube' version '2.7'
10- // id 'com.palantir.graal' version '0.6.0-112-gca0b727'
5+ id ' eclipse'
6+ id ' jacoco'
7+ id ' org.sonarqube' version ' 3.3'
8+ id ' maven-publish'
119}
1210
1311group = ' com.iexec.result-proxy'
1412sourceCompatibility = 11
1513targetCompatibility = 11
1614
1715repositories {
16+ mavenLocal()
1817 mavenCentral()
1918 maven {
2019 url ' https://nexus.iex.ec/repository/maven-public/'
@@ -28,7 +27,6 @@ configurations {
2827 compileOnly {
2928 extendsFrom annotationProcessor
3029 }
31- deployerJars
3230}
3331
3432ext {
3836dependencies {
3937 // iexec
4038 implementation " com.iexec.common:iexec-common:${ iexecCommonVersion} "
41- // implementation files("../iexec-common/build/libs/iexec-common-${iexecCommonVersion}.jar")
4239
4340 // Web3j issues, see core build.gradle
4441 implementation ' com.squareup.okhttp3:okhttp:4.3.1'
@@ -72,9 +69,6 @@ dependencies {
7269
7370 // expiring map
7471 implementation ' net.jodah:expiringmap:0.5.8'
75-
76- // package cloud
77- deployerJars ' io.packagecloud.maven.wagon:maven-packagecloud-wagon:0.0.6'
7872}
7973
8074dependencyManagement {
@@ -87,26 +81,24 @@ test {
8781 useJUnitPlatform()
8882}
8983
84+ task itest {
85+ group ' Verification'
86+ description ' Runs the integration tests.'
87+ }
88+
9089// the test coverage report is
9190// created just before the build
92- build. dependsOn jacocoTestReport
93-
94- // ######################
95- // # build meta #
96- // ######################
97-
98- def gitBranch = ' git name-rev --name-only HEAD' . execute(). text. trim()
99- def isMasterBranch = gitBranch == ' master'
100- def isDevelopBranch = gitBranch == ' develop'
101- def isSnapshotVersion = project. version. contains(' SNAPSHOT' )
102-
103- def nexusUser = project. hasProperty(' nexusUser' ) ? project. getProperty(' nexusUser' ) : ' '
104- def nexusPassword = project. hasProperty(' nexusPassword' ) ? project. getProperty(' nexusPassword' ) : ' '
105- def hasNexusProperties = ! nexusUser. isEmpty() && ! nexusPassword. isEmpty()
106-
107- def canUploadArchives = (isMasterBranch || isDevelopBranch ) && hasNexusProperties
108- def canPushDockerImage = (isMasterBranch || isDevelopBranch ) && hasNexusProperties
109- def canBuildDockerImage = isMasterBranch || isDevelopBranch || project. hasProperty(' forceDockerBuild' )
91+ jacoco {
92+ toolVersion = " 0.8.7"
93+ }
94+ // sonarqube code coverage requires jacoco XML report
95+ jacocoTestReport {
96+ reports {
97+ xml. enabled true
98+ }
99+ }
100+ tasks. test. finalizedBy tasks. jacocoTestReport
101+ tasks. sonarqube. dependsOn tasks. jacocoTestReport
110102
111103// ######################
112104// # create version #
@@ -123,95 +115,32 @@ compileJava.dependsOn createVersion
123115// # upload archive #
124116// ######################
125117
126- project . ext . getNexusMaven = {
127- def nexusMavenBase = ' https://nexus.iex.ec/repository '
128- if (isSnapshotVersion ) {
129- return nexusMavenBase + ' /maven-snapshots/ '
130- } else {
131- return nexusMavenBase + ' /maven-releases/ '
118+ publishing {
119+ publications {
120+ maven( MavenPublication ) {
121+ artifact bootJar
122+ from components . java
123+ }
132124 }
133- }
134-
135- uploadArchives {
136- enabled = canUploadArchives
137- repositories. mavenDeployer {
138- configuration = configurations. deployerJars
139- repository(url : getNexusMaven()) {
140- authentication(userName : nexusUser, password : nexusPassword)
125+ repositories {
126+ maven {
127+ credentials {
128+ username project. hasProperty(' nexusUser' ) ? nexusUser : ' '
129+ password project. hasProperty(' nexusPassword' ) ? nexusPassword : ' '
130+ }
131+ url project. hasProperty(' nexusUrl' ) ? nexusUrl : ' '
141132 }
142133 }
143134}
144135
145- // ######################
146- // # docker #
147- // ######################
148-
149- // build, tag & push image
150- // ./gradlew docker dockerTagDev dockerTagsPush
151-
152- def dockerImageBaseName = ' nexus.iex.ec/iexec-result-proxy'
153- def gitShortCommit = ' git rev-parse --short HEAD' . execute(). text. trim()
154- def dockerImageTag = isSnapshotVersion ? " ${ version} -${ gitShortCommit} " : version
155-
156- docker {
157- name " ${ dockerImageBaseName} :${ dockerImageTag} "
158- tag ' FullTag' , " ${ dockerImageBaseName} :${ dockerImageTag} "
159- tag ' ShortCommitTag' , " ${ dockerImageBaseName} :${ gitShortCommit} "
160- tag ' Dev' , " ${ dockerImageBaseName} :dev"
161- dockerfile file(' Dockerfile' )
162- files " build/libs/iexec-result-proxy-${ project.version} .jar"
163- buildArgs([BUILD_VERSION : project. version])
164- }
165-
166- task buildImage {
167- enabled = canBuildDockerImage
168- dependsOn tasks. docker
169- }
170-
171- // docker build
172- tasks. docker {
173- enabled = canBuildDockerImage
174- }
175-
176- task pushImage {
177- enabled = canPushDockerImage
178- dependsOn dockerTagsPush
179- }
180-
181- // docker login
182- task dockerLogin (type : Exec ) {
183- enabled = canPushDockerImage
184- commandLine(' sh' , ' -c' , " docker login -u ${ nexusUser} -p ${ nexusPassword} nexus.iex.ec" )
185- }
186-
187- // docker logout
188- task dockerLogout (type : Exec ) {
189- enabled = canPushDockerImage
190- commandLine(' sh' , ' -c' , ' docker logout nexus.iex.ec' )
191- }
192-
193- // docker push
194- dockerTagsPush {
195- enabled = canPushDockerImage
196- // shouldRunAfter tasks.docker
197- dependsOn dockerLogin
198- finalizedBy dockerLogout
199- }
200-
201- afterEvaluate {
202- // don't tag if image is not build
203- for (t in tasks. findAll{e -> e. name. contains(" dockerTag" )}) {
204- t. enabled = canBuildDockerImage
205- }
206- // don't push tags if canPushDockerImage == false
207- // (dockerPushFullTag, dockerPushShortCommitTag)
208- def dockerPushTasks = tasks. findAll{t -> t. name. contains(" dockerPush" )}
209- for (t in dockerPushTasks) {
210- t. enabled = canPushDockerImage
211- }
212- // don't push dev tag
213- dockerPushDev. enabled = false
136+ ext. bootJarPath = relativePath(tasks. bootJar. outputs. files. singleFile)
137+ ext. gitShortCommit = ' git rev-parse --short=8 HEAD' . execute(). text. trim()
138+ ext. ociImageName = ' local/' + [' bash' , ' -c' , ' basename $(git config --get remote.origin.url) .git' ]. execute(). text. trim()
214139
215- // create :dev tag after image build
216- buildImage. dependsOn dockerTagDev
140+ task buildImage (type : Exec ) {
141+ group ' Build'
142+ description ' Builds an OCI image from a Dockerfile.'
143+ dependsOn tasks. bootJar
144+ commandLine (" sh" , " -c" , " docker build --build-arg spring_boot_jar=$bootJarPath -t $ociImageName :$gitShortCommit ."
145+ + " && docker tag $ociImageName :$gitShortCommit $ociImageName :dev" )
217146}
0 commit comments