Hello GitHub

This commit is contained in:
Howard Wolosky
2019-01-28 16:24:37 -08:00
parent 456fe5e355
commit c13b8a099e
822 changed files with 276650 additions and 75 deletions

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<Modules>
<Module
name="Microsoft.Windows.Apps.Calculator"
tdbuildteamid="86">
<File
location="Calculator"
path="%TFS_SOURCESDIRECTORY%\src\Calculator\Resources\en-US\Resources.resw" />
<File
location="Calculator"
path="%TFS_SOURCESDIRECTORY%\src\Calculator\Resources\en-US\CEngineStrings.resw" />
</Module>
</Modules>

View File

@@ -0,0 +1,5 @@
<SignConfigXML>
<job platform="" configuration="" certSubject="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" jobname="EngFunSimpleSign" approvers="gstolt;vigarg">
<file src="__INPATHROOT__\Microsoft.WindowsCalculator_8wekyb3d8bbwe.appxbundle" signType="136020001" dest="__OUTPATHROOT__\Microsoft.WindowsCalculator_8wekyb3d8bbwe.appxbundle" />
</job>
</SignConfigXML>

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<TReXRunConfigurations>
<TReXRunConfiguration>
<BuildLogName>RS_APPS_VALIDATE AMD64 Desktop WinPerf Test Run</BuildLogName>
<TemplateId>134858</TemplateId>
<Owner>paxeedev</Owner>
<PrivateRun>true</PrivateRun>
<CopyFirstJobSettingWithJobOverride>true</CopyFirstJobSettingWithJobOverride>
<RelativeFilePath>Performance_AMD64.testlist</RelativeFilePath>
<!-- Needed to be able to process multiple results for the same test case but not have reliability run checked on the task -->
<OptionalMetadataItems>
<OptionalMetadataItem>
<Key>VSTS\IsReliabilityRun</Key>
<Value>True</Value>
</OptionalMetadataItem>
</OptionalMetadataItems>
<WorkflowParameters>
<WorkflowParameter>
<Key>AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
<WorkflowParameter>
<Key>_AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
</WorkflowParameters>
</TReXRunConfiguration>
</TReXRunConfigurations>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<TReXRunConfigurations>
<TReXRunConfiguration>
<BuildLogName>RS4_RELEASE AMD64 DesktopVM Test Run</BuildLogName>
<TemplateId>139642</TemplateId>
<Owner>paxeedev</Owner>
<PrivateRun>true</PrivateRun>
<CopyFirstJobSettingWithJobOverride>true</CopyFirstJobSettingWithJobOverride>
<RelativeFilePath>Desktop_AMD64.testlist</RelativeFilePath>
<Branch>rs4_release</Branch>
<WorkflowParameters>
<WorkflowParameter>
<Key>AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
<WorkflowParameter>
<Key>_AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
</WorkflowParameters>
</TReXRunConfiguration>
</TReXRunConfigurations>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<TReXRunConfigurations>
<!-- RS5_RELEASE Desktop x64 VM run -->
<TReXRunConfiguration>
<BuildLogName>RS5_RELEASE AMD64 DesktopVM Test Run</BuildLogName>
<TemplateId>139642</TemplateId>
<Owner>paxeedev</Owner>
<PrivateRun>true</PrivateRun>
<CopyFirstJobSettingWithJobOverride>true</CopyFirstJobSettingWithJobOverride>
<RelativeFilePath>Desktop_AMD64.testlist</RelativeFilePath>
<Branch>rs5_release</Branch>
<WorkflowParameters>
<WorkflowParameter>
<Key>AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
<WorkflowParameter>
<Key>_AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
</WorkflowParameters>
</TReXRunConfiguration>
</TReXRunConfigurations>

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<TReXRunConfigurations>
<TReXRunConfiguration>
<BuildLogName>RS_APPS_VALIDATE AMD64 DesktopVM Test Run</BuildLogName>
<TemplateId>139642</TemplateId>
<Owner>paxeedev</Owner>
<PrivateRun>true</PrivateRun>
<CopyFirstJobSettingWithJobOverride>true</CopyFirstJobSettingWithJobOverride>
<RelativeFilePath>Desktop_AMD64.testlist</RelativeFilePath>
<Branch>rs_apps_validate</Branch>
<WorkflowParameters>
<WorkflowParameter>
<Key>AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
<WorkflowParameter>
<Key>_AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
</WorkflowParameters>
</TReXRunConfiguration>
<TReXRunConfiguration>
<BuildLogName>RS_APPS_VALIDATE AMD64 WCOS Test Run</BuildLogName>
<TemplateId>153648</TemplateId>
<Owner>paxeedev</Owner>
<PrivateRun>true</PrivateRun>
<CopyFirstJobSettingWithJobOverride>true</CopyFirstJobSettingWithJobOverride>
<RelativeFilePath>WCOS_AMD64.testlist</RelativeFilePath>
<Branch>rs_apps_validate</Branch>
<WorkflowParameters>
<WorkflowParameter>
<Key>AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
<WorkflowParameter>
<Key>_AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
</WorkflowParameters>
</TReXRunConfiguration>
</TReXRunConfigurations>

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<TReXRunConfigurations>
<!--RS_PRERELEASE ARM WinCoreOS WinPerf run. -->
<TReXRunConfiguration>
<BuildLogName>RS_PRERELEASE ARM WindowsCore WinPerf Test Run</BuildLogName>
<TemplateId>135258</TemplateId>
<Owner>paxeedev</Owner>
<PrivateRun>true</PrivateRun>
<CopyFirstJobSettingWithJobOverride>true</CopyFirstJobSettingWithJobOverride>
<RelativeFilePath>Performance_ARM.testlist</RelativeFilePath>
<!-- Needed to be able to process multiple results for the same test case but not have reliability run checked on the task -->
<OptionalMetadataItems>
<OptionalMetadataItem>
<Key>VSTS\IsReliabilityRun</Key>
<Value>True</Value>
</OptionalMetadataItem>
</OptionalMetadataItems>
<WorkflowParameters>
<WorkflowParameter>
<Key>AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
<WorkflowParameter>
<Key>_AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
</WorkflowParameters>
</TReXRunConfiguration>
</TReXRunConfigurations>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<TReXRunConfigurations>
<!-- RS_APPS_VALIDATE WindowsCore ARM Device run -->
<!-- Disabling this until we have a testlist template -->
<!--<TReXRunConfiguration>
<BuildLogName>RS_APPS_VALIDATE ARM WCOS Test Run</BuildLogName>
<TemplateId>140487</TemplateId>
<Owner>paxeedev</Owner>
<PrivateRun>true</PrivateRun>
<CopyFirstJobSettingWithJobOverride>true</CopyFirstJobSettingWithJobOverride>
<RelativeFilePath>Desktop_ARM.testlist</RelativeFilePath>
<Branch>rs_apps_validate</Branch>
<WorkflowParameters>
<WorkflowParameter>
<Key>AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
<WorkflowParameter>
<Key>_AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
</WorkflowParameters>
</TReXRunConfiguration>-->
</TReXRunConfigurations>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<TReXRunConfigurations>
<!-- RS_APPS_VALIDATE Desktop x86 VM run -->
<TReXRunConfiguration>
<BuildLogName>RS_APPS_VALIDATE x86 DesktopVM Test Run</BuildLogName>
<TemplateId>139643</TemplateId>
<Owner>paxeedev</Owner>
<PrivateRun>true</PrivateRun>
<CopyFirstJobSettingWithJobOverride>true</CopyFirstJobSettingWithJobOverride>
<RelativeFilePath>Desktop_x86.testlist</RelativeFilePath>
<Branch>rs4_release</Branch>
<WorkflowParameters>
<WorkflowParameter>
<Key>AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
<WorkflowParameter>
<Key>_AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
</WorkflowParameters>
</TReXRunConfiguration>
</TReXRunConfigurations>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<TReXRunConfigurations>
<!-- RS_PRERELEASE Desktop x86 VM run -->
<TReXRunConfiguration>
<BuildLogName>RS_APPS_VALIDATE x86 DesktopVM Test Run</BuildLogName>
<TemplateId>139643</TemplateId>
<Owner>paxeedev</Owner>
<PrivateRun>true</PrivateRun>
<CopyFirstJobSettingWithJobOverride>true</CopyFirstJobSettingWithJobOverride>
<RelativeFilePath>Desktop_x86.testlist</RelativeFilePath>
<Branch>rs5_release</Branch>
<WorkflowParameters>
<WorkflowParameter>
<Key>AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
<WorkflowParameter>
<Key>_AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
</WorkflowParameters>
</TReXRunConfiguration>
</TReXRunConfigurations>

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<TReXRunConfigurations>
<!-- RS_APPS_VALIDATE Desktop x86 VM run -->
<TReXRunConfiguration>
<BuildLogName>RS_APPS_VALIDATE x86 DesktopVM Test Run</BuildLogName>
<TemplateId>139643</TemplateId>
<Owner>paxeedev</Owner>
<PrivateRun>true</PrivateRun>
<CopyFirstJobSettingWithJobOverride>true</CopyFirstJobSettingWithJobOverride>
<RelativeFilePath>Desktop_x86.testlist</RelativeFilePath>
<Branch>rs_apps_validate</Branch>
<WorkflowParameters>
<WorkflowParameter>
<Key>AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
<WorkflowParameter>
<Key>_AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
</WorkflowParameters>
</TReXRunConfiguration>
<!-- RS_APPS_VALIDATE WindowsCore x86 VM run -->
<TReXRunConfiguration>
<BuildLogName>RS_PRERELEASE x86 WindowsCoreVM Test Run</BuildLogName>
<TemplateId>153715</TemplateId>
<Owner>paxeedev</Owner>
<PrivateRun>true</PrivateRun>
<CopyFirstJobSettingWithJobOverride>true</CopyFirstJobSettingWithJobOverride>
<RelativeFilePath>WCOS_x86.testlist</RelativeFilePath>
<Branch>rs_apps_validate</Branch>
<WorkflowParameters>
<WorkflowParameter>
<Key>AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
<WorkflowParameter>
<Key>_AlternatePackageRoot</Key>
<Value>\\pkges\release\TAEF\validation.taef.provenance\1812.20007-develop\UniversalTestPackages;\\edge-svcs\Release\MITALite\Apps_eng.mitalite_ci\Latest.tst</Value>
</WorkflowParameter>
</WorkflowParameters>
</TReXRunConfiguration>
</TReXRunConfigurations>

