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

[Shipping] Publish StoreKit bindings as NuGet packages and run device tests #3040

Open
wants to merge 52 commits into
base: feature/swift-bindings
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
115caa4
Fix generate script to include framework
kotlarmilos Mar 13, 2025
124eff8
Add local nuget path
kotlarmilos Mar 13, 2025
4bdb8a7
Add simple storekit test
kotlarmilos Mar 13, 2025
7c4f44c
Run the test on the CI
kotlarmilos Mar 13, 2025
c35fd8a
Fix nuget repository resolution
kotlarmilos Mar 13, 2025
3a829a5
Update dependencies and scripts to .NET 10
kotlarmilos Mar 18, 2025
0fd67ea
Install Swift.Bindings tool
kotlarmilos Mar 18, 2025
6f66e9c
Generate bindings for all platforms
kotlarmilos Mar 19, 2025
7e6de9b
Merge branch 'feature/swift-bindings' into swift-bindings/storekit-tests
kotlarmilos Mar 19, 2025
2fe649b
Fix build
kotlarmilos Mar 19, 2025
37577f6
Fix build
kotlarmilos Mar 19, 2025
09345ee
Fix formatting
kotlarmilos Mar 19, 2025
113b8d9
Use local projection tooling
kotlarmilos Mar 20, 2025
6b25307
Add build step
kotlarmilos Mar 20, 2025
8f371e4
Run StoreKit tests
kotlarmilos Mar 20, 2025
6beceaf
Pack bindings
kotlarmilos Mar 20, 2025
a3910cb
Pack bindings
kotlarmilos Mar 20, 2025
adac891
Add wrapper app
kotlarmilos Mar 20, 2025
b4ac802
Disable wrapper app
kotlarmilos Mar 20, 2025
b5b9bde
Continue on error
kotlarmilos Mar 20, 2025
1fe856b
Add wrapper app
kotlarmilos Mar 20, 2025
7e8ca9b
Test minsdk
kotlarmilos Mar 20, 2025
8799456
Test wrapper app
kotlarmilos Mar 20, 2025
d6338a1
Test wrapper app
kotlarmilos Mar 20, 2025
8603d74
Test wrapper app
kotlarmilos Mar 20, 2025
7a92d83
Test wrapper app
kotlarmilos Mar 20, 2025
057c93c
Test wrapper app
kotlarmilos Mar 21, 2025
a098631
Test wrapper app
kotlarmilos Mar 21, 2025
7481f27
Test wrapper app
kotlarmilos Mar 21, 2025
cc1c902
Test wrapper app
kotlarmilos Mar 21, 2025
137d1a2
Test wrapper app
kotlarmilos Mar 21, 2025
d2bd943
Test runner app
kotlarmilos Mar 21, 2025
3652ba1
Test runner app
kotlarmilos Mar 21, 2025
224f2d6
Test runner app
kotlarmilos Mar 21, 2025
047fb1b
Fix build-job.yml
kotlarmilos Mar 21, 2025
23d7d48
Fix build-job.yml condition
kotlarmilos Mar 21, 2025
8e12dc4
Build only MacCatalyst bindings on PR builds
kotlarmilos Mar 22, 2025
85d7825
Build only MacCatalyst bindings on PR builds
kotlarmilos Mar 22, 2025
cc4bd63
Add check for invalid platform
kotlarmilos Mar 22, 2025
fb115fb
Fix project path
kotlarmilos Mar 22, 2025
99d7f91
Fix path
kotlarmilos Mar 22, 2025
f2e13b4
Change output directory for bindings
kotlarmilos Mar 22, 2025
1332787
Change .gitignore
kotlarmilos Mar 22, 2025
b3db48c
Create release NuGet pack
kotlarmilos Mar 22, 2025
92a43c2
Fix tests
kotlarmilos Mar 22, 2025
042e666
Generate dynamic native library
kotlarmilos Mar 27, 2025
9232aa0
Add StoreKit tests
kotlarmilos Mar 27, 2025
923cda5
Fix internal pipeline
kotlarmilos Mar 27, 2025
ddd2b4a
Fix internal pipeline
kotlarmilos Mar 27, 2025
be66e20
Fix internal pipeline
kotlarmilos Mar 27, 2025
723eab3
Fix formatting
kotlarmilos Mar 27, 2025
053cb20
Use xcode-select for SDK path
kotlarmilos Mar 28, 2025
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
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -203,4 +203,3 @@ launchSettings.json
# Testing artifacts
testing/
src/samples/
GeneratedBindings/
2 changes: 1 addition & 1 deletion NuGet.config
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
<add key="dotnet9" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet9/nuget/v3/index.json" />
<add key="dotnet-tools" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" />
<add key="test-device-runners" value="https://pkgs.dev.azure.com/mattleibow/OpenSource/_packaging/test-device-runners/nuget/v3/index.json" />
<add key="dotnet-experimental" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental/nuget/v3/index.json" />
</packageSources>
<disabledPackageSources>
<clear />
Expand Down
4 changes: 2 additions & 2 deletions eng/Version.Details.xml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Dependencies>
<ToolsetDependencies>
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.24606.6">
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25164.6">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>61b8f746424762d2e3173ebfaab19346224d591c</Sha>
<Sha>1912d9f4fc410d421a01b5a09131aae234b603fa</Sha>
</Dependency>
</ToolsetDependencies>
</Dependencies>
53 changes: 32 additions & 21 deletions eng/pipelines/common/jobs/prepare-signed-artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@ parameters:
PublishRidAgnosticPackagesFromPlatform: ''
isOfficialBuild: false
logArtifactName: 'Logs-PrepareSignedArtifacts_Attempt$(System.JobAttempt)'
bindings:
isBindingsBuild: false
scriptArgs: ''
scriptArgs: ''

