Skip to content

Commit

Permalink
Merge branch 'main' into native-profiling-and-debugging
Browse files Browse the repository at this point in the history
* main:
  [marshal methods] Properly support arrays of arrays (dotnet#7707)
  Bump to dotnet/installer@9962c6a 8.0.100-alpha.1.23063.11 (dotnet#7677)
  [Actions] Add action to bump the hash used for the unified pipeline (dotnet#7712)
  Bump to xamarin/xamarin-android-tools/main@099fd95 (dotnet#7709)
  [ci] Move build stages into yaml templates (dotnet#7553)
  [Xamarin.Android.Build.Tasks] fix NRE in `<GenerateResourceCaseMap/>` (dotnet#7716)
  [ci] Pass token when building Designer tests (dotnet#7715)
  • Loading branch information
grendello committed Jan 20, 2023
2 parents 61ce724 + baa5a73 commit b9fa158
Show file tree
Hide file tree
Showing 34 changed files with 535 additions and 384 deletions.
2 changes: 1 addition & 1 deletion .external
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
xamarin/monodroid:main@c0c933b7a5286c0babecb165c0676c32f5e44092
xamarin/monodroid:main@2b9c9d01820c8df4541157f6b6116852eba73350
mono/mono:2020-02@6dd9def57ce969ca04a0ecd9ef72c0a8f069112d
35 changes: 35 additions & 0 deletions .github/workflows/sdk-insertion-bump.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Notify release branch change

on:
# trigger for main and release branches.
push:
branches:
- main
- 'release/**'

jobs:
pingRemote:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Parse commit
shell: pwsh
id: commit_title
run: |
Write-Host "Commit message is $Env:COMMIT_MESSAGE"
$title = ($Env:COMMIT_MESSAGE -split '\n')[0]
"COMMIT_TITLE=$title" >> $env:GITHUB_OUTPUT
env:
COMMIT_MESSAGE: "${{ github.event.head_commit.message }}"

- name: 'Update remote repository'
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.SERVICEACCOUNT_PAT }}
event-type: 'sdk_insertion'
repository: 'xamarin/sdk-insertions'
client-payload: '{"repository": "xamarin/xamarin-android", "branch": "${{ github.ref_name }}", "commit": "${{ github.sha }}", "commit_message": "${{ steps.commit_title.outputs.COMMIT_TITLE }}"}'


257 changes: 7 additions & 250 deletions build-tools/automation/azure-pipelines.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -85,258 +85,15 @@ variables:

# Stage and Job "display names" are shortened because they are combined to form the name of the corresponding GitHub check.
stages:
- stage: mac_build
displayName: Mac
dependsOn: []
jobs:
# Check - "Xamarin.Android (macOS > Build)"
- job: mac_build_create_installers
displayName: macOS > Build
pool:
name: $(MacBuildPoolName)
vmImage: $(MacBuildPoolImage)
${{ if eq(variables['MacBuildPoolName'], 'VSEng-Xamarin-RedmondMac-Android-Untrusted') }}:
demands: macOS.Name -equals Monterey
timeoutInMinutes: 240
cancelTimeoutInMinutes: 5
workspace:
clean: all
steps:
- checkout: self
submodules: recursive
path: s/xamarin-android

- template: yaml-templates/install-microbuild-tooling.yaml
parameters:
condition: and(succeeded(), eq(variables['MicroBuildSignType'], 'Real'))

- template: yaml-templates/commercial-build.yaml
parameters:
provisionatorChannel: ${{ parameters.provisionatorChannel }}
signClassicPkgContent: ${{ parameters.signClassicPkgContent }}

- template: yaml-templates/remove-microbuild-tooling.yaml
parameters:
condition: and(succeededOrFailed(), eq(variables['MicroBuildSignType'], 'Real'))

- script: >
mkdir -p $(System.DefaultWorkingDirectory)/xamarin-android/bin/Build$(XA.Build.Configuration)/windows-toolchain-pdb &&
cd $(System.DefaultWorkingDirectory)/xamarin-android/bin/$(XA.Build.Configuration)/lib/packs/Microsoft.Android.Sdk.Darwin/*/tools/binutils/windows-toolchain-pdb &&
zip -r $(System.DefaultWorkingDirectory)/xamarin-android/bin/Build$(XA.Build.Configuration)/windows-toolchain-pdb/windows-toolchain-pdb.zip .
workingDirectory: $(System.DefaultWorkingDirectory)/xamarin-android
displayName: zip Windows toolchain pdb files
- task: PublishPipelineArtifact@1
displayName: upload Windows toolchain pdb files
inputs:
artifactName: $(WindowsToolchainPdbArtifactName)
targetPath: $(System.DefaultWorkingDirectory)/xamarin-android/bin/Build$(XA.Build.Configuration)/windows-toolchain-pdb

- template: yaml-templates/upload-results.yaml
parameters:
xaSourcePath: $(System.DefaultWorkingDirectory)/xamarin-android
artifactName: Build Results - macOS
includeBuildResults: true

- template: yaml-templates/run-xaprepare.yaml
parameters:
arguments: --s=DetermineApplicableTests
xaSourcePath: $(System.DefaultWorkingDirectory)/xamarin-android
displayName: determine which test stages to run
name: TestConditions
condition: and(succeeded(), eq(variables['Build.DefinitionName'], 'Xamarin.Android-PR'))

# This stage ensures Windows specific build steps continue to work, and runs unit tests.
- stage: win_build_test
displayName: Windows
dependsOn: []
jobs:
# Check - "Xamarin.Android (Windows > Build & Smoke Test)"
- job: win_build_test
displayName: Windows > Build & Smoke Test
pool: $(1ESWindowsPool)
timeoutInMinutes: 360
cancelTimeoutInMinutes: 5
steps:
- checkout: self
submodules: recursive

- template: yaml-templates\kill-processes.yaml

- template: yaml-templates\clean.yaml

- script: |
echo ##vso[task.setvariable variable=JI_JAVA_HOME]%JAVA_HOME_11_X64%
displayName: set JI_JAVA_HOME
- template: yaml-templates\use-dot-net.yaml
parameters:
remove_dotnet: true

# xabuild still depends on .NET Core 3 or earlier
- template: yaml-templates\use-dot-net.yaml
parameters:
version: 3.1
quality: GA

# Downgrade the XA .vsix installed into the instance of VS that we are building with so that we don't restore/build against a test version.
# The VS installer will attempt to resume any failed or partial installation before trying to downgrade Xamarin.Android.
# VSIXInstaller.exe will exit non-zero when the downgrade attempt is a no-op, so we will allow this step to fail silently.
- powershell: |
$vsWhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
& "$vsWhere" -all -prerelease -latest | Out-Default
$isLatestVSLaunchable = & "$vsWhere" -all -prerelease -latest -property isLaunchable
if ($isLatestVSLaunchable -eq 0) {
$vsPath = & "$vsWhere" -all -prerelease -latest -property installationPath
Write-Host "Attempting to repair VS instance:" $vsPath
$vsInstaller = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vs_installer.exe"
& "$vsInstaller" resume --installPath $vsPath --quiet --norestart | Out-Default
Write-Host "vs_installer.exe resume attempt complete"
}
$vsixInstaller = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\resources\app\ServiceHub\Services\Microsoft.VisualStudio.Setup.Service\VSIXInstaller.exe"
$ts = Get-Date -Format FileDateTimeUniversal
$log = "xavsixdowngrade-$ts.log"
$process = Start-Process -NoNewWindow -FilePath $vsixInstaller -ArgumentList "/downgrade:Xamarin.Android.Sdk /admin /quiet /logFile:$log" -Wait -PassThru -RedirectStandardError "err.txt"
Get-Content "err.txt" | Write-Host
Get-Content "${env:TEMP}\$log" | Write-Host
Write-Host "VSInstaller.exe exited with code:" $process.ExitCode
Remove-Item "${env:TEMP}\$log"
displayName: downgrade XA to stable
ignoreLASTEXITCODE: true
- task: DotNetCoreCLI@2
displayName: Prepare Solution
inputs:
projects: Xamarin.Android.sln
arguments: '-c $(XA.Build.Configuration) -t:Prepare --no-restore -p:AutoProvision=true -bl:$(System.DefaultWorkingDirectory)\bin\Build$(XA.Build.Configuration)\dotnet-build-prepare.binlog'

# Build, pack .nupkgs, and extract workload packs to dotnet preview test directory
- template: yaml-templates\run-dotnet-preview.yaml
parameters:
project: Xamarin.Android.sln
arguments: >-
-t:BuildDotNet,PackDotNet -c $(XA.Build.Configuration) -v:n
-bl:$(System.DefaultWorkingDirectory)\bin\Build$(XA.Build.Configuration)\dotnet-build.binlog
displayName: Build Solution
continueOnError: false

- task: MSBuild@1
displayName: msbuild create-vsix
inputs:
solution: build-tools\create-vsix\create-vsix.csproj
configuration: $(XA.Build.Configuration)
msbuildArguments: /p:CreateVsixContainer=True /p:ZipPackageCompressionLevel=Normal /bl:$(System.DefaultWorkingDirectory)\bin\Build$(XA.Build.Configuration)\dotnet-create-vsix.binlog

- task: MSBuild@1
displayName: msbuild xabuild
inputs:
solution: tools\xabuild\xabuild.csproj
configuration: $(XA.Build.Configuration)
msbuildArguments: /restore /bl:$(System.DefaultWorkingDirectory)\bin\Build$(XA.Build.Configuration)\dotnet-xabuild.binlog

- task: CmdLine@1
displayName: xabuild Xamarin.Android-Tests
inputs:
filename: bin\$(XA.Build.Configuration)\bin\xabuild.exe
arguments: Xamarin.Android-Tests.sln /restore /p:Configuration=$(XA.Build.Configuration) /bl:$(System.DefaultWorkingDirectory)\bin\Test$(XA.Build.Configuration)\dotnet-build-tests.binlog

- template: yaml-templates\install-apkdiff.yaml

- template: yaml-templates\run-nunit-tests.yaml
parameters:
testRunTitle: Smoke MSBuild Tests - Windows Build Tree
testAssembly: $(System.DefaultWorkingDirectory)\bin\Test$(XA.Build.Configuration)\net472\Xamarin.Android.Build.Tests.dll
testResultsFile: TestResult-SmokeMSBuildTests-WinBuildTree-$(XA.Build.Configuration).xml
nunitConsoleExtraArgs: --where "cat == SmokeTests"

- template: yaml-templates\run-nunit-tests.yaml
parameters:
useDotNet: true
testRunTitle: Smoke MSBuild Tests - Windows Dotnet Build
testAssembly: $(System.DefaultWorkingDirectory)\bin\Test$(XA.Build.Configuration)\$(DotNetStableTargetFramework)\Xamarin.Android.Build.Tests.dll
testResultsFile: TestResult-SmokeMSBuildTests-WinDotnetBuild-$(XA.Build.Configuration).xml
dotNetTestExtraArgs: --filter "TestCategory = SmokeTests $(DotNetNUnitCategories)"

- template: yaml-templates\upload-results.yaml
parameters:
artifactName: Build Results - Windows
includeBuildResults: true
- template: yaml-templates/build-macos.yaml
parameters:
provisionatorChannel: ${{ parameters.provisionatorChannel }}
signClassicPkgContent: ${{ parameters.signClassicPkgContent }}

- template: yaml-templates\fail-on-issue.yaml
- template: yaml-templates/build-windows.yaml

# Check - "Xamarin.Android (Linux > Build)"
- stage: linux_build
displayName: Linux
dependsOn: []
jobs:
- job: linux_build_create_sdk_pack
displayName: Linux > Build
pool: android-devdiv-ubuntu-vmss
timeoutInMinutes: 180
cancelTimeoutInMinutes: 2
workspace:
clean: all
variables:
CXX: g++-10
CC: gcc-10
steps:
- checkout: self
clean: true
submodules: recursive
path: s/xamarin-android

- checkout: monodroid
clean: true
submodules: recursive
path: s/xamarin-android/external/monodroid
persistCredentials: true

- script: rm -rf external/monodroid/external/xamarin-android
workingDirectory: $(System.DefaultWorkingDirectory)/xamarin-android
displayName: delete external xamarin-android submodule

- template: yaml-templates/setup-ubuntu.yaml

- task: NuGetAuthenticate@0
displayName: authenticate with azure artifacts
inputs:
forceReinstallCredentialProvider: true

- script: make prepare-external-git-dependencies PREPARE_CI=1 CONFIGURATION=$(XA.Build.Configuration)
workingDirectory: $(System.DefaultWorkingDirectory)/xamarin-android
displayName: make prepare-external-git-dependencies

- script: make jenkins PREPARE_CI=1 PREPARE_AUTOPROVISION=1 CONFIGURATION=$(XA.Build.Configuration)
workingDirectory: $(System.DefaultWorkingDirectory)/xamarin-android
displayName: make jenkins

- script: make create-nupkgs CONFIGURATION=$(XA.Build.Configuration)
workingDirectory: $(System.DefaultWorkingDirectory)/xamarin-android
displayName: make create-nupkgs

- script: >
df -h &&
mkdir -p $(System.DefaultWorkingDirectory)/xamarin-android/bin/Build$(XA.Build.Configuration)/nuget-linux &&
ln $(System.DefaultWorkingDirectory)/xamarin-android/bin/Build$(XA.Build.Configuration)/$(NuGetArtifactName)/Microsoft.Android.Sdk.Linux*.nupkg
$(System.DefaultWorkingDirectory)/xamarin-android/bin/Build$(XA.Build.Configuration)/nuget-linux &&
ln $(System.DefaultWorkingDirectory)/xamarin-android/bin/Build$(XA.Build.Configuration)/$(NuGetArtifactName)/SignList.xml
$(System.DefaultWorkingDirectory)/xamarin-android/bin/Build$(XA.Build.Configuration)/nuget-linux
workingDirectory: $(System.DefaultWorkingDirectory)/xamarin-android
displayName: copy linux sdk
- task: PublishPipelineArtifact@1
displayName: upload linux sdk
inputs:
artifactName: $(LinuxNuGetArtifactName)
targetPath: $(System.DefaultWorkingDirectory)/xamarin-android/bin/Build$(XA.Build.Configuration)/nuget-linux

- template: yaml-templates/upload-results.yaml
parameters:
xaSourcePath: $(System.DefaultWorkingDirectory)/xamarin-android
artifactName: Build Results - Linux
includeBuildResults: true

- template: yaml-templates/fail-on-issue.yaml
- template: yaml-templates/build-linux.yaml

- stage: smoke_tests
displayName: Smoke Tests
Expand Down Expand Up @@ -1343,7 +1100,7 @@ stages:
inputs:
solution: $(System.DefaultWorkingDirectory)\UITools\src\Xamarin.Designer.Android\Xamarin.AndroidDesigner.sln
vsVersion: 17.0
msbuildArgs: /t:Build
msbuildArgs: /t:Build /p:GitHubToken=$(GitHub.Token)
platform: Any CPU
configuration: DebugWin32

Expand Down
Loading

0 comments on commit b9fa158

Please sign in to comment.