-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathbuild.gradle
116 lines (95 loc) · 3.18 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
108
109
110
111
112
113
114
115
116
plugins {
id "ru.vyarus.use-python" version "2.2.0"
id "org.sonarqube" version "3.0"
}
group = 'com.ibm.watson.health.cdp'
version = "1.0.0"
description = """CDP HL7 Listener Service"""
sonarqube {
properties {
property "sonar.sources", pySrcDir
property "sonar.tests", pyTestDir
property "sonar.python.coverage.reportPaths", pyXmlCoveragePath
property "sonar.python.xunit.reportPath", pyTestReportPath
}
}
python {
pip 'hl7:0.4.2'
pip 'asyncio-nats-client:0.11.4'
//Python dependencies end
envPath = 'build/venv'
}
task setupBuild(type: PythonTask) {
module = 'pip'
extraArgs = ['install', 'pytest==6.2.4', 'pytest-cov==2.7.1', 'pytest-asyncio==0.15.1', 'pytest-mock==3.6.1', 'twine==1.14.0', 'flake8==3.7.8', 'black==19.10b0', 'asynctest==0.13.0']
}
task generateReqs {
doLast {
def newFile = new File("${project.projectDir}/pinned.txt")
newFile.delete()
newFile.createNewFile()
python.modules.each { module ->
newFile.append(module.replace(":", "==") + "\n")
}
}
}
task buildProperties {
doLast {
def newFile = new File("${project.projectDir}/setup.properties")
newFile.delete()
newFile.createNewFile()
newFile.append("[default]")
newFile.append("\nproject_name=${project.name}")
newFile.append("\nproject_version=${project.version}")
newFile.append("\nproject_srcDir=${pySrcDir}")
}
}
task buildWheel(type: PythonTask) {
command = 'setup.py'
extraArgs = ['bdist_wheel', '-d', pyDistDir, '-k']
}
task testPrep(type: PythonTask) {
command = 'setup.py'
extraArgs = ['develop']
}
task testPy(type: PythonTask) {
module = 'pytest'
extraArgs = [pyTestDir, '--junitxml='+pyTestReportPath, '-v', '-rP']
}
task coveragePy(type: PythonTask) {
module = 'pytest'
extraArgs = [pyTestDir, '--cov', pySrcDir, '--cov-report=xml:'+pyXmlCoveragePath, '--cov-report=html:'+pyHtmlCoveragePath, '--cov-report=term']
}
task cleanPy {
doLast {
exec {
commandLine 'rm', '-rf', 'build'
}
}
}
task black(type: PythonTask) {
module = 'black'
extraArgs = [pySrcDir]
}
task dockerBuild(type: Exec) {
commandLine 'docker', 'build', '.', '-t', 'gateway-batch-sender:latest'
}
task build {}
task test {}
task coverage {}
task clean {}
project.tasks.testPy.dependsOn project.tasks.setupBuild
project.tasks.testPy.dependsOn project.tasks.testPrep
project.tasks.testPrep.dependsOn project.tasks.buildProperties
project.tasks.coveragePy.dependsOn project.tasks.setupBuild
project.tasks.coveragePy.dependsOn project.tasks.testPrep
project.tasks.black.dependsOn project.tasks.setupBuild
project.tasks.dockerBuild.dependsOn project.tasks.build
project.tasks.build.dependsOn project.tasks.setupBuild
project.tasks.build.dependsOn project.tasks.buildProperties
project.tasks.build.dependsOn project.tasks.generateReqs
project.tasks.build.dependsOn project.tasks.testPy
project.tasks.build.finalizedBy project.tasks.buildWheel
project.tasks.test.finalizedBy project.tasks.testPy
project.tasks.coverage.finalizedBy project.tasks.coveragePy
project.tasks.clean.finalizedBy project.tasks.cleanPy