View File

@@ -0,0 +1,12 @@
{
"$schema": "http://universaltest/schema/testlist-2.json",
"TestMDs": [
{
"FilePath": "Calculator.UITests\\Prebuilt\\Test\\arm\\fre\\Calculator.UITests.testmd",
"ExecutionProfile": "All"
},
{
"FilePath": "CalculatorUnitTests\\Prebuilt\\Test\\arm\\fre\\CalculatorUnitTests.testmd",
}
]
}

View File

@@ -0,0 +1,9 @@
{
"$schema": "http://universaltest/schema/testlist-2.json",
"TestMDs": [
{
"FilePath": "Calculator.UITests\\Prebuilt\\Test\\arm\\fre\\Calculator.UITests.testmd",
"ExecutionProfile": "Performance"
}
]
}

View File

@@ -0,0 +1,12 @@
{
"$schema": "http://universaltest/schema/testlist-2.json",
"TestMDs": [
{
"FilePath": "Calculator.UITests\\Prebuilt\\Test\\arm\\fre\\Calculator.UITests.testmd",
"ExecutionProfile": "All"
},
{
"FilePath": "CalculatorUnitTests\\Prebuilt\\Test\\arm\\fre\\CalculatorUnitTests.testmd",
}
]
}

View File

@@ -0,0 +1,12 @@
{
"$schema": "http://universaltest/schema/testlist-2.json",
"TestMDs": [
{
"FilePath": "Calculator.UITests\\Prebuilt\\Test\\arm64\\fre\\Calculator.UITests.testmd",
"ExecutionProfile": "All"
},
{
"FilePath": "CalculatorUnitTests\\Prebuilt\\Test\\arm64\\fre\\CalculatorUnitTests.testmd",
}
]
}