jobs:
- template: /eng/common/templates-official/job/job.yml
Expand All @@ -28,13 +26,16 @@ jobs:
variables:
- name: '_SignType'
value: $[ coalesce(variables.OfficialSignType, 'real') ]
- _BuildConfig: Release
- _buildScript: ./build.sh
- _generateScript: ./generate.sh

steps:
- script: >-
./build.sh -ci
$(_buildScript) -ci
-publish
-pack
-configuration Release
-configuration $(_BuildConfig)
/p:PublishRidAgnosticPackagesFromPlatform=${{ parameters.PublishRidAgnosticPackagesFromPlatform }}
/p:OfficialBuildId=$(Build.BuildNumber)
/p:SignType=$(_SignType)
Expand All @@ -43,24 +44,34 @@ jobs:
/bl:$(Build.SourcesDirectory)\prepare-artifacts.binlog
displayName: Prepare tooling artifacts and upload to build

- ${{ if eq(parameters.bindings.isBindingsBuild, true) }}:
- script: >-
./generate.sh --configuration Release ${{ parameters.bindings.scriptArgs }}
displayName: Generate bindings
- script: $(_generateScript) --configuration $(_BuildConfig) --platform MacOSX ${{ parameters.scriptArgs }}
displayName: Generate MacOSX bindings
- script: $(_generateScript) --configuration $(_BuildConfig) --platform iPhoneOS ${{ parameters.scriptArgs }}
displayName: Generate iOS bindings
- script: $(_generateScript) --configuration $(_BuildConfig) --platform iPhoneSimulator ${{ parameters.scriptArgs }}
displayName: Generate iOSSimulator bindings
- script: $(_generateScript) --configuration $(_BuildConfig) --platform AppleTVOS ${{ parameters.scriptArgs }}
displayName: Generate tvOS bindings
- script: $(_generateScript) --configuration $(_BuildConfig) --platform AppleTVSimulator ${{ parameters.scriptArgs }}
displayName: Generate tvOSSimulator bindings
- script: $(_generateScript) --configuration $(_BuildConfig) --platform iPhoneOS --maccatalyst ${{ parameters.scriptArgs }}
displayName: Generate MacCatalyst bindings

