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
22 - name: _DotNetArtifactsCategory
29 - template: /eng/common/templates/jobs/jobs.yml
31 enablePublishBuildArtifacts: true
32 enablePublishBuildAssets: true
33 enablePublishUsingPipelines: true
35 - _BuildConfig: Release
38 ############ LINUX BUILD ############
45 poolname: Hosted Ubuntu 1604
46 assetManifestOS: linux
47 assetManifestPlatform: x64
48 installDependencies: true
51 poolname: Hosted Ubuntu 1604
52 assetManifestOS: linux
53 assetManifestPlatform: x64_LLVM
54 installDependencies: true
57 assetManifestOS: linux
58 assetManifestPlatform: arm64
59 installDependencies: false
61 ${{ if eq(variables['System.TeamProject'], 'public') }}:
62 poolname: Xamarin-ARM64
63 ${{ if eq(variables['System.TeamProject'], 'internal') }}:
64 poolname: Xamarin-ARM64-Private
71 displayName: 'Clean up working directory'
74 git submodule update --init -- external/llvm
75 condition: eq(variables['llvm'], 'true')
76 displayName: 'Checkout external/llvm'
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'))
85 sed -i "s#git://github.com/#https://dn-bot:${dncengPat}@dev.azure.com/dnceng/internal/_git/#; s#\.git\$##; s#\(url = .*\)/\(.*\)#\1-\2#" .gitmodules
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'))
92 if [ $(llvm) = true ]; then
93 ./netcore/build.sh --ci -c $(_BuildConfig) --llvm
95 ./netcore/build.sh --ci -c $(_BuildConfig)
97 displayName: 'Build (Make)'
100 if [ $(llvm) = true ]; then
101 ./netcore/build.sh --ci --pack --skipnative --skipmscorlib --llvm
103 ./netcore/build.sh --ci --pack --skipnative --skipmscorlib
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'
114 ./netcore/build.sh --ci --test --skipnative --skipmscorlib
115 displayName: 'Download and Run CoreFX Tests'
117 condition: and(succeeded(), eq(variables['System.TeamProject'], 'public'), ne(variables['llvm'], 'true'))
119 - task: PublishTestResults@2
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 ############
133 timeoutInMinutes: 120
137 poolname: Hosted macOS
139 assetManifestPlatform: x64
141 #TODO: download pre-built LLVM binaries, currently it has to build llvm from sources (>1h)
143 # poolname: Hosted macOS
144 # assetManifestOS: osx
145 # assetManifestPlatform: x64
152 git reset --hard HEAD
153 displayName: 'Clean up working directory'
156 git submodule update --init -- external/llvm
157 condition: eq(variables['llvm'], 'true')
158 displayName: 'Checkout external/llvm'
161 brew install autoconf automake libtool gnu-sed
162 displayName: 'Prepare macOS dependencies'
165 gsed -i "s#git://github.com/#https://dn-bot:${dncengPat}@dev.azure.com/dnceng/internal/_git/#; s#\.git\$##; s#\(url = .*\)/\(.*\)#\1-\2#" .gitmodules
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'))
172 if [ $(llvm) = true ]; then
173 ./netcore/build.sh --ci -c $(_BuildConfig) --llvm
175 ./netcore/build.sh --ci -c $(_BuildConfig)
177 displayName: 'Build (Make)'
180 if [ $(llvm) = true ]; then
181 ./netcore/build.sh --ci --pack --skipnative --skipmscorlib --llvm
183 ./netcore/build.sh --ci --pack --skipnative --skipmscorlib
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'
194 ./netcore/build.sh --ci --test --skipnative --skipmscorlib
195 displayName: 'Download and Run CoreFX Tests'
197 condition: and(succeeded(), eq(variables['System.TeamProject'], 'public'), ne(variables['llvm'], 'true'))
199 - task: PublishTestResults@2
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 ############
213 timeoutInMinutes: 120
217 poolname: Hosted VS2017
219 assetManifestPlatform: x64
225 git reset --hard HEAD
226 displayName: 'Clean up working directory'
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
237 displayName: 'Prepare Windows dependencies'
240 sed -i "s#git://github.com/#https://dn-bot:${dncengPat}@dev.azure.com/dnceng/internal/_git/#; s#\.git\$##; s#\(url = .*\)/\(.*\)#\1-\2#" .gitmodules
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'))
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)'
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
270 enableSourceLinkValidation: false
271 enableSigningValidation: false
272 enableSymbolValidation: false
273 enableNugetValidation: true