View File

@@ -0,0 +1,12 @@
{
"$schema": "http://universaltest/schema/testlist-2.json",
"TestMDs": [
{
"FilePath": "Calculator.UITests\\Prebuilt\\Test\\arm64\\fre\\Calculator.UITests.testmd",
"ExecutionProfile": "All"
},
{
"FilePath": "CalculatorUnitTests\\Prebuilt\\Test\\arm64\\fre\\CalculatorUnitTests.testmd",
}
]
}

View File

@@ -0,0 +1,28 @@
{
"Branch": [
{
"collection":"microsoft",
"project":"OS",
"repo":"os",
"name":"official/rs_apps_utils",
"CheckinFiles": [
{
"source":"vpack/app/calculator.app.man",
"path": "/redist/mspartners/ipa/Calculator",
"type": "File"
},
{
"source":"vpack/app/calculator.app.man",
"path": "/onecoreuap/redist/mspartners/ipa/Calculator",
"type": "File"
}
]
}
],
"Email": [
{
"sendTo":"paxeedev",
"sendOnErrorOnly": "True"
}
]
}

View File

@@ -0,0 +1,28 @@
{
"Branch": [
{
"collection":"microsoft",
"project":"OS",
"repo":"os",
"name":"official/rs_apps_validate",
"CheckinFiles": [
{
"source":"vpack/app/calculator.app.man",
"path": "/redist/mspartners/ipa/Calculator",
"type": "File"
},
{
"source":"vpack/app/calculator.app.man",
"path": "/onecoreuap/redist/mspartners/ipa/Calculator",
"type": "File"
}
]
}
],
"Email": [
{
"sendTo":"paxeedev",
"sendOnErrorOnly": "True"
}
]
}

