forked from finos/plexus-interop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle
107 lines (92 loc) · 3.46 KB
/
build.gradle
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
plugins {
id "com.moowork.node" version "1.2.0"
id "com.github.hierynomus.license" version"0.14.0"
}
def ciBuild = System.env['BuildRunner'] != null
def ciPublishBuild = ciBuild && (System.env['APPVEYOR_REPO_TAG'] == "true" || System.env['NPM_PUBLISH'] == "true")
def isWindows = org.gradle.internal.os.OperatingSystem.current().isWindows()
def e2eTestsEnabled = isWindows && System.env['BuildRunner'] != "MyGet" && System.env['PLEXUS_BUILD_SKIP_WEB_TESTS'] != 'true'
def ciFullBuild = ciBuild && e2eTestsEnabled
def npmPackageVersion = System.getenv("PLEXUS_BUILD_NPM_PACKAGE_VERSION") ?: (System.getenv("APPVEYOR_REPO_TAG_NAME") ?: System.getenv("PackageVersion"))
def npmRegistry = System.env['NPM_REGISTRY']
def npmEmail = System.env['NPM_AUTH_USER']
def npmAuth = System.env['NPM_AUTH_TOKEN']
def customNpmVersion = '6.10.3'
node {
version = '10.16.2'
npmVersion = customNpmVersion
nodeModulesDir = projectDir
download = true
}
license {
header file("${rootDir}/FILE_HEADER")
mapping {
ts='JAVADOC_STYLE'
proto='DOUBLESLASH_STYLE'
interop='DOUBLESLASH_STYLE'
}
strictCheck true
}
task licenseFormatTS(type: com.hierynomus.gradle.license.tasks.LicenseFormat) {
source = fileTree(dir: ".").exclude("**/node_modules/*").exclude("**/dist/*")
.include("**/*.ts").include("**/*.js").include("**/*.proto").include("**/*.interop")
}
task genNpmrc() {
doLast {
def content = """
# Auto generated by Gradle build
${npmRegistry != null ? "registry=" + npmRegistry : ""}
${npmEmail != null ? "email=" + npmEmail : ""}
${npmAuth != null ? "_auth=" + npmAuth : ""}
"""
def npmConfigFolder = "$projectDir/.gradle/npm/npm-v$customNpmVersion/etc"
file(npmConfigFolder).mkdirs()
// global config
file("$npmConfigFolder/npmrc").text = content
// user config
file("$projectDir/.npmrc").text = content
}
}
tasks["license"].dependsOn licenseFormatTS
licenseFormat.dependsOn licenseFormatTS
tasks.npmSetup.dependsOn genNpmrc
task npmVersion(type: NpmTask) {
args = ['--version']
}
task npmRunInstall(type: NpmTask, dependsOn: npmVersion) {
args = ['install', '--no-package-lock']
}
task preNpmBuild {
doLast {
println "NPM Package version: $npmPackageVersion"
println "CI Publish: $ciPublishBuild"
println "CI Full: $ciFullBuild"
println "CI Build: $ciBuild"
println "Integration tests: $e2eTestsEnabled"
File packagesDir = file('packages');
FileCollection collection = files { packagesDir.listFiles() }
println "\nModules to build:"
collection.collect { relativePath(it) }.sort().each { println it }
}
}
task npmBuild(type: NpmTask, dependsOn: ['npmRunInstall', 'preNpmBuild', ':dsl:gen:cli:build']) {
// https://github.com/srs/gradle-node-plugin/issues/128
environment = [
'PLEXUS_BUILD_NPM_PACKAGE_VERSION': npmPackageVersion,
'PLEXUS_CLI_SKIP_JRE_DOWNLOAD': 'true',
'PLEXUS_CLI_SKIP_PROTOC_DOWNLOAD': 'true'
]
args = ciPublishBuild ? ['run', 'ci-publish'] :
ciFullBuild ? ['run', 'ci-build-e2e'] :
ciBuild ? ['run', 'ci-build'] :
e2eTestsEnabled ? ['run', 'build-e2e'] : ['run', 'build']
}
task npmBuildOnly(type: NpmTask, dependsOn: ['npmRunInstall', 'preNpmBuild']) {
args = ['run', 'build']
}
task buildTransport(dependsOn: npmBuild) {
outputs.dir('.')
}
task build(dependsOn: buildTransport) {
}
build.dependsOn('license')