Skip to content

Commit

Permalink
Merge branch 'main' into fp/mixed-collections plus moved core to next…
Browse files Browse the repository at this point in the history
…-major

* main:
  Allow customizing json ignore attribute for serialized classes (#3451)
  Update README.md (#3450)
  Fix changelog
  Prepare for vNext (#3444)
  Prepare for 11.5.0 (#3442)
  Migrate to new sync error codes (#3440)
  Starting one cluster per platform on CI (#3426)
  Fix trailing comma when there are no features to analyze (#3438)

# Conflicts:
#	wrappers/realm-core
  • Loading branch information
papafe committed Sep 25, 2023
2 parents cdeaa4c + 1fdc207 commit 943e6d9
Show file tree
Hide file tree
Showing 55 changed files with 511 additions and 329 deletions.
12 changes: 10 additions & 2 deletions .github/templates/build.lib.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,25 @@ deploy-cluster:
AtlasPrivateKey: #@ secret_AtlasPrivateKey
#@ end

#@ def cleanupBaas(dependencies = []):
#@ needs = []
#! We need to have two input arrays because there is not a 1-to-1 correspondence between dependencies
#! and targets, for example for macOS.
#@ def cleanupBaas(dependencies = [], targets = []):
#@ needs = ["deploy-cluster"]
#@ differentiators = []
#@ for dependency in dependencies:
#@ needs.append(getJobName("test", dependency))
#@ end
#@ for target in targets:
#@ differentiators.append('"' + getJobName("", target) + '"')
#@ end
cleanup-cluster:
uses: ./.github/workflows/cleanup-baas.yml
if: always()
name: Cleanup
needs: #@ needs
with:
differentiators: #@ '[' + ", ".join(differentiators) + ']'
clusterName: ${{ needs.deploy-cluster.outputs.clusterName }}
BaseUrl: #@ realm_BaseUrl
AtlasBaseUrl: #@ atlas_BaseUrl
secrets:
Expand Down
2 changes: 1 addition & 1 deletion .github/templates/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,4 @@ jobs:
dashboard-path: dashboard.charts
nuget-package: ${{ github.workspace }}/Realm/packages/Realm.${{ needs.build-packages.outputs.package_version }}.nupkg
- #@ uploadArtifacts("dashboard.charts", "dashboard.charts", 30)
_: #@ template.replace(cleanupBaas([".NET Framework", "Code Coverage", "UWP Managed", "MacOS", "iOS", "Android"]))
_: #@ template.replace(cleanupBaas(dependencies = [".NET Framework", "Code Coverage", "UWP Managed", "MacOS", "iOS", "Android"], targets=[".NET Framework", "Code Coverage", "UWP Managed", "Xamarin.macOS", "iOS", "Android", "MacCatalyst"]))
2 changes: 1 addition & 1 deletion .github/templates/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
uses: ./.github/workflows/test-weaver.yml
name: Test
_: #@ template.replace(runTests("Code Coverage"))
_: #@ template.replace(cleanupBaas(["Code Coverage"]))
_: #@ template.replace(cleanupBaas(dependencies = ["Code Coverage"], targets = ["Code Coverage"]))
verify-namespaces:
runs-on: ubuntu-latest
name: Verify Namespaces
Expand Down
2 changes: 1 addition & 1 deletion .github/templates/test-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
name: Xamarin.Android
timeout-minutes: 60
steps:
- #@ template.replace(prepareTest())
- #@ template.replace(prepareTest("android"))
- #@ template.replace(buildTests("Tests/Tests.Android", target="SignAndroidPackage", AndroidUseSharedRuntime="False", EmbedAssembliesIntoApk="True"))
- #@ template.replace(configureAWSCredentials("AWS_DEVICEFARM_ACCESS_KEY_ID", "AWS_DEVICEFARM_SECRET_ACCESS_KEY", "us-west-2"))
- name: Run the tests
Expand Down
2 changes: 1 addition & 1 deletion .github/templates/test-code-coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
name: Code Coverage
timeout-minutes: 90
steps:
- #@ template.replace(prepareTest(fetchWrappers=True))
- #@ template.replace(prepareTest("code-coverage", fetchWrappers=True))
- name: Setup Coverlet & Report Generator
run: |
dotnet tool install coverlet.console --tool-path tools
Expand Down
2 changes: 1 addition & 1 deletion .github/templates/test-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
name: Xamarin.iOS
timeout-minutes: 90
steps:
- #@ template.replace(prepareTest())
- #@ template.replace(prepareTest("ios"))
- #@ template.replace(buildTests("Tests/Tests.iOS", Platform="iPhoneSimulator"))
- name: Run the tests
uses: #@ actionRuniOSSimulator
Expand Down
6 changes: 3 additions & 3 deletions .github/templates/test-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,17 @@ jobs:
test-xamarin:
runs-on: macos-latest
name: Xamarin.macOS
timeout-minutes: 45
timeout-minutes: 60
steps:
- #@ template.replace(prepareTest())
- #@ template.replace(prepareTest("xamarinmacos"))
- #@ template.replace(buildTests("Tests/Tests.XamarinMac"))
- name: Run the tests
run: #@ "Tests/Tests.XamarinMac/bin/" + configuration + "/Tests.XamarinMac.app/Contents/MacOS/Tests.XamarinMac --headless --result=${{ github.workspace }}/TestResults.XamarinMac.xml --labels=All" + baasTestArgs("xamarinmacos")
- #@ publishTestsResults("TestResults.XamarinMac.xml", "Xamarin.macOS")
test-maui:
runs-on: macos-12
name: Maui.MacCatalyst
timeout-minutes: 45
timeout-minutes: 60
steps:
- #@ template.replace(checkoutCode())
- #@ template.replace(fetchPackageArtifacts())
Expand Down
2 changes: 1 addition & 1 deletion .github/templates/test-net-core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
env:
DOTNET_DbgEnableMiniDump: 1
DOTNET_EnableCrashReport: 1
run: #@ "${{ steps.dotnet-publish.outputs.executable-path }}/Realm.Tests --result=TestResults.xml --labels=After" + baasTestArgs("net-core-${{ matrix.runner }}-${{ matrix.runtime }}")
run: #@ "${{ steps.dotnet-publish.outputs.executable-path }}/Realm.Tests --result=TestResults.xml --labels=After"
- name: Archive core dump
uses: actions/upload-artifact@v3
if: failure()
Expand Down
2 changes: 1 addition & 1 deletion .github/templates/test-net-framework.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
name: .NET Framework
timeout-minutes: 45
steps:
- #@ template.replace(prepareTest())
- #@ template.replace(prepareTest("net-framework"))
- #@ template.replace(buildTests("Tests/Realm.Tests", TargetFramework="net461", RealmTestsStandaloneExe="true"))
- name: Run the tests
run: #@ "./Tests/Realm.Tests/bin/" + configuration + "/net461/Realm.Tests.exe --result=TestResults.Windows.xml --labels=After" + baasTestArgs("net-framework")
Expand Down
2 changes: 1 addition & 1 deletion .github/templates/test-uwp-managed.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
name: UWP
timeout-minutes: 45
steps:
- #@ template.replace(prepareTest())
- #@ template.replace(prepareTest("uwp-managed"))
- name: Import test certificate
run: |
$pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.Base64_Encoded_Pfx }}")
Expand Down
2 changes: 1 addition & 1 deletion .github/templates/test-woven-classes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,5 @@ jobs:
- #@ template.replace(fetchPackageArtifacts())
- #@ template.replace(wovenClassesBuildTests("Tests/Realm.Tests", "net7.0", "win-x64"))
- name: Run the tests
run: #@ "${{ steps.dotnet-publish.outputs.executable-path }}/Realm.Tests --result=TestResults.WovenClasses.xml --labels=After" + baasTestArgs("weaved-classes")
run: #@ "${{ steps.dotnet-publish.outputs.executable-path }}/Realm.Tests --result=TestResults.WovenClasses.xml --labels=After"
- #@ publishTestsResults("TestResults.WovenClasses.xml", "Woven classes")
9 changes: 7 additions & 2 deletions .github/templates/test.lib.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#@ load("common.lib.yml", "actionDownloadArtifact", "msbuild", "dotnetPublish", "fetchWrapperBinaries", "checkoutCode", "fetchPackageArtifacts")

#@ def baasTestArgs(differentiator):
#@ return " --baasurl=${{ inputs.realmUrl }} --baascluster=${{ inputs.clusterName }} --baasapikey=${{ secrets.AtlasPublicKey}} --baasprivateapikey=${{ secrets.AtlasPrivateKey}} --baasprojectid=${{ secrets.AtlasProjectId }} --baasdifferentiator=" + differentiator
#@ return " --baasurl=${{ inputs.realmUrl }} --baascluster=${{ inputs.clusterName }}-"+ differentiator +" --baasapikey=${{ secrets.AtlasPublicKey}} --baasprivateapikey=${{ secrets.AtlasPrivateKey}} --baasprojectid=${{ secrets.AtlasProjectId }} --baasdifferentiator=" + differentiator
#@ end
---
#@ def publishTestsResults(files, test_title):
Expand Down Expand Up @@ -81,7 +81,7 @@ env:
#@ return dotnetPublish(projectPath, framework, runtime, properties)
#@ end
---
#@ def prepareTest(fetchWrappers = False, cleanupWorkspace = False):
#@ def prepareTest(differentiator = "", fetchWrappers = False, cleanupWorkspace = False):
- #@ template.replace(checkoutCode())
#@ if cleanupWorkspace:
- name: Cleanup Workspace
Expand All @@ -92,13 +92,18 @@ env:
#@ else:
- #@ template.replace(fetchPackageArtifacts())
#@ end
#@ if (differentiator != ""):
#! The following is used in case we need to re-run the action and the main deploy cluster job is not re-run too (because successful)
- uses: realm/ci-actions/mdb-realm/deploy@fa20eb972b9f018654fdb4e2c7afb52b0532f907
name: Deploy Cluster (alternative)
if: ${{ inputs.realmUrl }}
with:
projectId: ${{ secrets.AtlasProjectId}}
realmUrl: ${{ inputs.realmUrl }}
atlasUrl: ${{ inputs.atlasUrl}}
apiKey: ${{ secrets.AtlasPublicKey}}
privateApiKey: ${{ secrets.AtlasPrivateKey }}
clusterName: #@ "${{ inputs.clusterName }}-" + differentiator
clusterSize: M10
#@ end
#@ end
12 changes: 11 additions & 1 deletion .github/workflows/cleanup-baas.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@ name: cleanup-baas
"on":
workflow_call:
inputs:
differentiators:
required: true
type: string
clusterName:
required: true
type: string
BaseUrl:
required: true
type: string
Expand All @@ -20,8 +26,11 @@ env:
DOTNET_NOLOGO: true
jobs:
cleanup-baas:
runs-on: ubuntu-latest
name: Cleanup Cluster
runs-on: ubuntu-latest
strategy:
matrix:
differentiator: ${{ fromJson(inputs.differentiators) }}
timeout-minutes: 5
steps:
- name: Checkout code
Expand All @@ -36,3 +45,4 @@ jobs:
atlasUrl: ${{ inputs.AtlasBaseUrl}}
apiKey: ${{ secrets.AtlasPublicKey}}
privateApiKey: ${{ secrets.AtlasPrivateKey }}
clusterName: ${{ inputs.clusterName }}-${{ matrix.differentiator }}
17 changes: 13 additions & 4 deletions .github/workflows/deploy-baas.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,20 @@ env:
DOTNET_NOLOGO: true
jobs:
deploy-baas:
runs-on: ubuntu-latest
name: Deploy Cluster
runs-on: ubuntu-latest
strategy:
matrix:
differentiator: ${{ fromJson(inputs.differentiators) }}
outputs:
clusterName: ${{ steps.deploy-cluster.outputs.clusterName }}
clusterName: ${{ steps.generate-cluster-name.outputs.clusterName }}
timeout-minutes: 20
steps:
- name: Generate cluster name
id: generate-cluster-name
run: |
name=$( echo ${{ github.run_id }}-${{ github.run_attempt }} | md5sum | cut -c1-7)
echo "clusterName=$name" >> "$GITHUB_OUTPUT"
- name: Checkout code
uses: actions/checkout@v3
with:
Expand All @@ -45,7 +53,8 @@ jobs:
atlasUrl: ${{ inputs.AtlasBaseUrl}}
apiKey: ${{ secrets.AtlasPublicKey}}
privateApiKey: ${{ secrets.AtlasPrivateKey }}
clusterSize: M20
clusterName: ${{ steps.generate-cluster-name.outputs.clusterName }}-${{ matrix.differentiator }}
clusterSize: M5
deploy-apps:
name: Deploy Apps
needs: deploy-baas
Expand All @@ -64,5 +73,5 @@ jobs:
with:
dotnet-version: 6.0.x
- name: Deploy Apps
run: dotnet run . --baasurl=${{ inputs.BaseUrl }} --baascluster=${{ needs.deploy-baas.outputs.clusterName }} --baasapikey=${{ secrets.AtlasPublicKey }} --baasprivateapikey=${{ secrets.AtlasPrivateKey }} --baasprojectid=${{ secrets.AtlasProjectId }} --baasdifferentiator=${{ matrix.differentiator }}
run: dotnet run . --baasurl=${{ inputs.BaseUrl }} --baascluster=${{ needs.deploy-baas.outputs.clusterName }}-${{ matrix.differentiator }} --baasapikey=${{ secrets.AtlasPublicKey }} --baasprivateapikey=${{ secrets.AtlasPrivateKey }} --baasprojectid=${{ secrets.AtlasProjectId }} --baasdifferentiator=${{ matrix.differentiator }}
working-directory: Tools/DeployApps
3 changes: 3 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -301,13 +301,16 @@ jobs:
if: always()
name: Cleanup
needs:
- deploy-cluster
- test-net-framework
- test-code-coverage
- test-uwp-managed
- test-macos
- test-ios
- test-android
with:
differentiators: '["net-framework", "code-coverage", "uwp-managed", "xamarinmacos", "ios", "android", "maccatalyst"]'
clusterName: ${{ needs.deploy-cluster.outputs.clusterName }}
BaseUrl: https://realm-qa.mongodb.com
AtlasBaseUrl: https://cloud-qa.mongodb.com
secrets:
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,11 @@ jobs:
if: always()
name: Cleanup
needs:
- deploy-cluster
- test-code-coverage
with:
differentiators: '["code-coverage"]'
clusterName: ${{ needs.deploy-cluster.outputs.clusterName }}
BaseUrl: https://realm-qa.mongodb.com
AtlasBaseUrl: https://cloud-qa.mongodb.com
secrets:
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/test-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,15 @@ jobs:
name: Realm.${{ inputs.version }}
path: ${{ github.workspace }}/Realm/packages/
- uses: realm/ci-actions/mdb-realm/deploy@fa20eb972b9f018654fdb4e2c7afb52b0532f907
name: Deploy Cluster (alternative)
if: ${{ inputs.realmUrl }}
with:
projectId: ${{ secrets.AtlasProjectId}}
realmUrl: ${{ inputs.realmUrl }}
atlasUrl: ${{ inputs.atlasUrl}}
apiKey: ${{ secrets.AtlasPublicKey}}
privateApiKey: ${{ secrets.AtlasPrivateKey }}
clusterName: ${{ inputs.clusterName }}-android
clusterSize: M10
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@0b44c6745b7e81956596964100aadb92d667c497
Expand All @@ -85,7 +87,7 @@ jobs:
app-id: io.realm.xamarintests
project-arn: ${{ secrets.DEVICEFARM_PROJECT_ARN }}
device-pool-arn: ${{ secrets.DEVICEFARM_ANDROID_POOL_ARN }}
arguments: ' --baasurl=${{ inputs.realmUrl }} --baascluster=${{ inputs.clusterName }} --baasapikey=${{ secrets.AtlasPublicKey}} --baasprivateapikey=${{ secrets.AtlasPrivateKey}} --baasprojectid=${{ secrets.AtlasProjectId }} --baasdifferentiator=android'
arguments: ' --baasurl=${{ inputs.realmUrl }} --baascluster=${{ inputs.clusterName }}-android --baasapikey=${{ secrets.AtlasPublicKey}} --baasprivateapikey=${{ secrets.AtlasPrivateKey}} --baasprojectid=${{ secrets.AtlasProjectId }} --baasdifferentiator=android'
- name: Publish Unit Test Results
uses: LaPeste/test-reporter@510caf50a955b1003bec48a6494be4d6537f3a0b
if: always()
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/test-code-coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -140,13 +140,15 @@ jobs:
name: wrappers-windows-uwp-ARM64
path: wrappers/build
- uses: realm/ci-actions/mdb-realm/deploy@fa20eb972b9f018654fdb4e2c7afb52b0532f907
name: Deploy Cluster (alternative)
if: ${{ inputs.realmUrl }}
with:
projectId: ${{ secrets.AtlasProjectId}}
realmUrl: ${{ inputs.realmUrl }}
atlasUrl: ${{ inputs.atlasUrl}}
apiKey: ${{ secrets.AtlasPublicKey}}
privateApiKey: ${{ secrets.AtlasPrivateKey }}
clusterName: ${{ inputs.clusterName }}-code-coverage
clusterSize: M10
- name: Setup Coverlet & Report Generator
run: |
Expand All @@ -163,7 +165,7 @@ jobs:
env:
DOTNET_DbgEnableMiniDump: 1
DOTNET_EnableCrashReport: 1
run: ./tools/coverlet ${{ steps.dotnet-publish.outputs.executable-path }} -t ${{ steps.dotnet-publish.outputs.executable-path }}/Realm.Tests -a '--result=TestResults.Linux.xml --labels=After --baasurl=${{ inputs.realmUrl }} --baascluster=${{ inputs.clusterName }} --baasapikey=${{ secrets.AtlasPublicKey}} --baasprivateapikey=${{ secrets.AtlasPrivateKey}} --baasprojectid=${{ secrets.AtlasProjectId }} --baasdifferentiator=code-coverage' -f lcov -o ./report.lcov --exclude '[Realm.Tests]*' --exclude '[Realm.Fody]*' --exclude '[Realm.PlatformHelpers]*'
run: ./tools/coverlet ${{ steps.dotnet-publish.outputs.executable-path }} -t ${{ steps.dotnet-publish.outputs.executable-path }}/Realm.Tests -a '--result=TestResults.Linux.xml --labels=After --baasurl=${{ inputs.realmUrl }} --baascluster=${{ inputs.clusterName }}-code-coverage --baasapikey=${{ secrets.AtlasPublicKey}} --baasprivateapikey=${{ secrets.AtlasPrivateKey}} --baasprojectid=${{ secrets.AtlasProjectId }} --baasdifferentiator=code-coverage' -f lcov -o ./report.lcov --exclude '[Realm.Tests]*' --exclude '[Realm.Fody]*' --exclude '[Realm.PlatformHelpers]*'
- name: Archive core dump
uses: actions/upload-artifact@v3
if: failure()
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/test-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,15 @@ jobs:
name: Realm.${{ inputs.version }}
path: ${{ github.workspace }}/Realm/packages/
- uses: realm/ci-actions/mdb-realm/deploy@fa20eb972b9f018654fdb4e2c7afb52b0532f907
name: Deploy Cluster (alternative)
if: ${{ inputs.realmUrl }}
with:
projectId: ${{ secrets.AtlasProjectId}}
realmUrl: ${{ inputs.realmUrl }}
atlasUrl: ${{ inputs.atlasUrl}}
apiKey: ${{ secrets.AtlasPublicKey}}
privateApiKey: ${{ secrets.AtlasPrivateKey }}
clusterName: ${{ inputs.clusterName }}-ios
clusterSize: M10
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@0b44c6745b7e81956596964100aadb92d667c497
Expand All @@ -69,7 +71,7 @@ jobs:
appPath: Tests/Tests.iOS/bin/iPhoneSimulator/Release/Tests.iOS.app
bundleId: io.realm.dotnettests
iphoneToSimulate: iPhone-8
arguments: --headless --result=${{ github.workspace }}/TestResults.iOS.xml --baasurl=${{ inputs.realmUrl }} --baascluster=${{ inputs.clusterName }} --baasapikey=${{ secrets.AtlasPublicKey}} --baasprivateapikey=${{ secrets.AtlasPrivateKey}} --baasprojectid=${{ secrets.AtlasProjectId }} --baasdifferentiator=ios
arguments: --headless --result=${{ github.workspace }}/TestResults.iOS.xml --baasurl=${{ inputs.realmUrl }} --baascluster=${{ inputs.clusterName }}-ios --baasapikey=${{ secrets.AtlasPublicKey}} --baasprivateapikey=${{ secrets.AtlasPrivateKey}} --baasprojectid=${{ secrets.AtlasProjectId }} --baasdifferentiator=ios
- name: Publish Unit Test Results
uses: LaPeste/test-reporter@510caf50a955b1003bec48a6494be4d6537f3a0b
if: always()
Expand Down
Loading

0 comments on commit 943e6d9

Please sign in to comment.