Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[build] Package binutils as workload packs #6

Closed
wants to merge 8 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,15 @@
.ccls-cache
.projectile
compile_commands.json

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
.DS_Store

# Build results
[Bb]in/
[Oo]bj/
96 changes: 0 additions & 96 deletions 1cs-pipeline.yml

This file was deleted.

241 changes: 241 additions & 0 deletions build-tools/automation/azure-pipelines.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,241 @@
trigger:
- main
- release/*
- dev/*

pr:
- none

resources:
repositories:
- repository: yaml-templates
type: github
name: xamarin/yaml-templates
ref: refs/heads/main
endpoint: xamarin
- repository: xa-yaml
type: github
name: xamarin/xamarin-android
ref: refs/heads/main
endpoint: xamarin

variables:
- name: TeamName
value: XamarinAndroid
- name: BUILD_DIR
value: xa-build
- name: Codeql.Enabled
value: true

stages:
- stage: build
displayName: Build Stage
jobs:
- job: build_linux
displayName: Build Linux
timeoutInMinutes: 240
pool:
name: android-devdiv-ubuntu-vmss
steps:
- checkout: self
submodules: recursive

- script: >-
sudo apt-get update;
sudo apt-get -f -u install cmake ninja-build chrpath texinfo sharutils libffi-dev
lsb-release patchutils diffstat xz-utils python3-dev libedit-dev libncurses5-dev swig
python3-six python3-sphinx binutils-dev libxml2-dev libjsoncpp-dev pkg-config lcov
procps help2man zlib1g-dev g++-multilib libjs-mathjax python3-recommonmark libpfm4-dev
python3-setuptools libz3-dev ccache
displayName: Install LLVM build dependencies

- script: sudo apt-get -f -u install mingw-w64 libz-mingw-w64-dev
displayName: Install Xamarin.Android Utilities build dependencies

- script: ./build-llvm.sh
env:
CC: gcc-10
CXX: g++-10
displayName: Build LLVM

- script: ./build-xa-utils.sh
env:
CC: gcc-10
CXX: g++-10
displayName: Build utilities

- script: |
rsync -avm --include 'config.*' --include '*.log' --include '*.txt' --include='*/' --exclude='*' $(BUILD_DIR) $(Build.StagingDirectory)
displayName: Copy logs
condition: always()

- task: PublishPipelineArtifact@1
displayName: Upload logs
inputs:
artifactName: build-logs-linux
targetPath: $(Build.StagingDirectory)
condition: always()

- task: PublishPipelineArtifact@1
displayName: Upload artifacts
inputs:
artifactName: artifacts-linux-unsigned
targetPath: artifacts


- job: build_macos
displayName: Build macOS
timeoutInMinutes: 240
pool:
name: Azure Pipelines
vmImage: internal-macos12
steps:
- checkout: self
submodules: recursive

- script: |
brew update
brew install cmake ninja ccache
displayName: Install LLVM build dependencies

- script: brew install make xz
displayName: Install Xamarin.Android Utilities build dependencies

- script: bash ./build-llvm.sh
displayName: build LLVM

- script: bash ./build-xa-utils.sh
displayName: Build utilities

- script: |
rsync -avm --include 'config.*' --include '*.log' --include '*.txt' --include='*/' --exclude='*' $(BUILD_DIR) $(Build.StagingDirectory)
displayName: Copy logs
condition: always()

- task: PublishPipelineArtifact@1
displayName: Upload logs
inputs:
artifactName: build-logs-macos
targetPath: $(Build.StagingDirectory)
condition: always()

- task: PublishPipelineArtifact@1
displayName: Upload artifacts
inputs:
artifactName: artifacts-macos-unsigned
targetPath: artifacts


- job: build_windows
displayName: Build Windows
timeoutInMinutes: 300
pool:
name: AzurePipelines-EO
demands:
- ImageOverride -equals AzurePipelinesWindows2022compliant
steps:
- checkout: self
submodules: recursive

- script: ./build-llvm-azure.cmd
displayName: Build Windows LLVM

- task: PublishPipelineArtifact@1
displayName: Upload artifacts
inputs:
artifactName: artifacts-windows-unsigned
targetPath: artifacts


- stage: package
displayName: Package Stage
dependsOn: build
variables:
- name: MicroBuildSignType
value: Real
jobs:
- job: pack_sign
displayName: Sign and Zip
timeoutInMinutes: 480
pool:
name: Azure Pipelines
vmImage: internal-macos12
steps:
- checkout: self
submodules: recursive

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

- task: DownloadPipelineArtifact@2
inputs:
artifactName: artifacts-linux-unsigned
downloadPath: artifacts

- task: DownloadPipelineArtifact@2
inputs:
artifactName: artifacts-macos-unsigned
downloadPath: artifacts

- task: DownloadPipelineArtifact@2
inputs:
artifactName: artifacts-windows-unsigned
downloadPath: artifacts

- task: DotNetCoreCLI@2
displayName: Sign nuget content
inputs:
projects: build-tools/create-packs/Microsoft.Android.LLVM.proj
arguments: >-
-t:AddFilesToSign,Build
-p:SignType=$(MicroBuildSignType)
-bl:$(Build.StagingDirectory)/sign-macos.binlog

- task: CmdLine@2
displayName: Package and sign nugets
inputs:
script: ./package.sh
workingDirectory: $(Build.SourcesDirectory)
env:
MicroBuildSignType: $(MicroBuildSignType)

- task: PublishPipelineArtifact@1
displayName: Upload artifact
inputs:
artifactName: sign-macos-binlog-$(System.JobAttempt)
targetPath: $(Build.StagingDirectory)/sign-macos.binlog
condition: always()

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

- task: PublishPipelineArtifact@1
displayName: Upload artifact
inputs:
artifactName: nuget-signed
targetPath: artifacts/package/nugets


- job: sign_verify
displayName: Verify Signing
dependsOn: pack_sign
timeoutInMinutes: 240
pool:
name: VSEngSS-MicroBuild2022-1ES
steps:
- checkout: self
submodules: recursive

- task: DownloadPipelineArtifact@2
inputs:
artifactName: nuget-signed
downloadPath: $(Build.SourcesDirectory)\artifacts

- task: MicroBuildCodesignVerify@3
displayName: verify signed content
inputs:
TargetFolders: $(Build.SourcesDirectory)\artifacts
ExcludeSNVerify: true
condition: and(succeededOrFailed(), eq(variables['MicroBuildSignType'], 'Real'))
Loading