forked from bazel-contrib/rules_dotnet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
azure-pipelines.yml
152 lines (139 loc) · 5.72 KB
/
azure-pipelines.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
148
149
150
151
152
jobs:
- job: BuildAndTest
strategy:
matrix:
linux:
poolName: 'Azure Pipelines'
vmImage: 'ubuntu-16.04'
systemName: 'linux'
windows:
poolName: 'home'
vmImage: ''
systemName: 'windows'
mac:
poolName: 'Azure Pipelines'
vmImage: 'macOS-10.13'
systemName: 'mac'
pool:
name: $(poolName)
vmImage: $(vmImage)
steps:
- task: DotNetCoreInstaller@0
inputs:
packageType: 'sdk'
version: '2.2.106'
displayName: 'Install dotnet on Window'
condition: and(succeeded(), eq(variables['systemName'], 'windows'))
- script: |
echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get install -y bazel
displayName: 'Install dependencies'
condition: and(succeeded(), eq(variables['systemName'], 'linux'))
- script: |
brew install bazel coreutils
displayName: 'Install dependencies'
condition: and(succeeded(), eq(variables['systemName'], 'mac'))
- script: |
brew cask install mono-mdk
displayName: 'Install mono'
condition: and(succeeded(), eq(variables['systemName'], 'mac'))
- script: |
bazel version
displayName: 'Show bazel version'
- script: |
dotnet --info
displayName: 'Show dotnet version'
- script: |
mono --version
displayName: 'Show mono version'
- script: |
bazel clean --expunge
- script: |
bazel --host_jvm_args=-Xmx500m --host_jvm_args=-Xms500m build -s --local_resources=400,1,1.0 --spawn_strategy=standalone //...
displayName: 'Build all'
- script: |
bazel --host_jvm_args=-Xmx500m --host_jvm_args=-Xms500m run -s --local_resources=400,1,1.0 --spawn_strategy=standalone //tests/examples/example_binary:hello.exe
displayName: 'Run sample hello'
- script: |
bazel --host_jvm_args=-Xmx500m --host_jvm_args=-Xms500m run -s --local_resources=400,1,1.0 --spawn_strategy=standalone //tests/examples/example_binary:v2.1.200_hello-core.exe
displayName: 'Run sample core hello'
- script: |
bazel --host_jvm_args=-Xmx500m --host_jvm_args=-Xms500m test -s --local_resources=400,1,1.0 --test_summary=detailed --spawn_strategy=standalone --test_output=all //...
continueOnError: true
displayName: 'Run tests'
- powershell: |
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform;
$template = Resolve-Path "tools/converttests/n3.xslt"
$xslt.Load($template);
function doProcess($file)
{
$result = [io.path]::GetDirectoryName($file) + "/" + [io.path]::GetFileNameWithoutExtension($file) + "-junit.xml"
echo "Processing $file to $result"
[xml]$xml = Get-Content $file
$n = Select-Xml "//testsuites" $xml
if ($n.count -gt 0) {
echo "junit"
copy-item $file $result
} else {
echo "Transforming"
$xslt.Transform($file, $result)
}
}
gci -r bazel-out -filter "test*.xml" -exclude "*-junit.xml" | foreach { doProcess($_.FullName) }
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit' # Options: JUnit, NUnit, VSTest, xUnit
testResultsFiles: 'bazel-testlogs/**/test-junit.xml'
testRunTitle: $(systemName)
buildPlatform: $(systemName)
#searchFolder: '$(System.DefaultWorkingDirectory)' # Optional
#mergeTestResults: false # Optional
#buildPlatform: # Optional
#buildConfiguration: # Optional
#publishRunAttachments: true # Optional
- script: |
pwd
bazel --host_jvm_args=-Xmx500m --host_jvm_args=-Xms500m test -s --local_resources=400,1,1.0 --test_summary=detailed --spawn_strategy=standalone --test_output=all //...
workingDirectory: $(Build.SourcesDirectory)/docs/examples/mono
displayName: 'Run mono standalone test'
- task: PowerShell@2
displayName: 'Clone rules_dotnet_3rd_party if needed'
inputs:
workingDirectory: '$(Pipeline.Workspace)'
targetType: inline
script: |
if (-not (Test-Path -LiteralPath rules_dotnet_3rd_party)) {
git clone https://github.com/tomaszstrejczek/rules_dotnet_3rd_party
}
"Done"
- script: |
git checkout -f
workingDirectory: $(Pipeline.Workspace)/rules_dotnet_3rd_party
displayName: 'Clean 3rd_party repo'
- script: |
git pull
workingDirectory: $(Pipeline.Workspace)/rules_dotnet_3rd_party
displayName: 'Pull 3rd_party repo'
- script: |
git submodule init
git submodule update --recursive
workingDirectory: $(Pipeline.Workspace)/rules_dotnet_3rd_party
displayName: 'Update 3rd party repo'
- task: PowerShell@2
displayName: 'Patch WORKSPACE'
inputs:
workingDirectory: '$(Pipeline.Workspace)/rules_dotnet_3rd_party'
targetType: inline
script: |
((Get-Content -path WORKSPACE -Raw) -replace 'e1bce290ca52f707cfa10498c85729baf01002b1','$(Build.SourceVersion)') | Set-Content -Path WORKSPACE
"Done"
- script: |
bazel clean --expunge
bazel --host_jvm_args=-Xmx500m --host_jvm_args=-Xms500m build -s --local_resources=400,1,1.0 --spawn_strategy=standalone //...
workingDirectory: $(Build.SourcesDirectory)/docs/examples/mono
displayName: 'Run 3rd_party build'
- script: |
bazel shutdown
workingDirectory: $(Build.SourcesDirectory)/docs/examples/mono
displayName: 'Bazel shutdown'