Skip to content

Commit

Permalink
Add definition of pipeline to create NuGet packages for MSIX SDK (mic…
Browse files Browse the repository at this point in the history
…rosoft#505)

Adding a definition of a pipeline to produce NuGet packages for the MSIX SDK.

Moved the definitions of each platform-specific job in the build pipelines to a template which is used by the respective pipeline, and added a new pipeline that uses all of these jobs and then creates the packages in a new stage. The new stage is based on an existing internal release pipeline, with minor changes (replaced build artifacts by pipeline artifacts, enabled generation for Linux, added a step to produce the SBoM manifest)
  • Loading branch information
Chacón committed Apr 4, 2022
1 parent 89baf01 commit 02029f6
Show file tree
Hide file tree
Showing 12 changed files with 843 additions and 436 deletions.
71 changes: 1 addition & 70 deletions pipelines/azure-pipelines-aosp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,73 +27,4 @@ pr:
- manifest.cmakein

jobs:
- job: AOSP
pool:
vmImage: macOS-10.15
strategy:
# TODO: add builds using xerces if needed.
matrix:
debug_emulator:
_arguments: -b Debug -xzlib
_artifact: AOSP-x86chk
release_emulator:
_arguments: -b MinSizeRel -xzlib
_artifact: AOSP-x86
release_emulator_nobundle:
_arguments: -b MinSizeRel -sb -xzlib
_artifact: AOSP-x86-nobundle
release_arm:
_arguments: -b MinSizeRel -arch armeabi-v7a -xzlib
_artifact: AOSP-arm
release_arm_nobundle:
_arguments: -b MinSizeRel -arch armeabi-v7a -sb -xzlib
_artifact: AOSP-arm-nobundle
steps:
- task: Bash@3
displayName: Build
inputs:
targetType: filePath
filePath: ./makeaosp.sh
arguments: $(_arguments)
failOnStderr: true
condition: succeeded()

# Note: We only test for release_emulator
- task: Bash@3
displayName: AOSP BVTs
inputs:
targetType: filePath
filePath: './src/test/mobile/testaosponmac.sh'
arguments: '-c "system-images;android-26;google_apis;x86" -i -o TEST-MsixSDK-$(_artifact).xml'
workingDirectory: './src/test/mobile/'
condition: and(succeeded(), contains(variables['Agent.JobName'], 'release_emulator'))

- task: PublishTestResults@2
displayName: 'Publish $(_artifact) Test Results'
inputs:
failTaskOnFailedTests: true
testRunTitle: $(_artifact)
condition: and(succeededOrFailed(), contains(variables['Agent.JobName'], 'release'))

- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: .vs
Contents: |
bin/makemsix
lib/libmsix*
lib/libmsix*/**
lib/msix-jni.jar
src/msix/AppxPackaging.hpp
src/msix/MSIXWindows.hpp
src/msix/MsixErrors.hpp
Package.nuspec
build/**
TargetFolder: '$(Build.ArtifactStagingDirectory)'
condition: succeededOrFailed()

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact $(_artifact)'
inputs:
ArtifactName: $(_artifact)
condition: succeededOrFailed()
- template: templates/build-aosp.yml
73 changes: 1 addition & 72 deletions pipelines/azure-pipelines-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,75 +27,4 @@ pr:
- manifest.cmakein

jobs:
- job: iOS
pool:
vmImage: macOS-10.15
strategy:
# TODO: add builds using xerces if needed.
matrix:
debug_x86:
_arguments: -b Debug
_artifact: iOS-x86chk
release_x86:
_arguments: -b MinSizeRel
_artifact: iOS-x86
release_x86_nobundle:
_arguments: -b MinSizeRel -sb
_artifact: iOS-x86-nobundle
release_arm64:
_arguments: -b MinSizeRel -arch arm64
_artifact: iOS-arm64
release_arm64_nobundle:
_arguments: -b MinSizeRel -arch arm64 -sb
_artifact: iOS-arm64-nobundle
steps:
- task: Bash@3
displayName: Build
inputs:
targetType: filePath
filePath: ./makeios.sh
arguments: $(_arguments)
failOnStderr: true
condition: succeeded()

# Note: We skip BVTs in Debug mode because of assert() and release_arm64
# Only do BVTs for release_x86 because the emulator
- task: Bash@3
displayName: iOS BVTs
inputs:
targetType: filePath
filePath: './src/test/mobile/testios.sh'
arguments: '-p iOSBVT/iOSBVT.xcodeproj -o TEST-MsixSDK-$(_artifact).xml'
workingDirectory: './src/test/mobile/'
failOnStderr: true
condition: and(succeeded(), contains(variables['Agent.JobName'], 'release_x86'))

- task: PublishTestResults@2
displayName: 'Publish $(_artifact) Test Results'
inputs:
failTaskOnFailedTests: true
testRunTitle: $(_artifact)
condition: and(succeededOrFailed(), contains(variables['Agent.JobName'], 'release'))

- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: .vs
Contents: |
bin/makemsix
bin/makemsix.dSYM/**
lib/libmsix*
lib/libmsix*/**
src/msix/AppxPackaging.hpp
src/msix/MSIXWindows.hpp
src/msix/MsixErrors.hpp
Package.nuspec
build/**
TargetFolder: '$(Build.ArtifactStagingDirectory)'
condition: succeededOrFailed()

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact $(_artifact)'
inputs:
ArtifactName: $(_artifact)
condition: succeededOrFailed()
- template: templates/build-ios.yml
70 changes: 1 addition & 69 deletions pipelines/azure-pipelines-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,72 +27,4 @@ pr:
- manifest.cmakein

jobs:
- job: Linux
pool:
vmImage: ubuntu-18.04
strategy:
# TODO: add builds using xerces if needed.
matrix:
debug_nopack:
_arguments: -b Debug
_artifact: LINUXchk
release_nopack:
_arguments: -b MinSizeRel
_artifact: LINUX
release_nobundle:
_arguments: -b MinSizeRel -sb
_artifact: LINUX-nobundle
release_validation_parser:
_arguments: -b MinSizeRel -vp
_artifact: LINUX-ValidationParser
release_pack:
_arguments: -b MinSizeRel --pack
_artifact: LINUX-pack
debug_pack:
_arguments: -b Debug --pack
_artifact: LINUXchk-pack

steps:
- task: Bash@3
displayName: Build
inputs:
targetType: filePath
filePath: ./makelinux.sh
arguments: $(_arguments)
failOnStderr: true
condition: succeeded()

# Note: We skip BVTs in Debug mode because of assert()
- script: 'msixtest/msixtest -s -r junit -o TEST-MsixSDK-$(_artifact).xml'
workingDirectory: .vs
displayName: 'Linux BVTs'
condition: and(succeeded(), contains(variables['Agent.JobName'], 'release'))

- task: PublishTestResults@2
displayName: 'Publish $(_artifact) Test Results'
inputs:
failTaskOnFailedTests: true
testRunTitle: $(_artifact)
condition: and(succeededOrFailed(), contains(variables['Agent.JobName'], 'release'))

- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: .vs
Contents: |
bin/makemsix
lib/libmsix*
lib/libmsix*/**
src/msix/AppxPackaging.hpp
src/msix/MSIXWindows.hpp
src/msix/MsixErrors.hpp
Package.nuspec
build/**
TargetFolder: '$(Build.ArtifactStagingDirectory)'
condition: succeededOrFailed()

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact $(_artifact)'
inputs:
ArtifactName: $(_artifact)
condition: succeededOrFailed()
- template: templates/build-linux.yml
125 changes: 1 addition & 124 deletions pipelines/azure-pipelines-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,127 +27,4 @@ pr:
- manifest.cmakein

jobs:
- job: macOS
pool:
vmImage: macOS-10.15
strategy:
# TODO: add builds using xerces if needed.
matrix:
debug_nopack:
_arguments: -b Debug
_artifact: MACOSchk
release_nopack:
_arguments: -b MinSizeRel
_artifact: MACOS
release_nobundle:
_arguments: -b MinSizeRel -sb
_artifact: MACOS-nobundle
release_pack:
_arguments: -b MinSizeRel --pack
_artifact: MACOS-pack
debug_pack:
_arguments: -b Debug --pack
_artifact: MACOSchk-pack
# arm64
debug_nopack_arm64:
_arguments: -b Debug -arch arm64 --skip-tests
_artifact: MACOSarm64chk
release_nopack_arm64:
_arguments: -b MinSizeRel -arch arm64 --skip-tests
_artifact: MACOSarm64
release_nobundle_arm64:
_arguments: -b MinSizeRel -sb -arch arm64 --skip-tests
_artifact: MACOSarm64-nobundle
release_pack_arm64:
_arguments: -b MinSizeRel --pack -arch arm64 --skip-tests
_artifact: MACOSarm64-pack
debug_pack_arm64:
_arguments: -b Debug --pack -arch arm64 --skip-tests
_artifact: MACOSarm64chk-pack
steps:

- task: Bash@3
displayName: Build
inputs:
targetType: filePath
filePath: ./makemac.sh
arguments: $(_arguments)
# failOnStderr: true Turn on when https://github.com/Microsoft/azure-pipelines-image-generation/issues/758 is resolved.
condition: succeeded()

# Because of the azure pipeline issue we won't fail compiling the code, but
# we will fail doing the test because there are no binaries
# Note: We skip BVTs in Debug mode because of assert()
- script: 'msixtest/msixtest -s -r junit -o TEST-MsixSDK-$(_artifact).xml'
workingDirectory: .vs
displayName: 'macOS BVTs'
condition: and(succeeded(), contains(variables['Agent.JobName'], 'release'), not(contains(variables['Agent.JobName'], 'arm64')))

- task: PublishTestResults@2
displayName: 'Publish $(_artifact) Test Results'
inputs:
failTaskOnFailedTests: true
testRunTitle: $(_artifact)
condition: and(succeededOrFailed(), contains(variables['Agent.JobName'], 'release'), not(contains(variables['Agent.JobName'], 'arm64')))

- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: .vs
Contents: |
bin/makemsix
bin/makemsix.dSYM/**
lib/libmsix*
lib/libmsix*/**
src/msix/AppxPackaging.hpp
src/msix/MSIXWindows.hpp
src/msix/MsixErrors.hpp
Package.nuspec
build/**
TargetFolder: '$(Build.ArtifactStagingDirectory)'
condition: succeededOrFailed()

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact $(_artifact)'
inputs:
ArtifactName: $(_artifact)
condition: succeededOrFailed()

- job: macOS_universal_nopack
dependsOn:
- 'macOS'
pool:
name: Azure Pipelines
vmImage: macOS-latest
steps:
- template: templates/macos-universal.yml
parameters:
artifact_output: MACOS-Universal
artifact_x86: MACOS
artifact_arm64: MACOSarm64

- job: macOS_universal_nobundle
dependsOn:
- 'macOS'
pool:
name: Azure Pipelines
vmImage: macOS-latest
steps:
- template: templates/macos-universal.yml
parameters:
artifact_output: MACOS-nobundle-Universal
artifact_x86: MACOS-nobundle
artifact_arm64: MACOSarm64-nobundle

- job: macOS_universal_pack
dependsOn:
- 'macOS'
pool:
name: Azure Pipelines
vmImage: macOS-latest
steps:
- template: templates/macos-universal.yml
parameters:
artifact_output: MACOS-pack-Universal
artifact_x86: MACOS-pack
artifact_arm64: MACOSarm64-pack
- template: templates/build-macos.yml
Loading

0 comments on commit 02029f6

Please sign in to comment.