View File

@@ -0,0 +1,44 @@
#
# Continuous Integration (CI)
# This pipeline builds and validate the app in all supported configurations. If the build was
# queued to validate a pull request, we build and test only x64.
#
trigger:
- master
- servicing/*
pr:
- master
- servicing/*
name: 0.$(Date:yyMM).$(Date:dd)$(Rev:rr).0
jobs:
- template: ./templates/build-app-public.yaml
parameters:
platform: x64
- template: ./templates/build-app-public.yaml
parameters:
platform: x86
condition: not(eq(variables['Build.Reason'], 'PullRequest'))
- template: ./templates/build-app-public.yaml
parameters:
platform: ARM
condition: not(eq(variables['Build.Reason'], 'PullRequest'))
- template: ./templates/build-app-public.yaml
parameters:
platform: ARM64
condition: not(eq(variables['Build.Reason'], 'PullRequest'))
- template: ./templates/run-unit-tests.yaml
parameters:
platform: x64
- template: ./templates/run-unit-tests.yaml
parameters:
platform: x86
- template: ./templates/package-appxbundle.yaml

View File

@@ -0,0 +1,44 @@
#
# Localization
# This pipeline uploads English strings files to the localization service, downloads any translated
# files which are available, and checks them in to git. This pipeline relies on Microsoft-internal
# resources to run.
#
# Expects a variable called LocServiceKey to contain the OAuth client secret for Touchdown.
trigger: none
pr: none
name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr)
jobs:
- job: Localize
pool:
name: Package ES Custom Demands Lab A
demands:
- ClientAlias -equals PKGESUTILAPPS
workspace:
clean: outputs
steps:
- checkout: self
clean: true
- task: PkgESSetupBuild@10
displayName: Initialize Package ES
inputs:
productName: Calculator
branchVersion: true
- task: PkgESTouchdownLocService@10
displayName: Package ES Touchdown Loc Service
inputs:
IsCallToServiceStepSelected: true
IsCheckedInFileSelected: true
CheckinFilesAtOriginFilePath: true
GitLocPath: Loc/Resources
LocConfigFile: build/config/LocConfigPackageEs.xml
AuthenticationMode: OAuth
ClientApplicationID: d3dd8113-65b3-4526-bdca-a00a7d1c37ba
ApplicationKeyID: $(LocServiceKey)
SendToLoc: true

View File

@@ -0,0 +1,48 @@
#
# Release
# This pipeline builds a version of the app in a production configuration to be released to the
# Store and the Windows image. This pipeline relies on Microsoft-internal resources to run.
#
trigger: none
pr: none
variables:
versionMajor: 10
versionMinor: 1901
versionBuild: $[counter('10.1901.*', 500)]
versionPatch: 0
name: '$(versionMajor).$(versionMinor).$(versionBuild).$(versionPatch)'
jobs:
- template: ./templates/build-app-internal.yaml
parameters:
platform: x64
- template: ./templates/build-app-internal.yaml
parameters:
platform: x86
condition: not(eq(variables['Build.Reason'], 'PullRequest'))
- template: ./templates/build-app-internal.yaml
parameters:
platform: ARM
condition: not(eq(variables['Build.Reason'], 'PullRequest'))
- template: ./templates/build-app-internal.yaml
parameters:
platform: ARM64
condition: not(eq(variables['Build.Reason'], 'PullRequest'))
- template: ./templates/run-unit-tests.yaml
parameters:
platform: x64
- template: ./templates/run-unit-tests.yaml
parameters:
platform: x86
- template: ./templates/package-appxbundle.yaml
- template: ./templates/prepare-release-internalonly.yaml

View File

@@ -0,0 +1,62 @@
# This template contains a job to build the app for a single architecture and run static analysis
# tools on the binaries.
# The app is built in a production configuration to be released to the Store and the Windows image.
# This job relies on Microsoft-internal resources to run.
parameters:
platform: ''
condition: ''
jobs:
- job: Build${{ parameters.platform }}
displayName: Build ${{ parameters.platform }}
condition: ${{ parameters.condition }}
pool:
name: Package ES Custom Demands Lab A
demands:
- msbuild
- visualstudio
- ClientAlias -equals PKGESUTILAPPS
variables:
BuildConfiguration: Release
BuildPlatform: ${{ parameters.platform }}
workspace:
clean: outputs
steps:
- checkout: self
clean: true
- task: UniversalPackages@0
displayName: Download internals package
inputs:
command: download
downloadDirectory: $(Build.SourcesDirectory)
vstsFeed: WindowsApps
vstsFeedPackage: calculator-internals
vstsPackageVersion: 0.0.7
- template: ./build-single-architecture.yaml
parameters:
extraMsBuildArgs: '/p:IsStoreBuild=true'
- task: securedevelopmentteam.vss-secure-development-tools.build-task-binskim.BinSkim@3
displayName: Run BinSkim
inputs:
inputType: Basic
analyzeTarget: $(Build.BinariesDirectory)\$(BuildConfiguration)\$(BuildPlatform)\Calculator\*
analyzeVerbose: true
analyzeHashes: true
continueOnError: true
- task: securedevelopmentteam.vss-secure-development-tools.build-task-policheck.PoliCheck@1
displayName: Run PoliCheck
inputs:
targetType: F
- task: securedevelopmentteam.vss-secure-development-tools.build-task-publishsecurityanalysislogs.PublishSecurityAnalysisLogs@2
displayName: Publish security analysis logs
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
displayName: Detect open source components
inputs:
sourceScanPath: $(Agent.BuildDirectory)

View File

@@ -0,0 +1,27 @@
# This template contains a job to build the app for a single architecture.
# Only the contents of the public repository are built; internal resources are not used.
parameters:
platform: ''
condition: ''
jobs:
- job: Build${{ parameters.platform }}
displayName: Build ${{ parameters.platform }}
condition: ${{ parameters.condition }}
pool:
name: Package ES Custom Demands Lab A
demands:
- msbuild
- visualstudio
- ClientAlias -equals PKGESUTILAPPS
variables:
BuildConfiguration: Release
BuildPlatform: ${{ parameters.platform }}
workspace:
clean: outputs
steps:
- checkout: self
clean: true
- template: ./build-single-architecture.yaml

View File

@@ -0,0 +1,53 @@
# This template contains steps to build the app for a single architecture.
# The job containing these steps must set the variables 'BuildConfiguration' and 'BuildPlatform'.
parameters:
extraMsBuildArgs: ''
steps:
- task: NuGetToolInstaller@0
displayName: Use NuGet 4.7.1
inputs:
versionSpec: 4.7.1
checkLatest: true
# In most accounts, you can just use 'NuGetCommand' instead of this GUID.
# In the microsoft.visualstudio.com account, NuGetCommand is ambiguous so the GUID is needed.
- task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2
displayName: NuGet restore src/Calculator.sln
inputs:
command: custom
arguments: restore src/Calculator.sln -Verbosity Detailed -NonInteractive
- task: PowerShell@2
displayName: Set version number in AppxManifest
inputs:
filePath: $(Build.SourcesDirectory)\build\scripts\UpdateAppxManifestVersion.ps1
arguments: '-AppxManifest $(Build.SourcesDirectory)\src\Calculator\Package.appxmanifest -Version $(Build.BuildNumber)'
- task: VSBuild@1
displayName: 'Build solution src/Calculator.sln'
inputs:
solution: src/Calculator.sln
vsVersion: 15.0
msbuildArgs: /bl:$(Build.BinariesDirectory)\$(BuildConfiguration)\$(BuildPlatform)\Calculator.binlog /p:OutDir=$(Build.BinariesDirectory)\$(BuildConfiguration)\$(BuildPlatform)\ /p:GenerateProjectSpecificOutputFolder=true /p:AppVersion=$(Build.BuildNumber) ${{ parameters.extraMsBuildArgs }}
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
clean: true
maximumCpuCount: true
- task: PublishBuildArtifacts@1
displayName: Publish drop artifact
inputs:
artifactName: drop
pathToPublish: $(Build.BinariesDirectory)
parallel: true
- task: PublishSymbols@2
displayName: Publish symbols
inputs:
symbolsFolder: $(Build.BinariesDirectory)\$(BuildConfiguration)\$(BuildPlatform)
searchPattern: '**/*.pdb'
symbolServerType: teamServices
treatNotIndexedAsWarning: true
symbolsArtifactName: $(System.teamProject)/$(Build.BuildNumber)_$(BuildPlatform)$(BuildConfiguration)

