mirror of
https://github.com/PowerShell/PSDesiredStateConfiguration
synced 2026-06-21 13:45:25 +00:00
Compare commits
22 Commits
CI-Updates
...
v2
| Author | SHA1 | Date | |
|---|---|---|---|
| 5c7da019ff | |||
| f665242c1b | |||
| 8d7e4303d3 | |||
| 820ac1a06e | |||
| 79d47ceed9 | |||
| 727085ecaa | |||
| a935614790 | |||
| 7c063aed9d | |||
| b83ba2ccc0 | |||
| 316773dfe6 | |||
| 11b3bd0fdb | |||
| 4af8841d74 | |||
| ad361bfe4b | |||
| 08b5f4de0e | |||
| f142525bc7 | |||
| a9182cf60e | |||
| 68cfed18c9 | |||
| 3ae4b6afda | |||
| 4777a3ed77 | |||
| 85eeda51a6 | |||
| 70dad1f41e | |||
| 1cb7076792 |
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"instanceUrl": "https://msazure.visualstudio.com",
|
||||
"projectName": "One",
|
||||
"areaPath": "One\\MGMT\\Compute\\Powershell\\Powershell\\PowerShell Core",
|
||||
"notificationAliases": [
|
||||
"andschwa@microsoft.com",
|
||||
"slee@microsoft.com"
|
||||
],
|
||||
"codebaseName": "PSDSC_202502"
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
name: CI Tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ v2 ]
|
||||
pull_request:
|
||||
branches: [ v2 ]
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: pester
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install PSResources
|
||||
run: ./tools/installPSResources.ps1
|
||||
shell: pwsh
|
||||
|
||||
- name: Build
|
||||
run: ./build.ps1 -Build
|
||||
shell: pwsh
|
||||
|
||||
- name: Test
|
||||
run: ./build.ps1 -Test
|
||||
shell: pwsh
|
||||
|
||||
- name: Package
|
||||
run: ./build.ps1 -Publish
|
||||
shell: pwsh
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
if: always()
|
||||
with:
|
||||
name: PSDesiredStateConfiguration-package
|
||||
path: out/**/*.nupkg
|
||||
|
||||
- name: Upload test results
|
||||
uses: actions/upload-artifact@v4
|
||||
if: always()
|
||||
with:
|
||||
name: PSDesiredStateConfiguration-tests
|
||||
path: out/testResults.xml
|
||||
@@ -0,0 +1,155 @@
|
||||
trigger:
|
||||
- main
|
||||
|
||||
schedules:
|
||||
- cron: '18 11 * * 5'
|
||||
displayName: Weekly CodeQL
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
always: true
|
||||
|
||||
parameters:
|
||||
- name: debug
|
||||
displayName: Enable debug output
|
||||
type: boolean
|
||||
default: false
|
||||
- name: OfficialBuild
|
||||
displayName: Use Official OneBranch template
|
||||
type: boolean
|
||||
default: true
|
||||
- name: Release
|
||||
displayName: Generate a release
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
variables:
|
||||
system.debug: ${{ parameters.debug }}
|
||||
BuildConfiguration: Release
|
||||
WindowsContainerImage: onebranch.azurecr.io/windows/ltsc2022/vse2022:latest
|
||||
OneBranchTemplate: ${{ iif(parameters.OfficialBuild, 'v2/OneBranch.Official.CrossPlat.yml@templates', 'v2/OneBranch.NonOfficial.CrossPlat.yml@templates') }}
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
- repository: templates
|
||||
type: git
|
||||
name: OneBranch.Pipelines/GovernedTemplates
|
||||
ref: refs/heads/main
|
||||
|
||||
extends:
|
||||
# https://aka.ms/obpipelines/templates
|
||||
template: ${{ variables.OneBranchTemplate }}
|
||||
parameters:
|
||||
globalSdl: # https://aka.ms/obpipelines/sdl
|
||||
asyncSdl:
|
||||
enabled: true
|
||||
forStages: [build]
|
||||
featureFlags:
|
||||
EnableCDPxPAT: false
|
||||
WindowsHostVersion:
|
||||
Version: 2022
|
||||
Network: KS3
|
||||
release:
|
||||
category: NonAzure
|
||||
stages:
|
||||
- stage: build
|
||||
jobs:
|
||||
- job: main
|
||||
displayName: Build package
|
||||
pool:
|
||||
type: windows
|
||||
variables:
|
||||
ob_outputDirectory: $(Build.SourcesDirectory)/out
|
||||
steps:
|
||||
- pwsh: |
|
||||
$manifest = Import-PowerShellDataFile ./src/PSDesiredStateConfiguration/PSDesiredStateConfiguration.psd1
|
||||
$version = $manifest.ModuleVersion
|
||||
Write-Output "##vso[task.setvariable variable=version;isOutput=true]$version"
|
||||
name: package
|
||||
displayName: Get version from module manifest
|
||||
- task: onebranch.pipeline.version@1
|
||||
displayName: Set OneBranch version
|
||||
inputs:
|
||||
system: Custom
|
||||
customVersion: $(package.version)
|
||||
- pwsh: ./tools/installPSResources.ps1 -PSRepository CFS
|
||||
displayName: Install PSResources
|
||||
- pwsh: ./build.ps1 -Clean -Build -Test
|
||||
displayName: Build
|
||||
- task: onebranch.pipeline.signing@1
|
||||
displayName: Sign 1st-party files
|
||||
inputs:
|
||||
command: sign
|
||||
signing_profile: external_distribution
|
||||
search_root: $(Build.SourcesDirectory)/out
|
||||
files_to_sign: |
|
||||
**/*.psd1;
|
||||
**/*.psm1;
|
||||
- pwsh: ./build.ps1 -Publish
|
||||
displayName: Package module
|
||||
- task: onebranch.pipeline.signing@1
|
||||
displayName: Sign NuGet package
|
||||
inputs:
|
||||
command: sign
|
||||
signing_profile: external_distribution
|
||||
search_root: $(Build.SourcesDirectory)/out
|
||||
files_to_sign: |
|
||||
*.nupkg
|
||||
- stage: release
|
||||
dependsOn: build
|
||||
condition: and(succeeded(), ${{ eq(parameters.Release, true) }})
|
||||
variables:
|
||||
ob_release_environment: ${{ iif(parameters.OfficialBuild, 'Production', 'Test') }}
|
||||
version: $[ stageDependencies.build.main.outputs['package.version'] ]
|
||||
jobs:
|
||||
- job: github
|
||||
displayName: Publish draft to GitHub
|
||||
pool:
|
||||
type: release
|
||||
templateContext:
|
||||
inputs:
|
||||
- input: pipelineArtifact
|
||||
artifactName: drop_build_main
|
||||
steps:
|
||||
- task: GitHubRelease@1
|
||||
displayName: Create GitHub release
|
||||
inputs:
|
||||
gitHubConnection: GitHub
|
||||
repositoryName: PowerShell/PSDesiredStateConfiguration
|
||||
target: v2
|
||||
assets: $(Pipeline.Workspace)/PSDesiredStateConfiguration.$(version).nupkg
|
||||
tagSource: userSpecifiedTag
|
||||
tag: $(version)
|
||||
isDraft: true
|
||||
addChangeLog: false
|
||||
releaseNotesSource: inline
|
||||
releaseNotesInline: "<!-- TODO: Generate release notes on GitHub! -->"
|
||||
- job: validation
|
||||
displayName: Manual validation
|
||||
pool:
|
||||
type: server
|
||||
timeoutInMinutes: 1440
|
||||
steps:
|
||||
- task: ManualValidation@0
|
||||
displayName: Wait 24 hours for validation
|
||||
inputs:
|
||||
notifyUsers: $(Build.RequestedForEmail)
|
||||
instructions: Please validate the release and then publish it!
|
||||
timeoutInMinutes: 1440
|
||||
- job: publish
|
||||
dependsOn: validation
|
||||
displayName: Publish to PowerShell Gallery
|
||||
pool:
|
||||
type: release
|
||||
templateContext:
|
||||
inputs:
|
||||
- input: pipelineArtifact
|
||||
artifactName: drop_build_main
|
||||
steps:
|
||||
- task: NuGetCommand@2
|
||||
displayName: Publish module to PowerShell Gallery
|
||||
inputs:
|
||||
command: push
|
||||
packagesToPush: $(Pipeline.Workspace)/PSDesiredStateConfiguration.$(version).nupkg
|
||||
nuGetFeedType: external
|
||||
publishFeedCredentials: PowerShellGallery
|
||||
@@ -1,78 +0,0 @@
|
||||
name: Build-$(System.PullRequest.PullRequestNumber)-$(Date:yyyyMMdd)$(Rev:.rr)
|
||||
trigger:
|
||||
# Batch merge builds together while a merge build is running
|
||||
batch: true
|
||||
branches:
|
||||
include:
|
||||
- master
|
||||
pr:
|
||||
branches:
|
||||
include:
|
||||
- master
|
||||
- feature-*
|
||||
paths:
|
||||
exclude:
|
||||
- /.dependabot/*
|
||||
- /.poshchan/*
|
||||
- /.github/**/*
|
||||
- /.vscode/**/*
|
||||
- /.vsts-ci/misc-analysis.yml
|
||||
- /tools/**/*
|
||||
- .editorconfig
|
||||
- .gitattributes
|
||||
- .gitignore
|
||||
- /docs/**/*
|
||||
- /CHANGELOG.md
|
||||
- /CONTRIBUTING.md
|
||||
- /README.md
|
||||
- /LICENSE.txt
|
||||
- /CODE_OF_CONDUCT.md
|
||||
|
||||
stages:
|
||||
- stage: Build
|
||||
displayName: Build PowerShell Package
|
||||
jobs:
|
||||
- job: BuildPkg
|
||||
displayName: Build Package
|
||||
pool:
|
||||
vmImage: windows-2019
|
||||
steps:
|
||||
- template: templates/ci-build.yml
|
||||
- pwsh: |
|
||||
Write-Verbose "BUILD_OUTPUT_PATH- $env:BUILD_OUTPUT_PATH" -Verbose
|
||||
Write-Verbose "SIGNED_OUTPUT_PATH- $env:SIGNED_OUTPUT_PATH" -Verbose
|
||||
Copy-Item $env:BUILD_OUTPUT_PATH $env:SIGNED_OUTPUT_PATH -Recurse -Force
|
||||
displayName: Build Signing Placeholder
|
||||
- pwsh: |
|
||||
$(Build.SourcesDirectory)/build.ps1 -Publish -Signed
|
||||
displayName: Publish
|
||||
timeoutInMinutes: 10
|
||||
|
||||
- stage: Test
|
||||
displayName: Test Package
|
||||
jobs:
|
||||
- template: templates/ci-test.yml
|
||||
parameters:
|
||||
jobName: TestPkgWin
|
||||
displayName: PowerShell Core on Windows
|
||||
imageName: windows-2019
|
||||
|
||||
# Not supported on Windows PowerShell per PSD1
|
||||
# - template: test.yml
|
||||
# parameters:
|
||||
# jobName: TestPkgWinPS
|
||||
# displayName: Windows PowerShell on Windows
|
||||
# imageName: windows-2019
|
||||
# powershellExecutable: powershell
|
||||
|
||||
- template: templates/ci-test.yml
|
||||
parameters:
|
||||
jobName: TestPkgUbuntu16
|
||||
displayName: PowerShell Core on Ubuntu 16.04
|
||||
imageName: ubuntu-16.04
|
||||
|
||||
- template: templates/ci-test.yml
|
||||
parameters:
|
||||
jobName: TestPkgWinMacOS
|
||||
displayName: PowerShell Core on macOS
|
||||
imageName: macOS-10.14
|
||||
@@ -1,150 +0,0 @@
|
||||
name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr)
|
||||
|
||||
trigger:
|
||||
batch: true
|
||||
branches:
|
||||
include:
|
||||
- master
|
||||
paths:
|
||||
exclude:
|
||||
- /.dependabot/*
|
||||
- /.poshchan/*
|
||||
- /.github/**/*
|
||||
- /.vscode/**/*
|
||||
- /.vsts-ci/misc-analysis.yml
|
||||
- /tools/**/*
|
||||
- .editorconfig
|
||||
- .gitattributes
|
||||
- .gitignore
|
||||
- /docs/**/*
|
||||
- /CHANGELOG.md
|
||||
- /CONTRIBUTING.md
|
||||
- /README.md
|
||||
- /LICENSE.txt
|
||||
- /CODE_OF_CONDUCT.md
|
||||
|
||||
stages:
|
||||
- stage: Build
|
||||
displayName: Build PowerShell Package
|
||||
jobs:
|
||||
- job: BuildPkg
|
||||
displayName: Build Package
|
||||
pool:
|
||||
name: 'Package ES CodeHub Lab E'
|
||||
steps:
|
||||
- powershell: |
|
||||
$powerShellPath = Join-Path -Path $env:AGENT_TEMPDIRECTORY -ChildPath 'powershell'
|
||||
Invoke-WebRequest -Uri https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.ps1 -outfile ./install-powershell.ps1
|
||||
./install-powershell.ps1 -Destination $powerShellPath
|
||||
$vstsCommandString = "vso[task.setvariable variable=PATH]$powerShellPath;$env:PATH"
|
||||
Write-Host "sending " + $vstsCommandString
|
||||
Write-Host "##$vstsCommandString"
|
||||
displayName: Install PowerShell Core
|
||||
|
||||
- task: PkgESSetupBuild@10
|
||||
displayName: 'Package ES - Setup Build'
|
||||
inputs:
|
||||
productName: PSDesiredStateConfiguration
|
||||
|
||||
- template: templates/shouldsign.yml
|
||||
|
||||
- powershell: |
|
||||
Get-ChildItem -Path env:
|
||||
displayName: Capture environment
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- template: templates/ci-build.yml
|
||||
|
||||
- powershell: |
|
||||
Write-Verbose "BUILD_OUTPUT_PATH- $env:BUILD_OUTPUT_PATH" -Verbose
|
||||
Write-Verbose "SIGNED_OUTPUT_PATH- $env:SIGNED_OUTPUT_PATH" -Verbose
|
||||
Copy-Item $env:BUILD_OUTPUT_PATH $env:SIGNED_OUTPUT_PATH -Recurse -Force
|
||||
displayName: Copy unsigned files first
|
||||
|
||||
- task: PkgESCodeSign@10
|
||||
displayName: 'CodeSign tools/releaseBuild/signing.xml'
|
||||
env:
|
||||
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
|
||||
inputs:
|
||||
signConfigXml: tools/releaseBuild/signing.xml
|
||||
inPathRoot: '$(BUILD_OUTPUT_PATH)'
|
||||
outPathRoot: '$(SIGNED_OUTPUT_PATH)'
|
||||
condition: and(succeeded(), eq(variables['SHOULD_SIGN'], 'true'))
|
||||
|
||||
- task: PowerShell@1
|
||||
displayName: 'Create catalog file'
|
||||
inputs:
|
||||
scriptType: inlineScript
|
||||
inlineScript: |
|
||||
$signedDir = "$env:SIGNED_OUTPUT_PATH\PSDesiredStateConfiguration"
|
||||
New-FileCatalog -CatalogFilePath "$env:SIGNED_OUTPUT_PATH\PSDesiredStateConfiguration\PSDesiredStateConfiguration.cat" -Path "$signedDir"
|
||||
|
||||
- task: PkgESCodeSign@10
|
||||
displayName: 'CodeSign tools/releaseBuild/FileCatalogSigning.xml'
|
||||
env:
|
||||
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
|
||||
inputs:
|
||||
signConfigXml: tools/releaseBuild/FileCatalogSigning.xml
|
||||
inPathRoot: '$(SIGNED_OUTPUT_PATH)'
|
||||
outPathRoot: '$(SIGNED_OUTPUT_PATH)'
|
||||
condition: and(succeeded(), eq(variables['SHOULD_SIGN'], 'true'))
|
||||
|
||||
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
|
||||
displayName: 'Component Detection'
|
||||
|
||||
- task: AntiMalware@3
|
||||
inputs:
|
||||
InputType: 'Basic'
|
||||
ScanType: 'CustomScan'
|
||||
FileDirPath: '$(SIGNED_OUTPUT_PATH)'
|
||||
EnableServices: false
|
||||
SupportLogOnError: false
|
||||
TreatSignatureUpdateFailureAs: 'Warning'
|
||||
SignatureFreshness: 'UpToDate'
|
||||
TreatStaleSignatureAs: 'Error'
|
||||
|
||||
- task: PoliCheck@1
|
||||
condition: succeededOrFailed()
|
||||
inputs:
|
||||
targetType: F
|
||||
optionsFC: 0
|
||||
optionsXS: 0
|
||||
optionsPE: '1|2|3|4'
|
||||
optionsHMENABLE: 0
|
||||
optionsFTPATH: '$(Build.SourcesDirectory)\tools\terms\FileTypeSet.xml'
|
||||
|
||||
- task: CredScan@2
|
||||
condition: succeededOrFailed()
|
||||
|
||||
# Publish results as artifacts
|
||||
- task: PublishSecurityAnalysisLogs@3
|
||||
condition: succeededOrFailed()
|
||||
inputs:
|
||||
ArtifactName: 'CodeAnalysisLogs'
|
||||
ArtifactType: 'Container'
|
||||
|
||||
# Publish to TSA server
|
||||
# - task: TSAUpload@1
|
||||
# condition: succeededOrFailed()
|
||||
# continueOnError: true
|
||||
# inputs:
|
||||
# tsaVersion: 'TsaV2'
|
||||
# codebase: 'Existing'
|
||||
# tsaEnvironment: 'PROD'
|
||||
# codeBaseName: 'PSDesiredStateConfiguration_20190828'
|
||||
# uploadAPIScan: false
|
||||
# uploadBinSkim: false
|
||||
# uploadCredScan: true
|
||||
# uploadFortifySCA: false
|
||||
# uploadFxCop: false
|
||||
# uploadModernCop: false
|
||||
# uploadPoliCheck: true
|
||||
# uploadPREfast: false
|
||||
# uploadRoslyn: false
|
||||
# uploadTSLint: false
|
||||
# uploadAsync: true
|
||||
|
||||
- pwsh: |
|
||||
$(Build.SourcesDirectory)/build.ps1 -Publish -Signed
|
||||
displayName: Publish
|
||||
timeoutInMinutes: 10
|
||||
@@ -1,19 +0,0 @@
|
||||
name: PR-$(System.PullRequest.PullRequestNumber)-$(Date:yyyyMMdd)$(Rev:.rr)
|
||||
trigger:
|
||||
# Batch merge builds together while a merge build is running
|
||||
batch: true
|
||||
branches:
|
||||
include:
|
||||
- master
|
||||
|
||||
pr:
|
||||
branches:
|
||||
include:
|
||||
- master
|
||||
|
||||
resources:
|
||||
- repo: self
|
||||
clean: true
|
||||
|
||||
jobs:
|
||||
- template: templates/credscan.yml
|
||||
@@ -1,16 +0,0 @@
|
||||
steps:
|
||||
- pwsh: |
|
||||
Install-Module -Name "platyPS","Pester" -Force
|
||||
displayName: Install dependencies
|
||||
timeoutInMinutes: 10
|
||||
- pwsh: |
|
||||
Install-Module -Name "PSScriptAnalyzer" -RequiredVersion 1.18.0 -Force
|
||||
displayName: Install PSScriptAnalyzer
|
||||
timeoutInMinutes: 10
|
||||
- pwsh: |
|
||||
Install-Module -Name PSPackageProject -Force
|
||||
displayName: Install PSPackageProject module
|
||||
timeoutInMinutes: 10
|
||||
- pwsh: |
|
||||
$(Build.SourcesDirectory)/build.ps1 -Build
|
||||
displayName: Build
|
||||
@@ -1,112 +0,0 @@
|
||||
parameters:
|
||||
jobName: TestPkgWin
|
||||
imageName: windows-2019
|
||||
displayName: PowerShell Core on Windows
|
||||
powershellExecutable: pwsh
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.jobName }}
|
||||
pool:
|
||||
vmImage: ${{ parameters.imageName }}
|
||||
displayName: ${{ parameters.displayName }}
|
||||
steps:
|
||||
- ${{ parameters.powershellExecutable }}: |
|
||||
if($IsMacOs)
|
||||
{
|
||||
brew update
|
||||
brew cask install powershell-preview
|
||||
sudo ln -s -f /usr/local/microsoft/powershell/7-preview/pwsh /usr/local/bin/pwsh
|
||||
}
|
||||
elseif($IsLinux)
|
||||
{
|
||||
sudo apt-get update
|
||||
sudo apt-get install powershell-preview
|
||||
sudo ln -s /opt/microsoft/powershell/7-preview/pwsh /usr/local/bin/pwsh
|
||||
}
|
||||
elseif($IsWindows)
|
||||
{
|
||||
Invoke-WebRequest -Uri https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.ps1 -outfile ./install-powershell.ps1
|
||||
./install-powershell.ps1 -AddToPath -Preview -Destination C:\powershell-preview
|
||||
$vstsCommandString = "vso[task.setvariable variable=PATH]C:\powershell-preview;$env:PATH"
|
||||
Write-Host "sending " + $vstsCommandString
|
||||
Write-Host "##$vstsCommandString"
|
||||
}
|
||||
displayName: Setup PowerShell preview
|
||||
|
||||
- ${{ parameters.powershellExecutable }}: |
|
||||
$PSVersionTable
|
||||
$vstsCommandString = "vso[task.setvariable variable=PSHOME]$pshome"
|
||||
Write-Host "sending " + $vstsCommandString
|
||||
Write-Host "##$vstsCommandString"
|
||||
displayName: Capture PowerShellVersion
|
||||
|
||||
- ${{ parameters.powershellExecutable }}: |
|
||||
dir env:PATH
|
||||
displayName: Capture Path
|
||||
|
||||
- ${{ parameters.powershellExecutable }}: |
|
||||
Get-PSRepository
|
||||
displayName: Capture PSRepository
|
||||
|
||||
- ${{ parameters.powershellExecutable }}: |
|
||||
Install-Module -Name "platyPS","Pester" -Force
|
||||
displayName: Install dependencies
|
||||
timeoutInMinutes: 10
|
||||
|
||||
- ${{ parameters.powershellExecutable }}: |
|
||||
Install-Module -Name "PSScriptAnalyzer" -RequiredVersion 1.18.0 -Force
|
||||
displayName: Install dependencies
|
||||
timeoutInMinutes: 10
|
||||
|
||||
- ${{ parameters.powershellExecutable }}: |
|
||||
Install-Module -Name PSPackageProject -Force
|
||||
displayName: Install PSPackageProject module
|
||||
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: 'Download artifacts'
|
||||
inputs:
|
||||
buildType: current
|
||||
downloadType: specific
|
||||
itemPattern: '**/*.nupkg'
|
||||
downloadPath: '$(System.ArtifactsDirectory)'
|
||||
|
||||
- ${{ parameters.powershellExecutable }}: |
|
||||
$sourceName = 'pspackageproject-local-repo'
|
||||
Register-PSRepository -Name $sourceName -SourceLocation '$(System.ArtifactsDirectory)' -ErrorAction Ignore
|
||||
$config = Get-PSPackageProjectConfiguration
|
||||
$buildOutputPath = $config.BuildOutputPath
|
||||
$null = New-Item -ItemType Directory -Path $buildOutputPath -Verbose
|
||||
$moduleName = $config.ModuleName
|
||||
Save-Module -Repository $sourceName -Name $moduleName -Path $config.BuildOutputPath
|
||||
displayName: Extract product artifact
|
||||
timeoutInMinutes: 10
|
||||
|
||||
- ${{ parameters.powershellExecutable }}: |
|
||||
Invoke-PSPackageProjectTest -Type Functional
|
||||
displayName: Execute functional tests - InvokeDscResource Disabled
|
||||
errorActionPreference: continue
|
||||
|
||||
- ${{ parameters.powershellExecutable }}: |
|
||||
$configFolder = split-path $PROFILE
|
||||
$configPath = Join-Path $configFolder -ChildPath powershell.config.json
|
||||
copy-Item $(Build.SourcesDirectory)/assets/powershell.config.json $configPath
|
||||
displayName: Enable ExperimentalFeature
|
||||
errorActionPreference: continue
|
||||
|
||||
- ${{ parameters.powershellExecutable }}: |
|
||||
Invoke-PSPackageProjectTest -Type Functional
|
||||
displayName: Execute functional tests - InvokeDscResource Enabled
|
||||
errorActionPreference: continue
|
||||
|
||||
- ${{ parameters.powershellExecutable }}: |
|
||||
Invoke-PSPackageProjectTest -Type StaticAnalysis
|
||||
displayName: Execute static analysis tests
|
||||
errorActionPreference: continue
|
||||
condition: succeededOrFailed()
|
||||
|
||||
|
||||
- ${{ parameters.powershellExecutable }}: |
|
||||
Unregister-PSRepository -Name 'pspackageproject-local-repo' -ErrorAction Ignore
|
||||
displayName: Unregister temporary PSRepository
|
||||
condition: always()
|
||||
timeoutInMinutes: 10
|
||||
@@ -1,31 +0,0 @@
|
||||
parameters:
|
||||
pool: 'Hosted VS2017'
|
||||
jobName: 'credscan'
|
||||
displayName: Secret Scan
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.jobName }}
|
||||
pool:
|
||||
name: ${{ parameters.pool }}
|
||||
|
||||
displayName: ${{ parameters.displayName }}
|
||||
|
||||
steps:
|
||||
- powershell: Write-Host "##vso[build.updatebuildnumber]$env:BUILD_SOURCEBRANCHNAME-$env:BUILD_SOURCEVERSION-$((get-date).ToString("yyyyMMddhhmmss"))"
|
||||
displayName: Set Build Name for Non-PR
|
||||
condition: ne(variables['Build.Reason'], 'PullRequest')
|
||||
|
||||
- task: securedevelopmentteam.vss-secure-development-tools.build-task-credscan.CredScan@2
|
||||
displayName: 'Scan for secrets'
|
||||
inputs:
|
||||
debugMode: false
|
||||
|
||||
- task: securedevelopmentteam.vss-secure-development-tools.build-task-publishsecurityanalysislogs.PublishSecurityAnalysisLogs@2
|
||||
displayName: 'Publish Secret Scan Logs to Build Artifacts'
|
||||
continueOnError: true
|
||||
|
||||
- task: securedevelopmentteam.vss-secure-development-tools.build-task-postanalysis.PostAnalysis@1
|
||||
displayName: 'Check for failures'
|
||||
inputs:
|
||||
CredScan: true
|
||||
ToolLogsNotFoundAction: Error
|
||||
@@ -1,17 +0,0 @@
|
||||
steps:
|
||||
- powershell: |
|
||||
$shouldSign = $true
|
||||
if($env:BUILD_REASON -ne 'Manual')
|
||||
{
|
||||
$shouldSign = $false
|
||||
}
|
||||
|
||||
if($env:SKIP_SIGNING -eq 'Yes')
|
||||
{
|
||||
$shouldSign = $false
|
||||
}
|
||||
|
||||
$vstsCommandString = "vso[task.setvariable variable=SHOULD_SIGN]$($shouldSign.ToString().ToLowerInvariant())"
|
||||
Write-Host ("sending " + $vstsCommandString)
|
||||
Write-Host "##$vstsCommandString"
|
||||
displayName: 'Set SHOULD_SIGN Variable'
|
||||
@@ -0,0 +1,3 @@
|
||||
# Changelogs
|
||||
|
||||
* [v2 changelog](v2.md)
|
||||
@@ -0,0 +1,28 @@
|
||||
# v2 Changelog
|
||||
|
||||
## [v2.0.8]
|
||||
|
||||
- Fixed an issue with array parameters is key-value pairs (#128).
|
||||
- ConvertTo-MOFInstance: Include resource properties with empty array value (#127)
|
||||
|
||||
## [v2.0.7]
|
||||
|
||||
### Main changes
|
||||
|
||||
- Fixed Invoke-DscResource error when a class-based resource module path contains a space.
|
||||
|
||||
[v2.0.7]: https://www.powershellgallery.com/packages/PSDesiredStateConfiguration/2.0.7
|
||||
|
||||
## [v2.0.6]
|
||||
|
||||
### Main changes
|
||||
|
||||
- Fixed `PathSeparator` bug in Get-DSCResourceModules.
|
||||
- Changed `PSDesiredStateConfiguration.InvokeDscResource` from experimental to permanently enabled feature.
|
||||
- Changed `ErrorAction` to `Ignore` so that the error doesn't show up in `$Error`.
|
||||
- Removed duplicate result resources from `Get-DSCResourcesModules`.
|
||||
- Add `ImplementationDetail` member to results only when the member does not already exist.
|
||||
- Updated v2 Release pipeline with latest Compliance requirements.
|
||||
- Added SBOM generation that is now released with v2 module.
|
||||
|
||||
[v2.0.6]: https://www.powershellgallery.com/packages/PSDesiredStateConfiguration/2.0.6
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE
|
||||
@@ -1 +0,0 @@
|
||||
{"ExperimentalFeatures":["PSCommandNotFoundSuggestion","PSForEachObjectParallel","PSImplicitRemotingBatching","Microsoft.PowerShell.Utility.PSDebugRunspaceWithBreakpoints","PSDesiredStateConfiguration.InvokeDscResource"]}
|
||||
@@ -1,19 +0,0 @@
|
||||
# Starter pipeline
|
||||
# Start with a minimal pipeline that you can customize to build and deploy your code.
|
||||
# Add steps that build, run tests, deploy, and more:
|
||||
# https://aka.ms/yaml
|
||||
|
||||
trigger:
|
||||
- master
|
||||
|
||||
pool:
|
||||
vmImage: 'ubuntu-latest'
|
||||
|
||||
steps:
|
||||
- script: echo Hello, world!
|
||||
displayName: 'Run a one-line script'
|
||||
|
||||
- script: |
|
||||
echo Add other tasks to build, test, and deploy your project.
|
||||
echo See https://aka.ms/yaml
|
||||
displayName: 'Run a multi-line script'
|
||||
@@ -1,7 +1,6 @@
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Copyright (c) Microsoft Corporation.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
# Do NOT edit this file. Edit dobuild.ps1
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSAvoidUsingWriteHost", "")]
|
||||
param (
|
||||
[Parameter(ParameterSetName="build")]
|
||||
@@ -15,9 +14,6 @@ param (
|
||||
[Parameter(ParameterSetName="publish")]
|
||||
[switch]
|
||||
$Publish,
|
||||
[Parameter(ParameterSetName="publish")]
|
||||
[switch]
|
||||
$Signed,
|
||||
|
||||
[Parameter(ParameterSetName="build")]
|
||||
[switch]
|
||||
@@ -37,34 +33,15 @@ param (
|
||||
$TestInvokeDscResource
|
||||
)
|
||||
|
||||
$config = Get-PSPackageProjectConfiguration -ConfigPath $PSScriptRoot
|
||||
|
||||
$script:ModuleName = $config.ModuleName
|
||||
$script:SrcPath = $config.SourcePath
|
||||
$script:OutDirectory = $config.BuildOutputPath
|
||||
$script:SignedDirectory = $config.SignedOutputPath
|
||||
$script:TestPath = $config.TestPath
|
||||
|
||||
$script:ModuleRoot = $PSScriptRoot
|
||||
$script:Culture = $config.Culture
|
||||
$script:HelpPath = $config.HelpPath
|
||||
|
||||
if ($env:TF_BUILD) {
|
||||
$vstsCommandString = "vso[task.setvariable variable=BUILD_OUTPUT_PATH]$OutDirectory"
|
||||
Write-Host ("sending " + $vstsCommandString)
|
||||
Write-Host "##$vstsCommandString"
|
||||
|
||||
$vstsCommandString = "vso[task.setvariable variable=SIGNED_OUTPUT_PATH]$SignedDirectory"
|
||||
Write-Host ("sending " + $vstsCommandString)
|
||||
Write-Host "##$vstsCommandString"
|
||||
}
|
||||
# Build configuration
|
||||
$script:ModuleName = "PSDesiredStateConfiguration"
|
||||
$script:SrcPath = Join-Path (Join-Path $PSScriptRoot "src") $ModuleName
|
||||
$script:OutDirectory = Join-Path $PSScriptRoot "out"
|
||||
$script:Culture = "en-US"
|
||||
$script:HelpPath = Join-Path $PSScriptRoot "help"
|
||||
|
||||
. $PSScriptRoot\dobuild.ps1
|
||||
|
||||
if ( ! ( Get-Module -ErrorAction SilentlyContinue PSPackageProject) ) {
|
||||
Install-Module PSPackageProject
|
||||
}
|
||||
|
||||
if ($Clean -and (Test-Path $OutDirectory))
|
||||
{
|
||||
Remove-Item -Force -Recurse $OutDirectory -ErrorAction Stop -Verbose
|
||||
@@ -81,42 +58,48 @@ else
|
||||
|
||||
if ($Build.IsPresent)
|
||||
{
|
||||
$sb = (Get-Item Function:DoBuild).ScriptBlock
|
||||
Invoke-PSPackageProjectBuild -BuildScript $sb -SkipPublish
|
||||
DoBuild
|
||||
}
|
||||
|
||||
if ($Publish.IsPresent)
|
||||
{
|
||||
Invoke-PSPackageProjectPublish -Signed:$Signed.IsPresent
|
||||
DoPackage
|
||||
}
|
||||
|
||||
if ( $TestInvokeDscResource.IsPresent ) {
|
||||
$backupName = $null
|
||||
try {
|
||||
$configFolder = split-path $PROFILE
|
||||
$configPath = Join-Path $configFolder -ChildPath powershell.config.json
|
||||
if(Test-Path ~/.config/powershell/powershell.config.json)
|
||||
{
|
||||
$backupName = Join-Path $configFolder -ChildPath "powershell.config-((Get-Date).ToString('yyyyMMddHHmm')).json"
|
||||
Copy-Item $configPath $backupName -force
|
||||
}
|
||||
if ($Test.IsPresent) {
|
||||
Import-Module Pester -MinimumVersion 5.0.0
|
||||
Import-Module $PSScriptRoot\out\PSDesiredStateConfiguration\PSDesiredStateConfiguration.psd1
|
||||
|
||||
copy-Item $PSScriptRoot/assets/powershell.config.json $configPath
|
||||
Invoke-PSPackageProjectTest -Type $TestType
|
||||
}
|
||||
finally {
|
||||
remove-item $configPath
|
||||
if($backupName)
|
||||
{
|
||||
Copy-Item $backupName $configPath -force
|
||||
}
|
||||
}
|
||||
}
|
||||
$testPath = Join-Path $PSScriptRoot "test"
|
||||
$config = [PesterConfiguration]::Default
|
||||
$config.Run.Path = $testPath
|
||||
$config.Run.Exit = $false
|
||||
$config.TestResult.Enabled = $true
|
||||
$config.TestResult.OutputPath = Join-Path $OutDirectory "testResults.xml"
|
||||
$config.Output.Verbosity = "Detailed"
|
||||
|
||||
if ( $Test.IsPresent ) {
|
||||
Invoke-PSPackageProjectTest -Type $TestType
|
||||
Write-Verbose -Verbose "Running tests from: $testPath"
|
||||
$result = Invoke-Pester -Configuration $config
|
||||
|
||||
if ($result.FailedCount -gt 0) {
|
||||
throw "$($result.FailedCount) test(s) failed"
|
||||
}
|
||||
}
|
||||
|
||||
if ($UpdateHelp.IsPresent) {
|
||||
Add-PSPackageProjectCmdletHelp -ProjectRoot $ModuleRoot -ModuleName $ModuleName -Culture $Culture
|
||||
# Build help using platyPS
|
||||
$docsPath = Join-Path $PSScriptRoot "help"
|
||||
$markdownDocsPath = Join-Path $docsPath "en-US"
|
||||
$outputDocsPath = Join-Path $OutModule "en-US"
|
||||
|
||||
if (-not (Get-Module -ListAvailable platyPS)) {
|
||||
Write-Verbose -Verbose "platyPS module not found, installing"
|
||||
Install-Module -Force -Name platyPS -Scope CurrentUser
|
||||
}
|
||||
|
||||
Import-Module platyPS -Verbose:$false
|
||||
if (-not (Test-Path $outputDocsPath)) {
|
||||
$null = New-Item -Type Directory -Path $outputDocsPath -Force
|
||||
}
|
||||
$null = New-ExternalHelp -Path $markdownDocsPath -OutputPath $outputDocsPath -Force
|
||||
}
|
||||
|
||||
+21
-42
@@ -1,48 +1,27 @@
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
#####################################################
|
||||
# Do NOT edit anything outside the DoBuild function.
|
||||
# You can define functions inside the scope of DoBuild.
|
||||
#####################################################
|
||||
|
||||
<#
|
||||
.DESCRIPTION
|
||||
Implement build and packaging of the package and place the output $OutDirectory/$ModuleName
|
||||
#>
|
||||
function DoBuild
|
||||
{
|
||||
Write-Verbose -Verbose -Message "Starting DoBuild"
|
||||
|
||||
Write-Verbose -Verbose -Message "Copying module files to '${OutDirectory}/${ModuleName}'"
|
||||
# copy psm1 and psd1 files
|
||||
copy-item "${SrcPath}/*" "${OutDirectory}/${ModuleName}" -Recurse
|
||||
#
|
||||
|
||||
# copy help
|
||||
Write-Verbose -Verbose -Message "Copying help files to '${OutDirectory}/${ModuleName}'"
|
||||
copy-item -Recurse "${HelpPath}/${Culture}" "${OutDirectory}/${ModuleName}"
|
||||
|
||||
if ( Test-Path "${SrcPath}/code" ) {
|
||||
Write-Verbose -Verbose -Message "Building assembly and copying to '${OutDirectory}/${ModuleName}'"
|
||||
# build code and place it in the staging location
|
||||
try {
|
||||
Push-Location "${SrcPath}/code"
|
||||
$result = dotnet publish
|
||||
copy-item "bin/Debug/netstandard2.0/publish/${ModuleName}.dll" "${OutDirectory}/${ModuleName}"
|
||||
}
|
||||
catch {
|
||||
$result | ForEach-Object { Write-Warning $_ }
|
||||
Write-Error "dotnet build failed"
|
||||
}
|
||||
finally {
|
||||
Pop-Location
|
||||
}
|
||||
}
|
||||
else {
|
||||
Write-Verbose -Verbose -Message "No code to build in '${SrcPath}/code'"
|
||||
}
|
||||
|
||||
## Add build and packaging here
|
||||
Write-Verbose -Verbose -Message "Ending DoBuild"
|
||||
Write-Verbose -Verbose -Message "Running DoBuild to layout module at: '${OutDirectory}/${ModuleName}'"
|
||||
Copy-Item "${SrcPath}/*" "${OutDirectory}/${ModuleName}" -Recurse
|
||||
Copy-Item -Recurse "${HelpPath}/${Culture}" "${OutDirectory}/${ModuleName}"
|
||||
}
|
||||
|
||||
function DoPackage
|
||||
{
|
||||
try {
|
||||
$repoName = [guid]::NewGuid().ToString()
|
||||
$modulePath = Join-Path $OutDirectory $ModuleName
|
||||
$null = Register-PSRepository -Name $repoName -InstallationPolicy Trusted -SourceLocation $OutDirectory
|
||||
|
||||
Write-Verbose -Verbose -Message "Publishing module from: '$modulePath'"
|
||||
Publish-Module -Path $modulePath -Repository $repoName
|
||||
|
||||
$nupkgPath = (Get-ChildItem -Path $OutDirectory -Filter "$ModuleName*.nupkg" | Select-Object -First 1).FullName
|
||||
Write-Verbose -Verbose -Message "Created package: $nupkgPath"
|
||||
}
|
||||
finally {
|
||||
Unregister-PSRepository -Name $repoName
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
schemaVersion: 1.0.0
|
||||
providers:
|
||||
- provider: InventoryAsCode
|
||||
version: 1.0.0
|
||||
metadata:
|
||||
isProduction: true
|
||||
accountableOwners:
|
||||
service: cc9ed9e4-21e4-4574-9bec-2b92d4413f1b
|
||||
routing:
|
||||
defaultAreaPath:
|
||||
org: msazure
|
||||
path: One\MGMT\Compute\PowerShell Desired State Configuration
|
||||
@@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
|
||||
<metadata minClientVersion="3.4">
|
||||
<id>PSDesiredStateConfiguration</id>
|
||||
<version>2.0</version>
|
||||
<title>PSDesiredStateConfiguration</title>
|
||||
<authors>Microsoft</authors>
|
||||
<owners>microsoft,powershell</owners>
|
||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||
<description>Provides pre-built PSDesiredStateConfiguration module for PowerShell.</description>
|
||||
<summary></summary>
|
||||
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
|
||||
<contentFiles>
|
||||
<files include="**/*" buildAction="None" copyToOutput="true" flatten="false" />
|
||||
</contentFiles>
|
||||
</metadata>
|
||||
</package>
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"HelpPath": "help",
|
||||
"ModuleName": "PSDesiredStateConfiguration",
|
||||
"BuildOutputPath": "out",
|
||||
"SignedOutputPath": "signed",
|
||||
"SourcePath": "src/PSDesiredStateConfiguration",
|
||||
"TestPath": "test",
|
||||
"Culture": "en-US"
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
RootModule = 'PSDesiredStateConfiguration.psm1'
|
||||
|
||||
# Version number of this module.
|
||||
moduleVersion = '2.0.5'
|
||||
moduleVersion = '2.0.8'
|
||||
|
||||
# Supported PSEditions
|
||||
CompatiblePSEditions = @('Core')
|
||||
@@ -100,13 +100,11 @@ HelpInfoURI = 'https://go.microsoft.com/fwlink/?linkid=2113535'
|
||||
|
||||
PrivateData = @{
|
||||
PSData = @{
|
||||
ExperimentalFeatures = @(
|
||||
@{
|
||||
Name = 'PSDesiredStateConfiguration.InvokeDscResource'
|
||||
Description = "Enables the Invoke-DscResource cmdlet and related features."
|
||||
}
|
||||
)
|
||||
}
|
||||
Tags = @('PSDesiredStateConfiguration',
|
||||
'Linux',
|
||||
'Mac',
|
||||
'Windows')
|
||||
ProjectUri = 'https://github.com/PowerShell/PSDesiredStateConfiguration'
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,13 +66,12 @@ data LocalizedData
|
||||
ImportDscResourceWarningForInbuiltResource=The configuration '{0}' is loading one or more built-in resources without explicitly importing associated modules. Add Import-DscResource -ModuleName 'PSDesiredStateConfiguration' to your configuration to avoid this message.
|
||||
PasswordTooLong=An error occurred during encryption of a password in node '{0}'. Most likely the password entered is too long to be encrypted using the selected certificate. Please either use a shorter password or select a certificate with a larger key.
|
||||
PsDscRunAsCredentialNotSupport=The 'PsDscRunAsCredential' property is not currently support when using Invoke-DscResource.
|
||||
EmbeddedResourcesNotSupported=Embedded resources are not support on Linux or macOS. Please see https://aka.ms/PSCoreDSC for more details.
|
||||
'@
|
||||
}
|
||||
Set-StrictMode -Off
|
||||
|
||||
# In case localized resource is not available we revert back to English as defined in LocalizedData section so ignore the error instead of showing it to user.
|
||||
Import-LocalizedData -BindingVariable LocalizedData -FileName PSDesiredStateConfiguration.Resource.psd1 -ErrorAction SilentlyContinue
|
||||
Import-LocalizedData -BindingVariable LocalizedData -FileName PSDesiredStateConfiguration.Resource.psd1 -ErrorAction Ignore
|
||||
|
||||
Import-Module $PSScriptRoot/helpers/DscResourceInfo.psm1
|
||||
|
||||
@@ -510,7 +509,7 @@ function ConvertTo-MOFInstance
|
||||
$targetTypeName = $PropertyTypes[$p.Name].TypeConstraint
|
||||
|
||||
# see if the target type is an array
|
||||
$asArray = $p.Name -eq 'DependsOn' -or $targetTypeName -match 'Array'
|
||||
$asArray = $p.Name -eq 'DependsOn' -or $targetTypeName -match 'Array' -or ((-not [string]::IsNullOrEmpty($targetTypeName)) -and $targetTypeName.EndsWith('[]'))
|
||||
|
||||
# Convert the CIM typename to the appropriate .NET type to use
|
||||
# to convert the input object into an appropriately encoded string
|
||||
@@ -672,10 +671,7 @@ function ConvertTo-MOFInstance
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($targetTypeName -notmatch 'Array' -or $p.Value.Count)
|
||||
{
|
||||
$p.Name + ' = ' + (stringify -value $p.Value -asArray $asArray -targetType $targetType ) + ";`n"
|
||||
}
|
||||
$p.Name + ' = ' + (stringify -value $p.Value -asArray $asArray -targetType $targetType ) + ";`n"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1905,10 +1901,6 @@ function Configuration
|
||||
return $moduleInfos
|
||||
}
|
||||
|
||||
if ( $IsMacOS -or $IsLinux ) {
|
||||
Write-Warning -Message $LocalizedData.EmbeddedResourcesNotSupported
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Write-Debug -Message "BEGIN CONFIGURATION '$Name' PROCESSING: OutputPath: '$OutputPath'"
|
||||
@@ -3684,7 +3676,7 @@ function New-DscChecksum
|
||||
}
|
||||
|
||||
# If the Force parameter was not specified and the hash file already exists for the current file, log this, and skip this file
|
||||
if (!$Force -and (Get-Item -Path $fileOutpath -ErrorAction SilentlyContinue))
|
||||
if (!$Force -and (Get-Item -Path $fileOutpath -ErrorAction Ignore))
|
||||
{
|
||||
Write-Log -Message ($LocalizedData.CheckSumFileExists -f $fileOutpath)
|
||||
continue
|
||||
@@ -3842,7 +3834,7 @@ function ReadEnvironmentFile
|
||||
|
||||
function Get-DSCResourceModules
|
||||
{
|
||||
$listPSModuleFolders = $env:PSModulePath.Split(":")
|
||||
$listPSModuleFolders = $env:PSModulePath.Split([IO.Path]::PathSeparator)
|
||||
$dscModuleFolderList = [System.Collections.Generic.HashSet[System.String]]::new()
|
||||
|
||||
foreach ($folder in $listPSModuleFolders)
|
||||
@@ -4013,9 +4005,11 @@ function Get-DscResource
|
||||
(!$_.IsReservedKeyword) -and ($null -ne $_.ResourceName) -and !(IsHiddenResource $_.ResourceName) -and (![bool]$Module -or ($_.ImplementingModule -like $ModuleString))
|
||||
}
|
||||
|
||||
$dscResourceNames = $keywords.keyword
|
||||
|
||||
$Resources += $keywords |
|
||||
ForEach-Object -Process {
|
||||
GetResourceFromKeyword -keyword $_ -patterns $patterns -modules $modules
|
||||
GetResourceFromKeyword -keyword $_ -patterns $patterns -modules $modules -dscResourceNames $dscResourceNames
|
||||
} |
|
||||
Where-Object -FilterScript {
|
||||
$_ -ne $null
|
||||
@@ -4050,7 +4044,7 @@ function Get-DscResource
|
||||
|
||||
End
|
||||
{
|
||||
$Resources = $Resources | Sort-Object -Property Module, Name
|
||||
$Resources = $Resources | Sort-Object -Property Module, Name -Unique
|
||||
foreach ($resource in $Resources)
|
||||
{
|
||||
# return formatted string if required
|
||||
@@ -4088,9 +4082,11 @@ function GetResourceFromKeyword
|
||||
$patterns,
|
||||
[Parameter(Mandatory)]
|
||||
[System.Management.Automation.PSModuleInfo[]]
|
||||
$modules
|
||||
$modules,
|
||||
[Parameter(Mandatory)]
|
||||
[Object[]]
|
||||
$dscResourceNames
|
||||
)
|
||||
|
||||
$implementationDetail = 'ScriptBased'
|
||||
|
||||
# Find whether $name follows the pattern
|
||||
@@ -4141,7 +4137,8 @@ function GetResourceFromKeyword
|
||||
$schemaToProcess = $classesFromSchema | ForEach-Object -Process {
|
||||
if(($_.CimSystemProperties.ClassName -ieq $keyword.ResourceName) -and ($_.CimSuperClassName -ieq 'OMI_BaseResource'))
|
||||
{
|
||||
if ([ExperimentalFeature]::IsEnabled("PSDesiredStateConfiguration.InvokeDscResource"))
|
||||
$member = Get-Member -InputObject $_ -MemberType NoteProperty -Name 'ImplementationDetail'
|
||||
if ($null -eq $member)
|
||||
{
|
||||
$_ | Add-Member -MemberType NoteProperty -Name 'ImplementationDetail' -Value $implementationDetail -PassThru
|
||||
}
|
||||
@@ -4199,7 +4196,7 @@ function GetResourceFromKeyword
|
||||
|
||||
# add properties
|
||||
$keyword.Properties.Values | ForEach-Object -Process {
|
||||
AddDscResourceProperty $resource $_
|
||||
AddDscResourceProperty $resource $_ $dscResourceNames
|
||||
}
|
||||
|
||||
# sort properties
|
||||
@@ -4211,10 +4208,8 @@ function GetResourceFromKeyword
|
||||
Ascending = $true
|
||||
}
|
||||
$resource.UpdateProperties($updatedProperties)
|
||||
if ([ExperimentalFeature]::IsEnabled("PSDesiredStateConfiguration.InvokeDscResource"))
|
||||
{
|
||||
$resource | Add-Member -MemberType NoteProperty -Name 'ImplementationDetail' -Value $implementationDetail
|
||||
}
|
||||
|
||||
$resource | Add-Member -MemberType NoteProperty -Name 'ImplementationDetail' -Value $implementationDetail
|
||||
|
||||
return $resource
|
||||
}
|
||||
@@ -4291,7 +4286,9 @@ function AddDscResourceProperty
|
||||
[Microsoft.PowerShell.DesiredStateConfiguration.DscResourceInfo]
|
||||
$dscresource,
|
||||
[Parameter(Mandatory)]
|
||||
$property
|
||||
$property,
|
||||
[Parameter(Mandatory)]
|
||||
$dscResourceNames
|
||||
)
|
||||
|
||||
$convertTypeMap = @{
|
||||
@@ -4315,6 +4312,11 @@ function AddDscResourceProperty
|
||||
else
|
||||
{
|
||||
$Type = [System.Management.Automation.LanguagePrimitives]::ConvertTypeNameToPSTypeName($property.TypeConstraint)
|
||||
if ([string]::IsNullOrEmpty($Type)) {
|
||||
$dscResourceNames | ForEach-Object -Process {
|
||||
if (($property.TypeConstraint -eq $_) -or ($property.TypeConstraint -eq ($_ + "[]"))) { $Type = "[$($property.TypeConstraint)]" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($null -ne $property.ValueMap)
|
||||
@@ -4641,7 +4643,6 @@ Export-ModuleMember -Function Get-DscResource, Configuration
|
||||
|
||||
function Invoke-DscResource
|
||||
{
|
||||
[Experimental("PSDesiredStateConfiguration.InvokeDscResource", "Show")]
|
||||
[CmdletBinding(HelpUri = '')]
|
||||
param (
|
||||
[Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory)]
|
||||
@@ -4692,10 +4693,6 @@ function Invoke-DscResource
|
||||
ThrowError -ExceptionName 'System.ArgumentException' -ExceptionMessage $errorMessage -ExceptionObject $exception -ErrorId 'InvalidResourceSpecification,Invoke-DscResource' -ErrorCategory InvalidArgument
|
||||
}
|
||||
|
||||
if ( @($resource.Properties | Where-Object { $_.PropertyType -eq '' }).Count -gt 0 -and ($IsMacOS -or $IsLinux)) {
|
||||
Write-Warning -Message $LocalizedData.EmbeddedResourcesNotSupported
|
||||
}
|
||||
|
||||
[Microsoft.PowerShell.DesiredStateConfiguration.DscResourceInfo] $resource = $resource[0]
|
||||
if($resource.ImplementedAs -ne 'PowerShell')
|
||||
{
|
||||
@@ -4749,7 +4746,7 @@ function Invoke-DscClassBasedResource
|
||||
$iss = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault2()
|
||||
$powershell = [PowerShell]::Create($iss)
|
||||
$script = @"
|
||||
using module $path
|
||||
using module "$path"
|
||||
|
||||
Write-Host -Message ([$type]::new | out-string)
|
||||
return [$type]::new()
|
||||
|
||||
@@ -1,40 +1,24 @@
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
Function Install-ModuleIfMissing {
|
||||
param(
|
||||
[parameter(Mandatory)]
|
||||
[String]
|
||||
$Name,
|
||||
[version]
|
||||
$MinimumVersion,
|
||||
[switch]
|
||||
$SkipPublisherCheck,
|
||||
[switch]
|
||||
$Force
|
||||
)
|
||||
|
||||
$module = Get-Module -Name $Name -ListAvailable -ErrorAction Ignore | Sort-Object -Property Version -Descending | Select-Object -First 1
|
||||
|
||||
if (!$module -or $module.Version -lt $MinimumVersion) {
|
||||
Write-Verbose "Installing module '$Name' ..." -Verbose
|
||||
Install-Module -Name $Name -Force -SkipPublisherCheck:$SkipPublisherCheck.IsPresent
|
||||
BeforeDiscovery {
|
||||
Function global:Test-IsInvokeDscResourceEnable {
|
||||
return ($PSVersionTable.PSVersion.Major -ge 7)
|
||||
}
|
||||
}
|
||||
|
||||
Function Test-IsInvokeDscResourceEnable {
|
||||
return [ExperimentalFeature]::IsEnabled("PSDesiredStateConfiguration.InvokeDscResource")
|
||||
}
|
||||
|
||||
Describe "Test PSDesiredStateConfiguration" -tags CI {
|
||||
Describe "Test PSDesiredStateConfiguration" {
|
||||
Context "Module loading" {
|
||||
BeforeAll {
|
||||
Function BeCommand {
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[object[]] $ActualValue,
|
||||
$ActualValue,
|
||||
[string] $CommandName,
|
||||
[string] $ModuleName,
|
||||
[switch]$Negate
|
||||
[switch]$Negate,
|
||||
[string]$Because,
|
||||
$CallerSessionState
|
||||
)
|
||||
|
||||
$failure = if ($Negate) {
|
||||
@@ -82,7 +66,6 @@ Describe "Test PSDesiredStateConfiguration" -tags CI {
|
||||
BeforeAll {
|
||||
$origProgress = $global:ProgressPreference
|
||||
$global:ProgressPreference = 'SilentlyContinue'
|
||||
Install-ModuleIfMissing -Name PSDscResources
|
||||
$testCases = @(
|
||||
@{
|
||||
TestCaseName = 'case mismatch in resource name'
|
||||
@@ -113,7 +96,7 @@ Describe "Test PSDesiredStateConfiguration" -tags CI {
|
||||
Set-ItResult -Pending -Because "Will only find script from PSDesiredStateConfiguration without modulename"
|
||||
}
|
||||
|
||||
if ($IsLinux) {
|
||||
if (-not $IsWindows) {
|
||||
Set-ItResult -Pending -Because "https://github.com/PowerShell/PSDesiredStateConfiguration/issues/26"
|
||||
}
|
||||
|
||||
@@ -132,7 +115,7 @@ Describe "Test PSDesiredStateConfiguration" -tags CI {
|
||||
it "should be able to get <Name> from <ModuleName> - <TestCaseName>" -TestCases $testCases {
|
||||
param($Name, $ModuleName, $PendingBecause)
|
||||
|
||||
if ($IsLinux) {
|
||||
if (-not $IsWindows) {
|
||||
Set-ItResult -Pending -Because "https://github.com/PowerShell/PSDesiredStateConfiguration/issues/26"
|
||||
}
|
||||
|
||||
@@ -157,10 +140,6 @@ Describe "Test PSDesiredStateConfiguration" -tags CI {
|
||||
$origProgress = $global:ProgressPreference
|
||||
$global:ProgressPreference = 'SilentlyContinue'
|
||||
|
||||
Install-ModuleIfMissing -Name PSDscResources -Force
|
||||
|
||||
# Install PowerShellGet only if PowerShellGet 2.2.1 or newer does not exist
|
||||
Install-ModuleIfMissing -Name PowerShellGet -MinimumVersion '2.2.1'
|
||||
$module = Get-Module PowerShellGet -ListAvailable | Sort-Object -Property Version -Descending | Select-Object -First 1
|
||||
|
||||
$psGetModuleSpecification = @{ModuleName = $module.Name; ModuleVersion = $module.Version.ToString() }
|
||||
@@ -234,7 +213,7 @@ Describe "Test PSDesiredStateConfiguration" -tags CI {
|
||||
it "should be able to get <Name> from <ModuleName> - <TestCaseName>" -TestCases $testCases {
|
||||
param($Name, $ModuleName, $PendingBecause)
|
||||
|
||||
if ($IsLinux) {
|
||||
if (-not $IsWindows) {
|
||||
Set-ItResult -Pending -Because "https://github.com/PowerShell/PSDesiredStateConfiguration/issues/12 and https://github.com/PowerShell/PowerShellGet/pull/529"
|
||||
}
|
||||
|
||||
@@ -268,7 +247,6 @@ Describe "Test PSDesiredStateConfiguration" -tags CI {
|
||||
BeforeAll {
|
||||
$origProgress = $global:ProgressPreference
|
||||
$global:ProgressPreference = 'SilentlyContinue'
|
||||
Install-ModuleIfMissing -Name XmlContentDsc -Force
|
||||
$classTestCases = @(
|
||||
@{
|
||||
TestCaseName = 'Good case'
|
||||
@@ -335,11 +313,6 @@ Describe "Test PSDesiredStateConfiguration" -tags CI {
|
||||
BeforeAll {
|
||||
$origProgress = $global:ProgressPreference
|
||||
$global:ProgressPreference = 'SilentlyContinue'
|
||||
$module = Get-InstalledModule -Name PsDscResources -ErrorAction Ignore
|
||||
if ($module) {
|
||||
Write-Verbose "removing PSDscResources, tests will re-install..." -Verbose
|
||||
Uninstall-Module -Name PsDscResources -AllVersions -Force
|
||||
}
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
@@ -367,26 +340,22 @@ Describe "Test PSDesiredStateConfiguration" -tags CI {
|
||||
}
|
||||
)
|
||||
|
||||
Install-ModuleIfMissing -Name PowerShellGet -Force -SkipPublisherCheck -MinimumVersion '2.2.1'
|
||||
Install-ModuleIfMissing -Name xWebAdministration
|
||||
$module = Get-Module PowerShellGet -ListAvailable | Sort-Object -Property Version -Descending | Select-Object -First 1
|
||||
|
||||
$psGetModuleSpecification = @{ModuleName = $module.Name; ModuleVersion = $module.Version.ToString() }
|
||||
}
|
||||
it "Set method should work" -Skip:(!(Test-IsInvokeDscResourceEnable)) {
|
||||
if (!$IsLinux) {
|
||||
$result = Invoke-DscResource -Name PSModule -ModuleName $psGetModuleSpecification -Method set -Property @{
|
||||
Name = 'PsDscResources'
|
||||
InstallationPolicy = 'Trusted'
|
||||
}
|
||||
if ($env:TF_BUILD -eq 'true') {
|
||||
Set-ItResult -Skipped -Because "cannot install PSDscResources module during tests in Azure DevOps"
|
||||
}
|
||||
else {
|
||||
# workraound because of https://github.com/PowerShell/PowerShellGet/pull/529
|
||||
Install-ModuleIfMissing -Name PsDscResources -Force
|
||||
|
||||
$result = Invoke-DscResource -Name PSModule -ModuleName $psGetModuleSpecification -Method set -Property @{
|
||||
Name = 'PSDscResources'
|
||||
InstallationPolicy = 'Trusted'
|
||||
}
|
||||
|
||||
$result.RebootRequired | Should -BeFalse
|
||||
$module = Get-module PsDscResources -ListAvailable
|
||||
$module = Get-module PSDscResources -ListAvailable
|
||||
$module | Should -Not -BeNullOrEmpty -Because "Resource should have installed module"
|
||||
}
|
||||
it 'Set method should return RebootRequired=<expectedResult> when $global:DSCMachineStatus = <value>' -Skip:(!(Test-IsInvokeDscResourceEnable)) -TestCases $dscMachineStatusCases {
|
||||
@@ -403,18 +372,30 @@ Describe "Test PSDesiredStateConfiguration" -tags CI {
|
||||
}
|
||||
|
||||
it "Test method should return false" -Skip:(!(Test-IsInvokeDscResourceEnable)) {
|
||||
if ($env:TF_BUILD -eq 'true') {
|
||||
Set-ItResult -Skipped -Because "cannot install PSDscResources module during tests in Azure DevOps"
|
||||
}
|
||||
|
||||
$result = Invoke-DscResource -Name Script -ModuleName PSDscResources -Method Test -Property @{TestScript = { Write-Output 'test'; return $false }; GetScript = { return @{ } }; SetScript = { return } }
|
||||
$result | Should -Not -BeNullOrEmpty
|
||||
$result.InDesiredState | Should -BeFalse -Because "Test method return false"
|
||||
}
|
||||
|
||||
it "Test method should return true" -Skip:(!(Test-IsInvokeDscResourceEnable)) {
|
||||
if ($env:TF_BUILD -eq 'true') {
|
||||
Set-ItResult -Skipped -Because "cannot install PSDscResources module during tests in Azure DevOps"
|
||||
}
|
||||
|
||||
$result = Invoke-DscResource -Name Script -ModuleName PSDscResources -Method Test -Property @{TestScript = { Write-Verbose 'test'; return $true }; GetScript = { return @{ } }; SetScript = { return } }
|
||||
$result | Should -BeTrue -Because "Test method return true"
|
||||
}
|
||||
|
||||
it "Test method should return true with moduleSpecification" -Skip:(!(Test-IsInvokeDscResourceEnable)) {
|
||||
$module = get-module PsDscResources -ListAvailable
|
||||
if ($env:TF_BUILD -eq 'true') {
|
||||
Set-ItResult -Skipped -Because "cannot install PSDscResources module during tests in Azure DevOps"
|
||||
}
|
||||
|
||||
$module = get-module PSDscResources -ListAvailable
|
||||
$moduleSpecification = @{ModuleName = $module.Name; ModuleVersion = $module.Version.ToString() }
|
||||
$result = Invoke-DscResource -Name Script -ModuleName $moduleSpecification -Method Test -Property @{TestScript = { Write-Verbose 'test'; return $true }; GetScript = { return @{ } }; SetScript = { return } }
|
||||
$result | Should -BeTrue -Because "Test method return true"
|
||||
@@ -422,32 +403,48 @@ Describe "Test PSDesiredStateConfiguration" -tags CI {
|
||||
|
||||
it "Invalid moduleSpecification" -Skip:(!(Test-IsInvokeDscResourceEnable)) {
|
||||
Set-ItResult -Pending -Because "https://github.com/PowerShell/PSDesiredStateConfiguration/issues/17"
|
||||
$moduleSpecification = @{ModuleName = 'PsDscResources'; ModuleVersion = '99.99.99.993' }
|
||||
$moduleSpecification = @{ModuleName = 'PSDscResources'; ModuleVersion = '99.99.99.993' }
|
||||
{
|
||||
Invoke-DscResource -Name Script -ModuleName $moduleSpecification -Method Test -Property @{TestScript = { Write-Host 'test'; return $true }; GetScript = { return @{ } }; SetScript = { return } } -ErrorAction Stop
|
||||
} |
|
||||
Should -Throw -ErrorId 'InvalidResourceSpecification,Invoke-DscResource' -ExpectedMessage 'Invalid Resource Name ''Script'' or module specification.'
|
||||
}
|
||||
|
||||
it "Resource with embedded resource not supported and a warning should be produced" {
|
||||
|
||||
it "Test an embedded DSC resource" {
|
||||
if (!(Test-IsInvokeDscResourceEnable)) {
|
||||
Set-ItResult -Skipped -Because "Feature not enabled"
|
||||
}
|
||||
|
||||
if (!$IsMacOS) {
|
||||
Set-ItResult -Skipped -Because "Not applicable on Windows and xWebAdministration resources don't load on linux"
|
||||
if ($env:TF_BUILD -eq 'true') {
|
||||
Set-ItResult -Skipped -Because "cannot install PSDscResources module during tests in Azure DevOps"
|
||||
}
|
||||
|
||||
try {
|
||||
Invoke-DscResource -Name xWebSite -ModuleName 'xWebAdministration' -Method Test -Property @{TestScript = 'foobar' } -ErrorAction Stop -WarningVariable warnings
|
||||
}
|
||||
catch{
|
||||
#this will fail too, but that is nat what we are testing...
|
||||
}
|
||||
$resourceName="TestRes"
|
||||
$moduleName="TestEmbeddedDSCResource"
|
||||
$embObj = @(New-Object -TypeName psobject -Property @{embclassprop="property1"})
|
||||
|
||||
$warnings.Count | Should -Be 1 -because "There should be 1 warning on macOS and Linux"
|
||||
$warnings[0] | Should -Match 'embedded resources.*not support'
|
||||
Install-Module -Name $moduleName -Force
|
||||
|
||||
$resource = Get-DscResource -Name $resourceName -Module $moduleName -ErrorAction Stop
|
||||
$resource | Should -Not -BeNullOrEmpty
|
||||
$resource.Name | Should -Be $resourceName
|
||||
|
||||
$methodName="Test"
|
||||
$result = Invoke-DscResource -Name $resourceName -ModuleName $moduleName -Method $methodName -Property @{embclassobj=$embObj;propName="property1"}
|
||||
$result.InDesiredState | Should -BeTrue
|
||||
$result = Invoke-DscResource -Name $resourceName -ModuleName $moduleName -Method $methodName -Property @{embclassobj=$embObj;propName="property2"}
|
||||
$result.InDesiredState | Should -BeFalse
|
||||
|
||||
$methodName="Get"
|
||||
$result = Invoke-DscResource -Name $resourceName -ModuleName $moduleName -Method $methodName -Property @{embclassobj=$embObj;propName="property1"}
|
||||
$result.propName | Should -Be "property1"
|
||||
$result = Invoke-DscResource -Name $resourceName -ModuleName $moduleName -Method $methodName -Property @{embclassobj=$embObj;propName="property2"}
|
||||
$result.propName | Should -Not -Be "property1"
|
||||
|
||||
$methodName="Set"
|
||||
$result = Invoke-DscResource -Name $resourceName -ModuleName $moduleName -Method $methodName -Property @{embclassobj=$embObj;propName="property1"}
|
||||
$result | Should -Not -BeNullOrEmpty
|
||||
$result.RebootRequired | Should -BeFalse
|
||||
}
|
||||
|
||||
it "Using PsDscRunAsCredential should say not supported" -Skip:(!(Test-IsInvokeDscResourceEnable)) {
|
||||
@@ -478,17 +475,21 @@ Describe "Test PSDesiredStateConfiguration" -tags CI {
|
||||
}
|
||||
|
||||
it "Get method should work" -Skip:(!(Test-IsInvokeDscResourceEnable)) {
|
||||
if ($IsLinux) {
|
||||
if ($env:TF_BUILD -eq 'true') {
|
||||
Set-ItResult -Skipped -Because "cannot install PSDscResources module during tests in Azure DevOps"
|
||||
}
|
||||
|
||||
if (-not $IsWindows) {
|
||||
Set-ItResult -Pending -Because "https://github.com/PowerShell/PSDesiredStateConfiguration/issues/12 and https://github.com/PowerShell/PowerShellGet/pull/529"
|
||||
}
|
||||
|
||||
$result = Invoke-DscResource -Name PSModule -ModuleName $psGetModuleSpecification -Method Get -Property @{ Name = 'PsDscResources' }
|
||||
$result = Invoke-DscResource -Name PSModule -ModuleName $psGetModuleSpecification -Method Get -Property @{ Name = 'PSDscResources' }
|
||||
$result | Should -Not -BeNullOrEmpty
|
||||
$result.Author | Should -BeLike 'Microsoft*'
|
||||
$result.InstallationPolicy | Should -BeOfType [string]
|
||||
$result.Guid | Should -BeOfType [Guid]
|
||||
$result.Ensure | Should -Be 'Present'
|
||||
$result.Name | Should -be 'PsDscResources'
|
||||
$result.Name | Should -be 'PSDscResources'
|
||||
$result.Description | Should -BeLike 'This*DSC*'
|
||||
$result.InstalledVersion | should -BeOfType [Version]
|
||||
$result.ModuleBase | Should -BeLike '*PSDscResources*'
|
||||
@@ -498,10 +499,6 @@ Describe "Test PSDesiredStateConfiguration" -tags CI {
|
||||
}
|
||||
|
||||
Context "Class Based Resources" {
|
||||
BeforeAll {
|
||||
Install-ModuleIfMissing -Name XmlContentDsc -Force
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
$Global:ProgressPreference = $origProgress
|
||||
}
|
||||
@@ -533,4 +530,3 @@ Describe "Test PSDesiredStateConfiguration" -tags CI {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
Describe "DSC MOF Compilation" -tags "CI" {
|
||||
Describe "DSC MOF Compilation" {
|
||||
BeforeAll {
|
||||
$module = Get-Module PowerShellGet -ListAvailable | Sort-Object -Property Version -Descending | Select-Object -First 1
|
||||
|
||||
$psGetModuleVersion = $module.Version.ToString()
|
||||
if (!$env:DSC_HOME)
|
||||
{
|
||||
Import-Module PSDesiredStateConfiguration
|
||||
}
|
||||
}
|
||||
|
||||
It "Should be able to compile a MOF using PSModule resource" {
|
||||
if ($IsLinux) {
|
||||
if ($env:GITHUB_ACTIONS -eq 'true' -or $env:TF_BUILD -eq 'true') {
|
||||
Set-ItResult -Skipped -Because "does not work in CI"
|
||||
}
|
||||
|
||||
if (-not $IsWindows) {
|
||||
Set-ItResult -Pending -Because "https://github.com/PowerShell/PowerShellGet/pull/529"
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ Describe "DSC MOF Compilation" -tags "CI" {
|
||||
Node "localhost" {
|
||||
PSModule f1
|
||||
{
|
||||
Name = 'PsDscResources'
|
||||
Name = 'PSDscResources'
|
||||
InstallationPolicy = 'Trusted'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
# Copyright (c) Microsoft Corporation.
|
||||
# Licensed under the MIT License.
|
||||
param(
|
||||
[ValidateSet("PSGallery", "CFS")]
|
||||
[string]$PSRepository = "PSGallery"
|
||||
)
|
||||
|
||||
if ($PSRepository -eq "CFS" -and -not (Get-PSResourceRepository -Name CFS -ErrorAction SilentlyContinue)) {
|
||||
Register-PSResourceRepository -Name CFS -Uri "https://pkgs.dev.azure.com/powershell/PowerShell/_packaging/PowerShellGalleryMirror/nuget/v3/index.json"
|
||||
}
|
||||
|
||||
# NOTE: Due to a bug in Install-PSResource with upstream feeds, we have to
|
||||
# request an exact version. Otherwise, if a newer version is available in the
|
||||
# upstream feed, it will fail to install any version at all.
|
||||
Install-PSResource -Verbose -TrustRepository -RequiredResource @{
|
||||
platyPS = @{
|
||||
version = "0.14.2"
|
||||
repository = $PSRepository
|
||||
}
|
||||
Pester = @{
|
||||
version = "5.7.1"
|
||||
repository = $PSRepository
|
||||
}
|
||||
PSDscResources = @{
|
||||
version = "2.12.0.0"
|
||||
repository = $PSRepository
|
||||
}
|
||||
XmlContentDsc = @{
|
||||
version = "0.0.1"
|
||||
repository = $PSRepository
|
||||
}
|
||||
xWebAdministration = @{
|
||||
version = "3.3.0"
|
||||
repository = $PSRepository
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<SignConfigXML>
|
||||
<job platform="" configuration="" dest="__OUTPATHROOT__" jobname="PSDesiredStateConfiguration Catalog" approvers="vigarg;gstolt">
|
||||
<file src="__INPATHROOT__\PSDesiredStateConfiguration\PSDesiredStateConfiguration.cat" signType="AuthenticodeFormer" dest="__OUTPATHROOT__\PSDesiredStateConfiguration\PSDesiredStateConfiguration.cat" />
|
||||
</job>
|
||||
</SignConfigXML>
|
||||
@@ -1,100 +0,0 @@
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[string] $Path,
|
||||
[string[]] $AuthenticodeDualFiles,
|
||||
[string[]] $AuthenticodeFiles,
|
||||
[string[]] $NuPkgFiles,
|
||||
[string[]] $MacDeveloperFiles,
|
||||
[string[]] $LinuxFiles,
|
||||
[Parameter(Mandatory)]
|
||||
[string] $rootPath
|
||||
)
|
||||
|
||||
$resolvedRootPath = (Resolve-Path $rootPath).ProviderPath
|
||||
|
||||
if ((!$AuthenticodeDualFiles -or $AuthenticodeDualFiles.Count -eq 0) -and
|
||||
(!$AuthenticodeFiles -or $AuthenticodeFiles.Count -eq 0) -and
|
||||
(!$NuPkgFiles -or $NuPkgFiles.Count -eq 0) -and
|
||||
(!$MacDeveloperFiles -or $MacDeveloperFiles.Count -eq 0) -and
|
||||
(!$LinuxFiles -or $LinuxFiles.Count -eq 0))
|
||||
{
|
||||
throw "At least one file must be specified"
|
||||
}
|
||||
|
||||
function New-Attribute
|
||||
{
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[string]$Name,
|
||||
[Parameter(Mandatory)]
|
||||
[object]$Value,
|
||||
[Parameter(Mandatory)]
|
||||
[System.Xml.XmlElement]$Element
|
||||
)
|
||||
|
||||
$attribute = $signingXml.CreateAttribute($Name)
|
||||
$attribute.Value = $value
|
||||
$null = $fileElement.Attributes.Append($attribute)
|
||||
}
|
||||
|
||||
function New-FileElement
|
||||
{
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[string]$File,
|
||||
[Parameter(Mandatory)]
|
||||
[string]$SignType,
|
||||
[Parameter(Mandatory)]
|
||||
[System.Xml.XmlDocument]$XmlDoc,
|
||||
[Parameter(Mandatory)]
|
||||
[System.Xml.XmlElement]$Job
|
||||
)
|
||||
|
||||
if(Test-Path -Path $file)
|
||||
{
|
||||
$name = Split-Path -Leaf -Path $File
|
||||
$fileElement = $XmlDoc.CreateElement("file")
|
||||
$src = $file.replace($resolvedRootPath,'__INPATHROOT__\')
|
||||
$dest = $file.replace($resolvedRootPath,'__OUTPATHROOT__\')
|
||||
New-Attribute -Name 'src' -value $src -Element $fileElement
|
||||
New-Attribute -Name 'signType' -value $SignType -Element $fileElement
|
||||
New-Attribute -Name 'dest' -value $dest -Element $fileElement
|
||||
$null = $job.AppendChild($fileElement)
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Warning -Message "Skipping $SignType; $File because it does not exist"
|
||||
}
|
||||
}
|
||||
|
||||
[xml]$signingXml = get-content (Join-Path -Path $PSScriptRoot -ChildPath 'packagesigning.xml')
|
||||
$job = $signingXml.SignConfigXML.job
|
||||
|
||||
foreach($file in $AuthenticodeDualFiles)
|
||||
{
|
||||
New-FileElement -File $file -SignType 'AuthenticodeDual' -XmlDoc $signingXml -Job $job
|
||||
}
|
||||
|
||||
foreach($file in $AuthenticodeFiles)
|
||||
{
|
||||
New-FileElement -File $file -SignType 'AuthenticodeFormer' -XmlDoc $signingXml -Job $job
|
||||
}
|
||||
|
||||
foreach($file in $NuPkgFiles)
|
||||
{
|
||||
New-FileElement -File $file -SignType 'NuGet' -XmlDoc $signingXml -Job $job
|
||||
}
|
||||
|
||||
foreach ($file in $MacDeveloperFiles) {
|
||||
New-FileElement -File $file -SignType 'MacDeveloper' -XmlDoc $signingXml -Job $job
|
||||
}
|
||||
|
||||
foreach ($file in $LinuxFiles) {
|
||||
New-FileElement -File $file -SignType 'LinuxPack' -XmlDoc $signingXml -Job $job
|
||||
}
|
||||
|
||||
$null = new-item -Path $path -ItemType file -Force
|
||||
$savePath = (Resolve-Path $Path).ProviderPath
|
||||
$signingXml.Save($savePath)
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!-- template used by generatePackageSigning.ps1 -->
|
||||
<SignConfigXML>
|
||||
<job platform="" configuration="" dest="__OUTPATHROOT__\signed" jobname="PSDesiredStateConfiguration module" approvers="vigarg;gstolt">
|
||||
</job>
|
||||
</SignConfigXML>
|
||||
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- template used by generatePackageSigning.ps1 -->
|
||||
<SignConfigXML>
|
||||
<job platform="" configuration="" dest="__OUTPATHROOT__\signed" jobname="PSDesiredStateConfiguration module" approvers="vigarg;gstolt">
|
||||
<file src="__INPATHROOT__\PSDesiredStateConfiguration/helpers/DscResourceInfo.psm1" signType="AuthenticodeFormer" dest="__OUTPATHROOT__\PSDesiredStateConfiguration/helpers/DscResourceInfo.psm1" />
|
||||
<file src="__INPATHROOT__\PSDesiredStateConfiguration/PSDesiredStateConfiguration.psd1" signType="AuthenticodeFormer" dest="__OUTPATHROOT__\PSDesiredStateConfiguration/PSDesiredStateConfiguration.psd1" />
|
||||
<file src="__INPATHROOT__\PSDesiredStateConfiguration/PSDesiredStateConfiguration.psm1" signType="AuthenticodeFormer" dest="__OUTPATHROOT__\PSDesiredStateConfiguration/PSDesiredStateConfiguration.psm1" />
|
||||
</job>
|
||||
</SignConfigXML>
|
||||
@@ -1,379 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xmldata>
|
||||
<PckFileTypes TotalTypes="35" TotalExts="198" UnsupportedFilesOnly="False">
|
||||
<Type ID="0" Check="1">
|
||||
<Name>Pure Text Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.txt</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.des</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.pwd</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.asm</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.cmd</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.ini</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.poc</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.pwt</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hpj</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.sql</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.inf</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.log</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.def</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.url</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.bat</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.aspx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.idl</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.sys</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.resources</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.strings</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.md</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.yml</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.yaml</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.spelling</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.gitignore</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.gitattributes</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.gitmodules</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.csv</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.tsv</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="1" Check="1">
|
||||
<Name>CodeFiles</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.frm</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.inc</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.cpp</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.cls</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.c</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hpp</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.vbs</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.java</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.cs</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.cxx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.h</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.jav</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.bas</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.js</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.pl</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.rc</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.vb</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.json</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.resjson</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.fs</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.fsi</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.fsx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.m</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.psm1</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.config</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.ps1</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.psd1</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.cmake</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.sh</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.cshtml</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.plist</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.mof</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.mc</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="2" Check="1">
|
||||
<Name>XML Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.xml</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxa</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxk</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxl</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.xsl</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxc</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxt</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxm</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.resx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxe</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxf</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxv</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.acctb</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.accfl</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.xaml</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.ttml</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.ddue</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.sln</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.props</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.ps1xml</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.csproj</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.xsd</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.svg</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.clixml</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.nuspec</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.cdxml</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.manifest</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="3" Check="1">
|
||||
<Name>Microsoft Word Documents</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.doc</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.dot</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.wiz</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="4" Check="1">
|
||||
<Name>Microsoft Access Database Compatible</Name>
|
||||
<Extensions>
|
||||
<Ext Check="0" UseCustomParser="0" DllPath="" ClassName="">.mdb</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.mda</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.mde</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.mpd</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.mdt</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="5" Check="1">
|
||||
<Name>Microsoft PowerPoint Presentation</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.ppt</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.pot</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.pps</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="6" Check="1">
|
||||
<Name>Microsoft Publisher Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.pub</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="7" Check="1">
|
||||
<Name>Microsoft Excel Workbooks</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.xls</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.xlt</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="8" Check="1">
|
||||
<Name>Pure Binary Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.com</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.bin</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.tlb</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.drv</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.fon</Ext>
|
||||
<Ext Check="0" UseCustomParser="0" DllPath="" ClassName="">.blg</Ext>
|
||||
<Ext Check="0" UseCustomParser="0" DllPath="" ClassName="">.gif</Ext>
|
||||
<Ext Check="0" UseCustomParser="0" DllPath="" ClassName="">.png</Ext>
|
||||
<Ext Check="0" UseCustomParser="0" DllPath="" ClassName="">.icns</Ext>
|
||||
<Ext Check="0" UseCustomParser="0" DllPath="" ClassName="">.ico</Ext>
|
||||
<Ext Check="0" UseCustomParser="0" DllPath="" ClassName="">.bmp</Ext>
|
||||
<Ext Check="0" UseCustomParser="0" DllPath="" ClassName="">.pfx</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="9" Check="1">
|
||||
<Name>Localization resource databases</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.edb</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.lcl</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.xlf</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.xliff</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="10" Check="1">
|
||||
<Name>Microsoft Project Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.mpp</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.mpt</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="11" Check="1">
|
||||
<Name>Microsoft Visio Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.vsd</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.vdx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.vss</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.vst</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="12" Check="1">
|
||||
<Name>Windows Installer databases</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.msi</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.msm</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="13" Check="1">
|
||||
<Name>Zip Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.zip</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.accdt</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.axtr</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="14" Check="1">
|
||||
<Name>Cabinet / MS Compression Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.cab</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="15" Check="1">
|
||||
<Name>Table driven IME lexicons</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.mb</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="16" Check="1">
|
||||
<Name>IME ( IMD ) Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.imd</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="17" Check="1">
|
||||
<Name>TrueType Font Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.ttf</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="18" Check="1">
|
||||
<Name>Microsoft Outlook Mail Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.msg</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.oft</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="19" Check="1">
|
||||
<Name>HTML Help 2.0 Files / InfoTech5.x Storage System Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.its</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxh</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxr</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxw</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxi</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxs</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hxq</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="20" Check="1">
|
||||
<Name>Adobe Acrobat PDF Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.pdf</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="21" Check="1">
|
||||
<Name>HTML Files / Web Page</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.htm</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.dtd</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hhk</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.htw</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.asp</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.htc</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.htx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.html</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.hhc</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.css</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.stm</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="22" Check="1">
|
||||
<Name>Rich Text Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.rtf</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="23" Check="1">
|
||||
<Name>Windows 3.x Write Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.wri</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="24" Check="1">
|
||||
<Name>MHTML Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.eml</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.nws</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.mht</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="25" Check="1">
|
||||
<Name>Word 2007 Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.docx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.docm</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.dotx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.dotm</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="26" Check="1">
|
||||
<Name>Excel 2007 Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.xlsx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.xlsm</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.xltx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.xltm</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.xlsb</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.xlam</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="27" Check="1">
|
||||
<Name>Power Point 2007 Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.pptx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.pptm</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.potx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.potm</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.ppsx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.ppsm</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.ppam</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="28" Check="1">
|
||||
<Name>Access 2007 Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.accdb</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.accde</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.accdr</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="29" Check="1">
|
||||
<Name>Win32/64-based executable (image) Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.exe</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.dll</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.ocx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.scr</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.acm</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.rll</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.cpl</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.mui</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.ax</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.ime</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="30" Check="1">
|
||||
<Name>HTML Help 1.0 Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.chm</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="31" Check="1">
|
||||
<Name>LocStudio lsg</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.lsg</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="32" Check="1">
|
||||
<Name>Microsoft Office OneNote Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.one</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.onepkg</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="33" Check="1">
|
||||
<Name>Custom Parsers</Name>
|
||||
<Extensions>
|
||||
</Extensions>
|
||||
</Type>
|
||||
<Type ID="34" Check="1">
|
||||
<Name>Visio 2011 Files</Name>
|
||||
<Extensions>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.vstx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.vsdx</Ext>
|
||||
<Ext Check="1" UseCustomParser="0" DllPath="" ClassName="">.vssx</Ext>
|
||||
</Extensions>
|
||||
</Type>
|
||||
|
||||
</PckFileTypes>
|
||||
</xmldata>
|
||||
@@ -1,7 +0,0 @@
|
||||
&$PSScriptRoot/build.ps1 -Build -Clean
|
||||
Write-Verbose -Message "Updating signing.xml ..." -Verbose
|
||||
$files = @(Get-ChildItem $PSScriptRoot/out/*.ps* -Recurse | Select-Object -ExpandProperty FullName)
|
||||
&$PSScriptRoot/tools/releaseBuild/generatePackgeSigning.ps1 -AuthenticodeFiles $files -path $PSScriptRoot/tools/releaseBuild/signing.xml -rootPath $PSScriptRoot/out/
|
||||
Write-Verbose -Message "Done ..." -Verbose
|
||||
# Make sure the file ends with an empty line
|
||||
Add-Content -value '' -Path $PSScriptRoot/tools/releaseBuild/signing.xml
|
||||
Reference in New Issue
Block a user