aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-docs/build.gradle
blob: b7bc9f82eb3fc40ea911cc0e63b2cff9e18a92fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import java.util.regex.Matcher
import java.util.regex.Pattern

Pattern PLUGIN_NAME_PATTERN = Pattern.compile("(sonar-.*-plugin)(.*)")


/**
 * This module is building the zip file containing the static web site
 */

sonarqube {
  skipProject = true
}

group = 'com.sonarsource.sonarqube'

configurations {
  bundledPlugin {
    transitive = false
  }
}

// loads the bundled_plugins.gradle of each edition
// (they will all add there own bundled plugins to the bundledPlugin dependency configuration)
apply from: new File(rootDir, 'sonar-application/bundled_plugins.gradle')
File closeSourceDir = new File(rootDir, 'private');
if (closeSourceDir.exists()) {
  apply from: new File(closeSourceDir, 'edition-developer/bundled_plugins.gradle')
  apply from: new File(closeSourceDir, 'edition-enterprise/bundled_plugins.gradle')
  apply from: new File(closeSourceDir, 'edition-datacenter/bundled_plugins.gradle')
}

task extractAnalyzerDocFiles {
  doLast {
    configurations.bundledPlugin.files.each {
      File file = it
      copy {
        from(zipTree(file).matching { include 'static/documentation.md' }) {
          eachFile { fcd ->
            Matcher m = PLUGIN_NAME_PATTERN.matcher(file.getName())
            if (m.find()) {
              fcd.relativePath = new RelativePath(true, m.group(1) + '.md')
            }
          }
          includeEmptyDirs = false
        }
        into "$buildDir/tmp/plugin-documentation/"
      }
    }
  }
}

yarn_run {
  def docsVersion = version.split("[.-]").take(2).join('.')
  environment = [ GATSBY_DOCS_VERSION: docsVersion ]
  inputs.property('version', docsVersion)
  inputs.dir('src').withPathSensitivity(PathSensitivity.RELATIVE)
  ['gatsby-config.js', 'gatsby-node.js', 'package.json', 'yarn.lock', 'tsconfig.json'].each {
    inputs.file(it).withPathSensitivity(PathSensitivity.RELATIVE)
  }
  outputs.dir('public')
  outputs.cacheIf { true }
  args = ['build']
}
// To clean outputs outside of "build" directory:
clean.dependsOn(cleanYarn_run)

"yarn_validate-ci" {
  // Note that outputs are not relocatable, because contain absolute paths, and that's why inputs are not relativized
  ['config', 'src'].each {
    inputs.dir(it)
  }
  ['package.json', 'yarn.lock', 'tsconfig.json', '.eslintrc'].each {
    inputs.file(it)
  }
  outputs.file('eslint-report.json')
  outputs.dir('coverage')
  outputs.cacheIf { true }

  dependsOn(yarn)
}

task zip(type: Zip) {
  def archiveDir = "$version"
  duplicatesStrategy DuplicatesStrategy.EXCLUDE
  baseName "sonar-docs"

  into("${archiveDir}") {
    from tasks.getByName('yarn_run').outputs
  }
}
zip.dependsOn yarn_run
assemble.dependsOn zip, extractAnalyzerDocFiles

publishing {
  publications {
    docs(MavenPublication) {
      artifactId 'sonar-docs'
      artifact zip
    }
  }
}

artifactory {
  publish {
    contextUrl = System.getenv('ARTIFACTORY_URL')
    repository {
      repoKey = System.getenv('ARTIFACTORY_DEPLOY_REPO_PRIVATE')
      username = System.getenv('ARTIFACTORY_DEPLOY_USERNAME_PRIVATE')
      password = System.getenv('ARTIFACTORY_DEPLOY_PASSWORD_PRIVATE')
    }
  }
}

artifactoryPublish {
  skip = false
  publishPom = false
  publications(publishing.publications.docs)
}