View File

@@ -0,0 +1,61 @@
# This template contains a job which takes .appx packages which were built separately for each
# architecture (arm, x86, etc.) and combines them into a single .appxbundle.
jobs:
- job: Package
dependsOn:
- Buildx64
- Buildx86
- BuildARM
- BuildARM64
condition: |
and
(
in(dependencies.Buildx64.result, 'Succeeded', 'SucceededWithIssues', 'Skipped'),
in(dependencies.Buildx86.result, 'Succeeded', 'SucceededWithIssues', 'Skipped'),
in(dependencies.BuildARM.result, 'Succeeded', 'SucceededWithIssues', 'Skipped'),
in(dependencies.BuildARM64.result, 'Succeeded', 'SucceededWithIssues', 'Skipped')
)
pool:
name: Package ES Custom Demands Lab A
demands:
- msbuild
- visualstudio
- ClientAlias -equals PKGESUTILAPPS
workspace:
clean: outputs
steps:
- checkout: self
clean: true
- task: DownloadBuildArtifacts@0
displayName: Download all .appx artifacts
inputs:
artifactName: drop
itemPattern: '**/*.appx'
- task: PowerShell@2
displayName: Generate AppxBundle mapping
inputs:
filePath: $(Build.SourcesDirectory)\build\scripts\CreateAppxBundleMapping.ps1
arguments: '-InputPath $(Build.ArtifactStagingDirectory)\drop\Release -ProjectName Calculator -OutputFile $(Build.BinariesDirectory)\AppxBundleMapping.txt'
- script: '"C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\MakeAppx.exe" bundle /v /bv %BUNDLEVERSION% /f %MAPPINGFILEPATH% /p %OUTPUTPATH%'
displayName: Make AppxBundle
env:
BUNDLEVERSION: $(Build.BuildNumber)
MAPPINGFILEPATH: $(Build.BinariesDirectory)\AppxBundleMapping.txt
OUTPUTPATH: $(Build.BinariesDirectory)\Microsoft.WindowsCalculator_8wekyb3d8bbwe.appxbundle
- task: CopyFiles@2
displayName: Copy AppxBundle to staging directory
inputs:
sourceFolder: $(Build.BinariesDirectory)
contents: Microsoft.WindowsCalculator_8wekyb3d8bbwe.appxbundle
targetFolder: $(Build.ArtifactStagingDirectory)\appxBundle
- task: PublishBuildArtifacts@1
displayName: Publish AppxBundle artifact
inputs:
artifactName: appxBundle
pathToPublish: $(Build.ArtifactStagingDirectory)\appxBundle

