141 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
/**
 | 
						|
 * Copyright © 2016-2019 The Thingsboard Authors
 | 
						|
 *
 | 
						|
 * Licensed 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.apache.tools.ant.filters.ReplaceTokens
 | 
						|
 | 
						|
buildscript {
 | 
						|
    ext {
 | 
						|
        osPackageVersion = "3.8.0"
 | 
						|
    }
 | 
						|
    repositories {
 | 
						|
        jcenter()
 | 
						|
    }
 | 
						|
    dependencies {
 | 
						|
        classpath("com.netflix.nebula:gradle-ospackage-plugin:${osPackageVersion}")
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
apply plugin: "nebula.ospackage"
 | 
						|
 | 
						|
buildDir = projectBuildDir
 | 
						|
version = projectVersion
 | 
						|
distsDirName = "./"
 | 
						|
 | 
						|
// OS Package plugin configuration
 | 
						|
ospackage {
 | 
						|
    packageName = pkgName
 | 
						|
    version = "${project.version}"
 | 
						|
    release = 1
 | 
						|
    os = LINUX
 | 
						|
    type = BINARY
 | 
						|
 | 
						|
    into pkgInstallFolder
 | 
						|
 | 
						|
    user pkgName
 | 
						|
    permissionGroup pkgName
 | 
						|
 | 
						|
    // Copy the actual .jar file
 | 
						|
    from(mainJar) {
 | 
						|
        // Strip the version from the jar filename
 | 
						|
        rename { String fileName ->
 | 
						|
            "${pkgName}.jar"
 | 
						|
        }
 | 
						|
        fileMode 0500
 | 
						|
        into "bin"
 | 
						|
    }
 | 
						|
 | 
						|
    // Copy the config files
 | 
						|
    from("target/conf") {
 | 
						|
        exclude "${pkgName}.conf"
 | 
						|
        fileType CONFIG | NOREPLACE
 | 
						|
        fileMode 0754
 | 
						|
        into "conf"
 | 
						|
    }
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// Configure our RPM build task
 | 
						|
buildRpm {
 | 
						|
 | 
						|
    arch = NOARCH
 | 
						|
 | 
						|
    version = projectVersion.replace('-', '')
 | 
						|
    archiveName = "${pkgName}.rpm"
 | 
						|
 | 
						|
    requires("java-1.8.0")
 | 
						|
 | 
						|
    from("target/conf") {
 | 
						|
        include "${pkgName}.conf"
 | 
						|
        filter(ReplaceTokens, tokens: ['pkg.platform': 'rpm'])
 | 
						|
        fileType CONFIG | NOREPLACE
 | 
						|
        fileMode 0754
 | 
						|
        into "${pkgInstallFolder}/conf"
 | 
						|
    }
 | 
						|
 | 
						|
    preInstall file("${buildDir}/control/rpm/preinst")
 | 
						|
    postInstall file("${buildDir}/control/rpm/postinst")
 | 
						|
    preUninstall file("${buildDir}/control/rpm/prerm")
 | 
						|
    postUninstall file("${buildDir}/control/rpm/postrm")
 | 
						|
 | 
						|
    user pkgName
 | 
						|
    permissionGroup pkgName
 | 
						|
 | 
						|
    // Copy the system unit files
 | 
						|
    from("${buildDir}/control/${pkgName}.service") {
 | 
						|
        addParentDirs = false
 | 
						|
        fileMode 0644
 | 
						|
        into "/usr/lib/systemd/system"
 | 
						|
    }
 | 
						|
 | 
						|
    directory(pkgLogFolder, 0755)
 | 
						|
    link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml")
 | 
						|
    link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
 | 
						|
}
 | 
						|
 | 
						|
// Same as the buildRpm task
 | 
						|
buildDeb {
 | 
						|
 | 
						|
    arch = "all"
 | 
						|
 | 
						|
    archiveName = "${pkgName}.deb"
 | 
						|
 | 
						|
    requires("openjdk-8-jre").or("java8-runtime").or("oracle-java8-installer").or("openjdk-8-jre-headless")
 | 
						|
 | 
						|
    from("target/conf") {
 | 
						|
        include "${pkgName}.conf"
 | 
						|
        filter(ReplaceTokens, tokens: ['pkg.platform': 'deb'])
 | 
						|
        fileType CONFIG | NOREPLACE
 | 
						|
        fileMode 0754
 | 
						|
        into "${pkgInstallFolder}/conf"
 | 
						|
    }
 | 
						|
 | 
						|
    configurationFile("${pkgInstallFolder}/conf/${pkgName}.conf")
 | 
						|
    configurationFile("${pkgInstallFolder}/conf/${pkgName}.yml")
 | 
						|
    configurationFile("${pkgInstallFolder}/conf/logback.xml")
 | 
						|
 | 
						|
    preInstall file("${buildDir}/control/deb/preinst")
 | 
						|
    postInstall file("${buildDir}/control/deb/postinst")
 | 
						|
    preUninstall file("${buildDir}/control/deb/prerm")
 | 
						|
    postUninstall file("${buildDir}/control/deb/postrm")
 | 
						|
 | 
						|
    user pkgName
 | 
						|
    permissionGroup pkgName
 | 
						|
 | 
						|
    directory(pkgLogFolder, 0755)
 | 
						|
    link("/etc/init.d/${pkgName}", "${pkgInstallFolder}/bin/${pkgName}.jar")
 | 
						|
    link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml")
 | 
						|
    link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
 | 
						|
}
 |