[csproj] Update project files
[mono-project.git] / scripts / ci / pipeline-netcore-runtime.yml
blob2ad43c2388b3755e4dfadf742bca620fb80216e2
1 trigger:
2   batch: true
3   branches:
4     include:
5     - master
7 pr:
8   branches:
9     include:
10     - master
12 variables:
13 - ${{ if ne(variables['System.TeamProject'], 'public') }}:
14   - group: DotNet-VSTS-Bot
15   - group: DotNet-Blob-Feed
16 - ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
17   # Variables used by arcade to publish packages
18   - name: _DotNetFeedUrl
19     value: https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json
20   - name: _DotNetValidationArtifactsCategory
21     value: .NETCore
22   - name: _DotNetArtifactsCategory
23     value: .NETCore
25 stages:
26 - stage: build
27   displayName: Build
28   jobs:
29   - template: /eng/common/templates/jobs/jobs.yml
30     parameters:
31       enablePublishBuildArtifacts: true
32       enablePublishBuildAssets: true
33       enablePublishUsingPipelines: true
34       variables:
35         - _BuildConfig: Release
36       jobs:
38       ############ LINUX BUILD ############
39       - job: Build_Linux
40         displayName: Linux
41         timeoutInMinutes: 120
42         strategy:
43           matrix:
44             x64:
45               poolname: Hosted Ubuntu 1604
46               assetManifestOS: linux
47               assetManifestPlatform: x64
48               installDependencies: true
49               llvm: false
50             x64_LLVM:
51               poolname: Hosted Ubuntu 1604
52               assetManifestOS: linux
53               assetManifestPlatform: x64_LLVM
54               installDependencies: true
55               llvm: true
56             ARM64:
57               assetManifestOS: linux
58               assetManifestPlatform: arm64
59               installDependencies: false
60               llvm: false
61               ${{ if eq(variables['System.TeamProject'], 'public') }}:
62                 poolname: Xamarin-ARM64
63               ${{ if eq(variables['System.TeamProject'], 'internal') }}:
64                 poolname: Xamarin-ARM64-Private
65         pool:
66           name: $(poolname)
67         steps:
68         - bash: |
69             git clean -ffdx
70             git reset --hard HEAD
71           displayName: 'Clean up working directory'
73         - bash: |
74             git submodule update --init -- external/llvm
75           condition: eq(variables['llvm'], 'true')
76           displayName: 'Checkout external/llvm'
78         - bash: |
79             sudo apt update
80             sudo apt -y install nuget libgdiplus build-essential libtool libtool-bin cmake gettext bc
81           displayName: 'Install Linux dependencies'
82           condition: and(succeeded(), eq(variables['installDependencies'], 'true'))
84         - bash: |
85             sed -i "s#git://github.com/#https://dn-bot:${dncengPat}@dev.azure.com/dnceng/internal/_git/#; s#\.git\$##; s#\(url = .*\)/\(.*\)#\1-\2#" .gitmodules
86           env:
87             dncengPat: $(dn-bot-dotnet-build-rw-code-rw)
88           displayName: 'Rewrite .gitmodules'
89           condition: and(succeeded(), ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest'))
91         - bash: |
92             if [ $(llvm) = true ]; then
93               ./netcore/build.sh --ci -c $(_BuildConfig) --llvm
94             else
95               ./netcore/build.sh --ci -c $(_BuildConfig)
96             fi
97           displayName: 'Build (Make)'
99         - bash: |
100             if [ $(llvm) = true ]; then
101               ./netcore/build.sh --ci --pack --skipnative --skipmscorlib --llvm
102             else
103               ./netcore/build.sh --ci --pack --skipnative --skipmscorlib
104             fi
105             mkdir -p ./artifacts/log/$(_BuildConfig)
106             mkdir -p ./artifacts/SymStore/$(_BuildConfig)
107             mkdir -p ./artifacts/packages/$(_BuildConfig)/Shipping
108             cp ./netcore/System.Private.CoreLib/bin/*/System.Private.CoreLib.pdb ./artifacts/SymStore/$(_BuildConfig)
109             rm -f ./artifacts/Microsoft.NETCore.Runtime.Mono*nupkg
110             mv ./artifacts/*.nupkg ./artifacts/packages/$(_BuildConfig)/Shipping
111           displayName: 'Build nupkg'
113         - bash: |
114             ./netcore/build.sh --ci --test --skipnative --skipmscorlib
115           displayName: 'Download and Run CoreFX Tests'
116           timeoutInMinutes: 90
117           condition: and(succeeded(), eq(variables['System.TeamProject'], 'public'), ne(variables['llvm'], 'true'))
119         - task: PublishTestResults@2
120           inputs:
121             testRunTitle: $(poolname)
122             testResultsFormat: 'XUnit'
123             testResultsFiles: 'netcore/corefx/tests/TestResult-*.xml'
124           condition: and(succeededOrFailed(), eq(variables['System.TeamProject'], 'public'))
126         - script: ./eng/common/build.sh --ci --restore --publish --configuration $(_BuildConfig) /p:DotNetPublishUsingPipelines=true /p:DotNetPublishToBlobFeed=true /p:DotNetPublishBlobFeedUrl=$(_DotNetFeedUrl) /p:DotNetPublishBlobFeedKey=$(dotnetfeed-storage-access-key-1) /p:DotNetArtifactsCategory=$(_DotNetArtifactsCategory) /p:AssetManifestOS=$(assetManifestOS) /p:PlatformName=$(assetManifestPlatform) --projects $(Build.SourcesDirectory)/eng/empty.csproj
127           displayName: Publish packages
128           condition: and(succeeded(), ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest'))
130       ############ MACOS BUILD ############
131       - job: Build_macOS
132         displayName: macOS
133         timeoutInMinutes: 120
134         strategy:
135           matrix:
136             x64:
137               poolname: Hosted macOS
138               assetManifestOS: osx
139               assetManifestPlatform: x64
140               llvm: false
141             #TODO: download pre-built LLVM binaries, currently it has to build llvm from sources (>1h)
142             #x64_LLVM:
143             #  poolname: Hosted macOS
144             #  assetManifestOS: osx
145             #  assetManifestPlatform: x64
146             #  llvm: true
147         pool:
148           name: $(poolname)
149         steps:
150         - bash: |
151             git clean -ffdx
152             git reset --hard HEAD
153           displayName: 'Clean up working directory'
155         - bash: |
156             git submodule update --init -- external/llvm
157           condition: eq(variables['llvm'], 'true')
158           displayName: 'Checkout external/llvm'
160         - bash: |
161             brew install autoconf automake libtool gnu-sed
162           displayName: 'Prepare macOS dependencies'
164         - bash: |
165             gsed -i "s#git://github.com/#https://dn-bot:${dncengPat}@dev.azure.com/dnceng/internal/_git/#; s#\.git\$##; s#\(url = .*\)/\(.*\)#\1-\2#" .gitmodules
166           env:
167             dncengPat: $(dn-bot-dotnet-build-rw-code-rw)
168           displayName: 'Rewrite .gitmodules'
169           condition: and(succeeded(), ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest'))
171         - bash: |
172             if [ $(llvm) = true ]; then
173               ./netcore/build.sh --ci -c $(_BuildConfig) --llvm
174             else
175               ./netcore/build.sh --ci -c $(_BuildConfig)
176             fi
177           displayName: 'Build (Make)'
179         - bash: |
180             if [ $(llvm) = true ]; then
181               ./netcore/build.sh --ci --pack --skipnative --skipmscorlib --llvm
182             else
183               ./netcore/build.sh --ci --pack --skipnative --skipmscorlib
184             fi
185             mkdir -p ./artifacts/log/$(_BuildConfig)
186             mkdir -p ./artifacts/SymStore/$(_BuildConfig)
187             mkdir -p ./artifacts/packages/$(_BuildConfig)/Shipping
188             cp ./netcore/System.Private.CoreLib/bin/x64/System.Private.CoreLib.pdb ./artifacts/SymStore/$(_BuildConfig)
189             rm -f ./artifacts/Microsoft.NETCore.Runtime.Mono*nupkg
190             mv ./artifacts/*.nupkg ./artifacts/packages/$(_BuildConfig)/Shipping
191           displayName: 'Build nupkg'
193         - bash: |
194             ./netcore/build.sh --ci --test --skipnative --skipmscorlib
195           displayName: 'Download and Run CoreFX Tests'
196           timeoutInMinutes: 90
197           condition: and(succeeded(), eq(variables['System.TeamProject'], 'public'), ne(variables['llvm'], 'true'))
199         - task: PublishTestResults@2
200           inputs:
201             testRunTitle: $(poolname)
202             testResultsFormat: 'XUnit'
203             testResultsFiles: 'netcore/corefx/tests/TestResult-*.xml'
204           condition: and(succeededOrFailed(), eq(variables['System.TeamProject'], 'public'))
206         - script: ./eng/common/build.sh --ci --restore --publish --configuration $(_BuildConfig) /p:DotNetPublishUsingPipelines=true /p:DotNetPublishToBlobFeed=true /p:DotNetPublishBlobFeedUrl=$(_DotNetFeedUrl) /p:DotNetPublishBlobFeedKey=$(dotnetfeed-storage-access-key-1) /p:DotNetArtifactsCategory=$(_DotNetArtifactsCategory) /p:AssetManifestOS=$(assetManifestOS) /p:PlatformName=$(assetManifestPlatform) --projects $(Build.SourcesDirectory)/eng/empty.csproj
207           displayName: Publish packages
208           condition: and(succeeded(), ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest'))
210       ############ WINDOWS BUILD ############
211       - job: Build_Windows
212         displayName: Windows
213         timeoutInMinutes: 120
214         strategy:
215           matrix:
216             x64:
217               poolname: Hosted VS2017
218               assetManifestOS: win
219               assetManifestPlatform: x64
220         pool:
221           name: $(poolname)
222         steps:
223         - bash: |
224             git clean -ffdx
225             git reset --hard HEAD
226           displayName: 'Clean up working directory'
228         - script: |
229             choco install msys2 --params="/InstallDir:%CD:~0,2%\msys64 /NoUpdate /NoPath"
230             %CD:~0,2%\msys64\usr\bin\pacman --noconfirm -Syyuu
231             %CD:~0,2%\msys64\usr\bin\pacman --noconfirm -Syuu
232             %CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm -Suy"
233             %CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm -S --needed python2 gettext autoconf automake libtool mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc mingw-w64-x86_64-make"
234             copy %CD:~0,2%\msys64\mingw64\bin\mingw32-make.exe %CD:~0,2%\msys64\mingw64\bin\make.exe
235           env:
236             CHERE_INVOKING: yes
237           displayName: 'Prepare Windows dependencies'
239         - bash: |
240             sed -i "s#git://github.com/#https://dn-bot:${dncengPat}@dev.azure.com/dnceng/internal/_git/#; s#\.git\$##; s#\(url = .*\)/\(.*\)#\1-\2#" .gitmodules
241           env:
242             dncengPat: $(dn-bot-dotnet-build-rw-code-rw)
243           displayName: 'Rewrite .gitmodules'
244           condition: and(succeeded(), ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest'))
246         - script: |
247             %CD:~0,2%\msys64\usr\bin\bash -lc "PATH=/usr/bin:/mingw64/bin:/c/hostedtoolcache/windows/dncs/2.2.203/x64:/c/Program\ Files/Git/bin ./autogen.sh --host=x86_64-w64-mingw32 --with-core=only"
248             CALL msvc\run-msbuild.bat build x86_64 release "/p:PlatformToolset=v140 /p:MONO_TARGET_GC=sgen"
249             %CD:~0,2%\msys64\usr\bin\bash -lc "PATH=/c/windows/System32/WindowsPowerShell/v1.0/:/usr/bin:/mingw64/bin:/c/hostedtoolcache/windows/dncs/2.2.203/x64:/c/Program\ Files/Git/bin make -C netcore bcl CORLIB_BUILD_FLAGS='-c $(_BuildConfig)'"
250             MKDIR mono\mini\.libs\
251             COPY msvc\build\sgen\x64\bin\Release\mono-2.0-sgen.dll mono\mini\.libs\monosgen-2.0.dll
252             %CD:~0,2%\msys64\usr\bin\bash -lc "PATH=/c/windows/System32/WindowsPowerShell/v1.0/:/usr/bin:/mingw64/bin:/c/hostedtoolcache/windows/dncs/2.2.203/x64:/c/Program\ Files/Git/bin make -C netcore nupkg"
253             MKDIR artifacts\log\$(_BuildConfig)\
254             MKDIR artifacts\SymStore\$(_BuildConfig)\
255             MKDIR artifacts\packages\$(_BuildConfig)\Shipping\
256             COPY netcore\System.Private.CoreLib\bin\x64\System.Private.CoreLib.pdb artifacts\SymStore\$(_BuildConfig)\
257             MOVE artifacts\*.nupkg artifacts\packages\$(_BuildConfig)\Shipping\
258           displayName: 'Build (MSBuild and Make)'
259           env:
260             CHERE_INVOKING: yes
262         - powershell: eng\common\build.ps1 -ci -restore -publish -configuration $(_BuildConfig) /p:DotNetPublishUsingPipelines=true /p:DotNetPublishToBlobFeed=true /p:DotNetPublishBlobFeedUrl=$(_DotNetFeedUrl) /p:DotNetPublishBlobFeedKey=$(dotnetfeed-storage-access-key-1) /p:DotNetArtifactsCategory=$(_DotNetArtifactsCategory) /p:AssetManifestOS=$(assetManifestOS) /p:PlatformName=$(assetManifestPlatform) -projects $(Build.SourcesDirectory)\eng\empty.csproj
263           displayName: Publish packages
264           condition: and(succeeded(), ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest'))
266 ############ POST BUILD ARCADE LOGIC ############
267 - ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
268   - template: /eng/common/templates/post-build/post-build.yml
269     parameters:
270       enableSourceLinkValidation: false
271       enableSigningValidation: false
272       enableSymbolValidation: false
273       enableNugetValidation: true