blob: 62277d4c4859041608f46566a7e808083f3a257f [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE
* file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
* to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
import org.gradle.crypto.checksum.Checksum
import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
plugins { id 'com.bmuschko.docker-remote-api' version '3.2.3' }
description = 'Tuweni distribution.'
apply plugin: 'distribution'
jar { enabled = false }
static def mandatoryFiles(CopySpec spec) {
spec.into('') {
from ".."
include 'DISCLAIMER'
include 'LICENSE'
include 'NOTICE'
}
spec.into('licenses') { from '../build/reports/license' }
}
distributions {
main {
baseName = 'tuweni-bin'
contents {
mandatoryFiles(it)
into('') {
from ".."
include 'README.md'
}
def docs = []
def libs = []
def sources = []
rootProject.subprojects.each { s ->
if (s.name != 'eth-reference-tests' && s.name != 'eth2-reference-tests' && s.name != 'dist') {
libs << s.signArchives.signatureFiles[0]
sources << s.signArchives.signatureFiles[1]
docs << s.signArchives.signatureFiles[2]
libs << s.jar.outputs
sources << s.sourcesJar.outputs
docs << s.dokkaJar.outputs
}
}
into('lib') {
from rootProject.jar
from rootProject.signArchives.signatureFiles[0]
from libs
}
into('docs') {
from rootProject.dokkaJar
from rootProject.signArchives.signatureFiles[2]
from docs
}
into('site') {
from rootProject.dokka.outputDirectory
from rootProject.javadoc.outputDirectory
}
}
}
sources {
baseName = 'tuweni-src'
contents {
mandatoryFiles(it)
into('') {
from ".."
include 'README.md'
include '*.md'
include '*.gradle'
include 'dependency-versions.gradle'
include 'gradle/resources/*'
include 'gradle/*'
include 'gradle.properties'
}
rootProject.subprojects.each {
include it.projectDir.name + '/src/**'
include it.projectDir.name + '/build.gradle'
}
}
}
gossip {
baseName = 'tuweni-gossip'
contents {
mandatoryFiles(it)
into('') {
from ".."
include 'gossip/README.md'
}
into('bin') {
from { project(':gossip').startScripts.outputs.files }
fileMode = 0755
}
into('lib') {
def libs = []
libs << project(':gossip').configurations.runtime
from libs
from project(':gossip').jar
}
}
}
relayer {
baseName = 'tuweni-relayer'
contents {
mandatoryFiles(it)
into('') {
from ".."
include 'hobbits-relayer/README.md'
}
into('bin') {
from { project(':hobbits-relayer').startScripts.outputs.files }
fileMode = 0755
}
into('lib') {
def libs = []
libs << project(':hobbits-relayer').configurations.runtime
from libs
from project(':hobbits-relayer').jar
}
}
}
}
sourcesDistZip { zip64 = true }
distTar{ compression = Compression.GZIP }
sourcesDistTar{ compression = Compression.GZIP }
gossipDistTar{ compression = Compression.GZIP }
relayerDistTar{ compression = Compression.GZIP }
if (System.getenv('ENABLE_SIGNING') == 'true') {
signing {
useGpgCmd()
sign distZip
sign distTar
sign sourcesDistZip
sign sourcesDistTar
sign gossipDistZip
sign gossipDistTar
sign relayerDistZip
sign relayerDistTar
}
}
task createChecksums(type: Checksum, dependsOn: [
'distZip',
'distTar',
'sourcesDistZip',
'sourcesDistTar',
'gossipDistZip',
'gossipDistTar',
'relayerDistZip',
'relayerDistTar'
]) {
files = distZip.outputs.files + distTar.outputs.files + sourcesDistZip.outputs.files + sourcesDistTar.outputs.files \
+ gossipDistZip.outputs.files + gossipDistTar.outputs.files + relayerDistZip.outputs.files + relayerDistTar.outputs.files
outputDir = new File(project.buildDir, "distributions")
algorithm = Checksum.Algorithm.SHA512
}
build.dependsOn('createChecksums')
task buildGossipImage(type: DockerBuildImage) {
dependsOn gossipDistTar
inputDir = projectDir
dockerFile = file("docker/gossip.Dockerfile")
tag = "apache-tuweni/gossip:$project.version"
}
task buildRelayerImage(type: DockerBuildImage) {
dependsOn relayerDistTar
inputDir = projectDir
dockerFile = file("docker/relayer.Dockerfile")
tag = "apache-tuweni/relayer:$project.version"
}