View File

@@ -0,0 +1,111 @@
# This template contains a job which builds artifacts needed to release the app to the store and to
# Windows using Microsoft-internal systems. It relies Microsoft-internal resources and will not
# work outside of Microsoft.
# Specifically, this job:
# - Signs the bundle using a secure system. If you want to build your own, use SignTool following
# the example in the continuous integration pipeline.
# - Builds VPacks for including the app in the Windows OS build. Azure DevOps Universal Packages
# offers similar capabilities.
# - Creates StoreBroker packages containing Microsoft Store assets. Although the Store assets for
# this app are not open source, the StoreBroker tool is available at
# https://github.com/Microsoft/StoreBroker.
jobs:
- job: WindowsInternalRelease
dependsOn: Package
pool:
name: Package ES Custom Demands Lab A
demands:
- ClientAlias -equals PKGESUTILAPPS
workspace:
clean: outputs
steps:
- checkout: self
clean: true
# This must be the first task in the job definition, since it modifies the build environment
# in ways other tasks would not expect (for example, it clears the artifacts directory).
- task: PkgESSetupBuild@10
displayName: Initialize Package ES
inputs:
productName: Calculator
disableWorkspace: true
env:
XES_DISABLEPROV: true
- task: DownloadBuildArtifacts@0
displayName: Download appxBundle artifact
inputs:
artifactName: appxBundle
- task: PkgESCodeSign@10
displayName: Send bundle to Package ES code signing service
inputs:
signConfigXml: build\config\SignConfig.xml
inPathRoot: $(Build.ArtifactStagingDirectory)\appxBundle
outPathRoot: $(Build.ArtifactStagingDirectory)\appxBundleSigned
- task: PublishBuildArtifacts@1
displayName: Publish AppxBundleSigned artifact
inputs:
pathtoPublish: $(Build.ArtifactStagingDirectory)\appxBundleSigned
artifactName: AppxBundleSigned
- task: CopyFiles@2
displayName: Copy signed AppxBundle to vpack staging folder
inputs:
sourceFolder: $(Build.ArtifactStagingDirectory)\appxBundleSigned
targetFolder: $(Build.ArtifactStagingDirectory)\vpack\appxBundle
- task: PkgESVPack@10
displayName: Create and push vpack for app
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
inputs:
sourceDirectory: $(Build.ArtifactStagingDirectory)\vpack\appxBundle
description: VPack for the Calculator Application
pushPkgName: calculator.app
version: $(versionMajor).$(versionMinor).$(versionBuild)
owner: paxeeapps
- task: PublishBuildArtifacts@1
displayName: Publish vpack\app artifact with vpack manifest
inputs:
pathtoPublish: $(XES_VPACKMANIFESTDIRECTORY)\$(XES_VPACKMANIFESTNAME)
artifactName: vpack\app
# TODO (macool): create and push internal test packages and test config
- task: UniversalPackages@0
displayName: Download internals package
inputs:
command: download
downloadDirectory: $(Build.SourcesDirectory)
vstsFeed: WindowsApps
vstsFeedPackage: calculator-internals
vstsPackageVersion: 0.0.7
- task: PkgESStoreBrokerPackage@10
displayName: Create StoreBroker Packages
env:
XES_SERIALPOSTBUILDREADY: True
inputs:
addToFlight: false
configPath: tools/Build/StoreBroker/SBCalculatorConfig.json
PDPRootPath: $(Build.SourcesDirectory)\PDP
imagesRootPath: $(Build.SourcesDirectory)\PDPMediaRoot
appxPath: $(Build.ArtifactStagingDirectory)\appxBundleSigned\Microsoft.WindowsCalculator_8wekyb3d8bbwe.appxbundle
useArtifactServiceForMedia: true
outPath: $(Build.ArtifactStagingDirectory)\StoreBrokerPayload
paToken: $(System.AccessToken)
- task: PublishBuildArtifacts@1
displayName: Publish StoreBrokerPayload artifact
inputs:
artifactName: storeBrokerPayload
pathToPublish: $(Build.ArtifactStagingDirectory)/StoreBrokerPayload
- task: PkgESLateTasks@10
displayName: Run PackageES LateTasks
env:
XES_DISABLEPROV: true

