-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathazure-pipelines-databricks.yml
147 lines (121 loc) · 5.58 KB
/
azure-pipelines-databricks.yml
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# Azure Databricks Build Pipeline
# azure-pipelines.yml
trigger:
branches:
include:
- main
paths:
include:
- ./databricks/*
exclude:
- azure-pipelines*.yml
pool:
vmImage: ubuntu-latest
jobs:
- job: build_databricks
variables:
- group: 'contoso-databricks-dev'
displayName: Build Databricks
steps:
- task: UsePythonVersion@0
displayName: 'Use Python 3.7'
inputs:
versionSpec: 3.7
- script: |
pip install pytest requests setuptools wheel check-wheel-contents
pip install -U databricks-connect==6.4.*
displayName: 'Load Python Dependencies'
- script: |
echo "y
$(WORKSPACE-REGION-URL)
$(CSE-PAT)
$(EXISTING-CLUSTER-ID)
$(WORKSPACE-ORG-ID)
15001" | databricks-connect configure
displayName: 'Configure DBConnect'
- checkout: self
persistCredentials: true
clean: true
- script: git checkout main
displayName: 'Get Latest Branch'
- script: |
python -m pytest --junit-xml=$(Build.Repository.LocalPath)/logs/TEST-LOCAL.xml
$(Build.Repository.LocalPath)/databricks/libraries/python/dbxdemo/test*.py || true
displayName: 'Run Python Unit Tests for library code'
- task: PublishTestResults@2
inputs:
testResultsFiles: '**/TEST-*.xml'
failTaskOnFailedTests: true
publishRunAttachments: true
- script: |
cd $(Build.Repository.LocalPath)/databricks/libraries/python/dbxdemo
python3 setup.py sdist bdist_wheel
ls dist/
displayName: 'Build Python Wheel for Libs'
- script: |
git diff --name-only --diff-filter=AMR HEAD^1 HEAD | xargs -I '{}' cp --parents -r '{}' $(Build.BinariesDirectory)
mkdir -p $(Build.BinariesDirectory)/databricks/libraries/python/libs
cp $(Build.Repository.LocalPath)/databricks/libraries/python/dbxdemo/dist/*.* $(Build.BinariesDirectory)/databricks/libraries/python/libs
mkdir -p $(Build.BinariesDirectory)/databricks/scripts
cp $(Build.Repository.LocalPath)/databricks/scripts/*.* $(Build.BinariesDirectory)/databricks/scripts
displayName: 'Get Changes'
- publish: $(Build.BinariesDirectory)
displayName: 'Publish Build Artifact'
artifact: 'DatabricksBuild'
- deployment: deploy_databricks_stg
displayName: 'Deploy Databricks to STG'
variables:
- group: 'contoso-databricks-stg'
environment: 'contoso-databricks-stg'
strategy:
runOnce:
deploy:
steps:
- download: current
artifact: 'DatabricksBuild'
- task: UsePythonVersion@0
displayName: 'Use Python 3.7'
inputs:
versionSpec: 3.7
- task: databricksDeployScripts@0
displayName: 'Deploy Notebooks'
inputs:
authMethod: 'bearer'
bearerToken: '$(CSE-PAT)'
region: '$(WORKSPACE-REGION)'
localPath: '$(Pipeline.Workspace)/DatabricksBuild/databricks/notebooks'
databricksPath: '/Shared'
- task: databricksDeployDBFSFilesTask@0
displayName: 'Deploy DBFS Files'
inputs:
authMethod: 'bearer'
bearerToken: '$(CSE-PAT)'
region: '$(WORKSPACE-REGION)'
LocalRootFolder: '$(Pipeline.Workspace)/DatabricksBuild/databricks/libraries/python/libs'
FilePattern: '*.*'
TargetLocation: '/libs'
- task: PythonScript@0
displayName: 'Install WHL Libraries'
inputs:
scriptSource: 'filePath'
scriptPath: '$(Pipeline.Workspace)/DatabricksBuild/databricks/scripts/installWhlLibrary.py'
arguments: '--shard=$(WORKSPACE-REGION-URL) --token=$(CSE-PAT) --cluster-id=$(EXISTING-CLUSTER-ID) --libs=$(Pipeline.Workspace\DatabricksBuild\libraries\python\libs --dbfspath=$(DBFSPATH)'
- script: |
mkdir $(Pipeline.Workspace)/DatabricksBuild/databricks/logs/json
mkdir $(Pipeline.Workspace)/DatabricksBuild/databricks/logs/xml
pip install pytest requests
displayName: 'Install Test libraries'
- task: PythonScript@0
displayName: 'Execute Notebook'
inputs:
scriptSource: 'filePath'
scriptPath: '$(Pipeline.Workspace)/DatabricksBuild/databricks/scripts/executenotebook.py'
arguments: '--shard=$(WORKSPACE-REGION-URL) --token=$(CSE-PAT) --cluster-id=$(EXISTING-CLUSTER-ID) --localpath=$(Pipeline.Workspace)/DatabricksBuild/databricks/notebooks/tests --workspacepath /Shared/notebooks/tests --outfilepath $(Pipeline.Workspace)/DatabricksBuild/databricks/logs/json'
- script: |
python -m pytest --junit-xml=$(Pipeline.Workspace)/DatabricksBuild/databricks/logs/xml/TEST-notebookout.xml --jsonpath=$(Pipeline.Workspace)/DatabricksBuild/databricks/logs/json $(Pipeline.Workspace)/DatabricksBuild/databricks/scripts/evaluatenotebookruns.py || true
displayName: 'Test Notebooks'
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '**/TEST-*.xml'