You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
4.0 KiB

  1. plugins {
  2. id 'com.bmuschko.docker-remote-api' version '3.6.1'
  3. id 'war'
  4. }
  5. sourceCompatibility = JavaVersion.VERSION_1_8
  6. targetCompatibility = JavaVersion.VERSION_1_8
  7. compileJava.options.encoding = "UTF-8"
  8. import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
  9. import com.bmuschko.gradle.docker.tasks.image.DockerPushImage
  10. import com.bmuschko.gradle.docker.tasks.image.Dockerfile
  11. group 'com.wanhai.tml'
  12. version '1.0.1'
  13. ext{
  14. baseImgName="${docker_rep_url}/jboss/wildfly-base"
  15. baseImgTag="latest"
  16. targetImgName="${docker_rep_url}/wanhai/demo/${project.name.replaceAll("_","-").toLowerCase()}"
  17. targetImgTag="${project.version}"
  18. }
  19. /***************Gardle Docker plugin setting***************************/
  20. docker{
  21. registryCredentials {
  22. url = "http://${docker_rep_url}"
  23. username = docker_rep_user
  24. password = docker_rep_password
  25. }
  26. }
  27. task prepareDockerBuild(type: Copy, dependsOn:build){
  28. from "${buildDir}/libs/${war.archiveName}"
  29. into "${buildDir}/docker"
  30. }
  31. task createDockerFile(type: Dockerfile,dependsOn: prepareDockerBuild){
  32. destFile=project.file("${buildDir}/docker/Dockerfile")
  33. from "${baseImgName}:${baseImgTag}"
  34. label(['Maintainer':'richard_shih@wanhai.com'])
  35. copyFile "$war.archiveName",'${JBOSS_HOME}/standalone/deployments'
  36. }
  37. task buildImage(type: DockerBuildImage, dependsOn: createDockerFile){
  38. inputDir = createDockerFile.destFile.parentFile
  39. tag="${targetImgName}:${targetImgTag}"
  40. }
  41. task pushImage(type: DockerPushImage, dependsOn: buildImage){
  42. imageName=buildImage.tag
  43. }
  44. /**********************************************************************/
  45. /****************************Pipleline Tasks***************************/
  46. /**
  47. * build & deploy to server
  48. */
  49. task deploy(type: Exec,dependsOn: 'release'){
  50. def stackName="TML-${project.environment.toUpperCase()}"
  51. def serviceName = "${project.name.replaceAll('_', '-')}"
  52. def scriptPath = "${buildDir}/deploy.sh"
  53. doFirst{
  54. //carete upgrade script before task start
  55. if(project.hasProperty('isCI') && Boolean.valueOf(project.isCI)){
  56. File f = new File(scriptPath);
  57. f.delete()
  58. f.withWriter('utf-8') {writer ->
  59. writer.writeLine "rancher export ${stackName} && cd ${stackName}"
  60. writer.writeLine "rancher up -d --pull --upgrade --force-upgrade ${serviceName}"
  61. writer.writeLine "cd .. && rm -rf ${stackName}"
  62. }
  63. f.setExecutable(true)
  64. }
  65. }
  66. if(project.hasProperty('isCI') && Boolean.valueOf(project.isCI)){
  67. commandLine scriptPath
  68. }
  69. }
  70. /**
  71. * build & push to repository
  72. */
  73. task release(dependsOn: build){
  74. if(project.hasProperty('isCI') && Boolean.valueOf(project.isCI)){
  75. dependsOn pushImage
  76. }
  77. }
  78. /**
  79. * Entry point of pipleline
  80. */
  81. task pipleline(dependsOn: build){
  82. if(project.hasProperty('isCI') && Boolean.valueOf(project.isCI)){
  83. if(project.hasProperty('isRelease') && Boolean.valueOf(project.isRelease)){
  84. dependsOn release
  85. }
  86. if(project.hasProperty('isDeploy') && Boolean.valueOf(project.isDeploy)){
  87. dependsOn deploy
  88. }
  89. }
  90. }
  91. /**********************************************************************/
  92. war{
  93. manifest {
  94. attributes("Implementation-Title": project.name,
  95. "Implementation-Version": project.version,
  96. "Implementation-Vendor":"WANHAI LINES LTD.",
  97. "Built-By":"IT Division",
  98. "Greated-By":"Gradle $gradle.gradleVersion",
  99. "Java-Version": System.getProperty("java.version") + " " + "(" + System.getProperty("java.vm.vendor") + ")")
  100. }
  101. }
  102. repositories {
  103. maven {
  104. url "http://${maven_rep_url}/repository/maven-public/"
  105. }
  106. }
  107. dependencies {
  108. providedCompile 'org.zkoss.zk:zkbind:8.0.2.2',
  109. 'org.zkoss.zk:zhtml:8.0.2.2',
  110. 'org.zkoss.zk:zkplus:8.0.2.2',
  111. 'org.zkoss.zk:zul:8.0.2.2'
  112. providedCompile 'javax:javaee-api:7.0'
  113. }