- script: >-
./build.sh -ci
-publish
-pack
-configuration Release
--projects $(pwd)/GeneratedBindings/Swift.Bindings.Experimental.csproj
/p:PublishRidAgnosticPackagesFromPlatform=${{ parameters.PublishRidAgnosticPackagesFromPlatform }}
/p:OfficialBuildId=$(Build.BuildNumber)
/p:SignType=$(_SignType)
/p:DotNetSignType=$(_SignType)
/p:DotNetPublishUsingPipelines=true
- script: |
for proj in artifacts/MacOSX/*.csproj artifacts/iPhoneOS/*.csproj artifacts/iPhoneSimulator/*.csproj artifacts/AppleTVOS/*.csproj artifacts/AppleTVSimulator/*.csproj artifacts/MacCatalyst/*.csproj; do
$(_buildScript) -ci \
-publish \
-pack \
-configuration $(_BuildConfig) \
--projects "$(pwd)/$proj" \
/p:PublishRidAgnosticPackagesFromPlatform=${{ parameters.PublishRidAgnosticPackagesFromPlatform }} \
/p:OfficialBuildId=$(Build.BuildNumber) \
/p:SignType=$(_SignType) \
/p:DotNetSignType=$(_SignType) \
/p:DotNetPublishUsingPipelines=true \
/bl:$(Build.SourcesDirectory)\prepare-artifacts.binlog
displayName: Prepare bindings artifacts and upload to build
done
displayName: Prepare bindings artifacts and upload to build

- task: CopyFiles@2
displayName: Copy Files to $(Build.StagingDirectory)\BuildLogs
Expand Down
44 changes: 34 additions & 10 deletions eng/pipelines/common/templates/build-job.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
parameters:
variables: {}
osGroup: ''
platform: ''
archType: ''
container: ''
pool: {}
isOfficialBuild: false
runTests: true
bindings:
isBindingsBuild: false
scriptArgs: ''
scriptArgs: ''

jobs:

Expand Down Expand Up @@ -38,9 +37,9 @@ jobs:
testRunTitle: ${{ parameters.osGroup }}_${{ parameters.archType }}_$(_BuildConfig)

variables:
- _buildScript: build.cmd
- ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
- _buildScript: ./build.sh
- _buildScript: ./build.sh
- _generateScript: ./generate.sh
- _dotnetScript: ./dotnet.sh

- _testBuildArg: ''
- ${{ if eq(parameters.runTests, true) }}:
Expand All @@ -54,12 +53,37 @@ jobs:
/p:TargetPlatform=${{ parameters.archType }}
displayName: Build and test

- script: ./dotnet.sh format --exclude artifacts --verify-no-changes --verbosity detailed
- script: $(_dotnetScript) format --exclude artifacts --verify-no-changes --verbosity detailed
displayName: Verify code formatting

- ${{ if and(eq(parameters.bindings.isBindingsBuild, true), ne(parameters.osGroup, 'Windows_NT')) }}:
- script: ./generate.sh --configuration $(_BuildConfig) ${{ parameters.bindings.scriptArgs }}
displayName: Generate bindings
- ${{ if and(ne(parameters.isOfficialBuild, true), eq(parameters.platform, 'maccatalyst')) }}:
- script: |
$(_generateScript) --configuration $(_BuildConfig) --platform iPhoneOS --maccatalyst ${{ parameters.scriptArgs }}
$(_buildScript) -ci -publish -pack -configuration Release --projects $(pwd)/artifacts/MacCatalyst/Swift.Bindings.MacCatalyst.Experimental.csproj
displayName: Generate MacCatalyst bindings

- script: |
$(_dotnetScript) workload install maui maccatalyst mobile-librarybuilder-net9 --version 10.0.100-preview.1.25124.2 --source https://api.nuget.org/v3/index.json
$(_dotnetScript) new tool-manifest && $(_dotnetScript) tool install microsoft.dotnet.xharness.cli --version "10.0.0-prerelease*"
sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer
displayName: Install dependencies

- script: |
$(_dotnetScript) build ./src/Swift.Bindings/tests/FrameworkTests/Swift.Bindings.Framework.Tests.csproj \
-f net10.0-${{ parameters.platform }} \
-c $(_BuildConfig) \
-r ${{ parameters.platform }}-${{ parameters.archType }} \
/p:UseMaui=true
displayName: Build device tests

- script: |
$(_dotnetScript) xharness apple test \
--target ${{ parameters.platform }} \
--timeout="00:02:00" \
--launch-timeout=00:06:00 \
--app ./src/Swift.Bindings/tests/FrameworkTests/bin/$(_BuildConfig)/net10.0-${{ parameters.platform }}/${{ parameters.platform }}-${{ parameters.archType }}/Swift.Bindings.Framework.Tests.app \
--output-directory artifacts
displayName: Run device tests

- ${{ if eq(parameters.isOfficialBuild, true) }}:
- template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
Expand Down
6 changes: 2 additions & 4 deletions eng/pipelines/common/templates/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ parameters:
enableSigningValidation: false
enableNugetValidation: false
enableSourceLinkValidation: false
bindings:
isBindingsBuild: false
scriptArgs: ''
scriptArgs: ''

stages:

Expand All @@ -19,7 +17,7 @@ stages:
- template: /eng/pipelines/common/jobs/prepare-signed-artifacts.yml
parameters:
PublishRidAgnosticPackagesFromPlatform: ${{ parameters.PublishRidAgnosticPackagesFromPlatform }}
bindings: ${{ parameters.bindings }}
scriptArgs: ${{ parameters.scriptArgs }}

# Publish to Build Asset Registry in order to generate the ReleaseConfigs artifact.
- template: /eng/common/templates-official/job/publish-build-assets.yml
Expand Down
79 changes: 0 additions & 79 deletions eng/pipelines/common/templates/test-job.yml

This file was deleted.

4 changes: 1 addition & 3 deletions eng/pipelines/runtimelab-official.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,4 @@ extends:
parameters:
isOfficialBuild: true
enableSourceLinkValidation: true
bindings:
isBindingsBuild: true
scriptArgs: '--platform MacOSX --arch x86_64-apple-macos --version 16.0 --framework StoreKit --experimental'
scriptArgs: '--framework StoreKit'
13 changes: 2 additions & 11 deletions eng/pipelines/runtimelab.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,20 +51,11 @@ stages:
jobs:
- ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
- template: /eng/pipelines/common/templates/build-job.yml
parameters:
osGroup: OSX
archType: x64
runTests: true
pool:
vmImage: 'macOS-latest'
bindings:
isBindingsBuild: true
scriptArgs: '--platform MacOSX --arch x86_64-apple-macos --version 16.0 --framework StoreKit'

- template: /eng/pipelines/common/templates/test-job.yml
parameters:
osGroup: OSX
platform: maccatalyst
archType: x64
runTests: true
pool:
vmImage: 'macOS-latest'
scriptArgs: '--framework StoreKit'
Loading