View File

@@ -0,0 +1,54 @@
# This template contains jobs to run unit tests on the interactive test agents.
parameters:
platform: ''
jobs:
- job: UnitTests${{ parameters.platform }}
displayName: UnitTests ${{ parameters.platform }}
dependsOn: Build${{ parameters.platform }}
pool:
name: Essential Experiences Interactive
workspace:
clean: outputs
steps:
- checkout: none
- powershell: Write-Host "##vso[task.setvariable variable=agentInstanceId;isOutput=true]$($env:AgentName -replace '\D+' -as [int])"
name: LogAgentStep
displayName: Log this agent's instance for later cleanup
env:
AgentName: $(Agent.Name)
- task: DownloadBuildArtifacts@0
displayName: Download CalculatorUnitTests
inputs:
artifactName: drop
itemPattern: drop/Release/${{ parameters.platform }}/CalculatorUnitTests_VS/AppPackages/CalculatorUnitTests_Test/**
- task: PowerShell@2
displayName: Install Certificate
inputs:
filePath: $(Build.ArtifactStagingDirectory)\drop\Release\${{ parameters.platform }}\CalculatorUnitTests_VS\AppPackages\CalculatorUnitTests_Test\Add-AppDevPackage.ps1
arguments: -CertificatePath $(Build.ArtifactStagingDirectory)\drop\Release\${{ parameters.platform }}\CalculatorUnitTests_VS\AppPackages\CalculatorUnitTests_Test\CalculatorUnitTests.cer -Force
- task: VSTest@2
displayName: Run CalculatorUnitTests
inputs:
testAssemblyVer2: $(Build.ArtifactStagingDirectory)\drop\Release\${{ parameters.platform }}\CalculatorUnitTests_VS\AppPackages\CalculatorUnitTests_Test\CalculatorUnitTests.appx
otherConsoleOptions: /Platform:${{ parameters.platform }}
- job: CleanUpUnitTests${{ parameters.platform }}
dependsOn: UnitTests${{ parameters.platform }}
condition: and(always(), ne(dependencies.UnitTests${{ parameters.platform }}.Outputs['LogAgentStep.agentInstanceId'], ''))
pool: server
variables:
agentInstanceId: $[ dependencies.UnitTests${{ parameters.platform }}.outputs['LogAgentStep.agentInstanceId'] ]
steps:
- task: InvokeRESTAPI@1
displayName: Reimage test machine
inputs:
connectionType: connectedServiceNameARM
azureServiceConnection: macool-sandbox-interactiveDesktopRS5
urlSuffix: subscriptions/012a8008-c00f-45b3-9828-41ebba30141d/resourceGroups/interactiveDesktopRS5/providers/Microsoft.Compute/virtualMachineScaleSets/essential/reimage?api-version=2018-10-01
body: '{ "instanceIds": ["$(agentInstanceId)"] }'

View File

@@ -0,0 +1,98 @@
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
<#
.SYNOPSIS
Generates a mapping file to be used with the MakeAppx tool. It generates the file based on
a folder structure grouped by architecture then by project, like this example:
drop\
ARM\
Project\
AppPackages\
Project_ARM.appx
Project_scale-100.appx
x64\
Project\
AppPackages\
Project_x64.appx
Project_scale-100.appx
.PARAMETER InputPath
The path where appx packages to bundle are located.
.PARAMETER ProjectName
The folder name within each architecture to search recursively for appx packages. The appx files
must also have the ProjectName in their file names.
.PARAMETER OutputFile
The path to write the generated mapping file.
.EXAMPLE
Create-AppxBundleMapping -InputPath "C:\drop" -ProjectName "CalculatorApp" -OutputFile "C:\Temp\AppxBundleMapping.txt"
#>
param(
[Parameter(Mandatory)]
[string]
$InputPath,
[Parameter(Mandatory)]
[string]
$ProjectName,
[Parameter(Mandatory)]
[string]
$OutputFile
)
# List all appx packages by architecture
$architectures = @(Get-ChildItem -Path $InputPath -Directory | Foreach-Object Name | Foreach-Object ToLower)
if ($architectures.Count -lt 1)
{
throw "No architecture-specific folders found in $InputPath"
}
$defaultArchitecture = $architectures[0]
$packages = @{}
foreach ($architecture in $architectures)
{
$projectPath = [IO.Path]::Combine($InputPath, $architecture, $ProjectName)
$packages[$architecture] = Get-ChildItem -Path $projectPath -Recurse -Filter *$ProjectName*.appx
if ($packages[$architecture].Count -lt 1)
{
throw "No .appx files found for architecture $architecture in $projectPath"
}
}
# List appx packages which are common to all architectures
$commonPackages = $packages[$defaultArchitecture]
foreach ($architecture in $architectures)
{
$commonPackages = $packages[$architecture] | Where {$commonPackages.Name -Contains $_.Name}
}
# List appx packages which are architecture-specific and verify that there is exactly one per
# architecture.
$architectureSpecificPackages = @()
if ($architectures.Count -gt 1)
{
foreach ($architecture in $architectures)
{
$uniquePackages = $packages[$architecture] | Where {$commonPackages.Name -NotContains $_.Name}
if ($uniquePackages.Count -ne 1)
{
throw "Found multiple architecture-specific packages for architecture $($architecture): $($uniquePackages.Name)"
}
$architectureSpecificPackages += $uniquePackages[0]
}
}
# Write the mapping file
Set-Content $OutputFile "[Files]"
foreach ($package in ($architectureSpecificPackages + $commonPackages))
{
$mapping = "`"$($package.FullName)`" `"$($package.Name)`""
Write-Host $mapping
Add-Content $OutputFile $mapping
}

View File

@@ -0,0 +1,31 @@
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
<#
.SYNOPSIS
Updates the version number in an AppxManifest file.
.PARAMETER AppxManifest
The path to the AppxManifest file.
.PARAMETER Version
The version number to write into the file.
.EXAMPLE
Update-AppxManifestVersion -AppxManifest "C:\App\Package.appxmanifest" -Version "3.2.1.0"
#>
param(
[ValidateScript({Test-Path $_ -PathType 'Leaf'})]
[Parameter(Mandatory)]
[string]
$AppxManifest,
[ValidateScript({[version]$_})]
[Parameter(Mandatory)]
[string]
$Version
)
$xmlDoc = [XML](Get-Content $AppxManifest)
$xmlDoc.Package.Identity.setAttribute("Version", $Version);
$xmlDoc.Save($AppxManifest)