Compare commits

..

7 Commits

Author SHA1 Message Date
unknown e6a0d60679 Added latest azure-pipelines-release.yml 2021-05-24 16:11:50 -07:00
unknown 9905baa128 Update 1 2021-04-08 14:22:28 -07:00
unknown 9f9db25932 Merge branch 'master' of https://github.com/anmenaga/PSDesiredStateConfiguration into CI-Updates 2021-04-08 14:19:49 -07:00
Andrew 279158943b Deleted empty azure-pipelines.yml (#1) 2021-04-08 12:02:07 -07:00
unknown 93a4a232ec Update 1 2021-04-07 14:50:56 -07:00
bagajjal 836f7e532c support embedded resource (#38) 2020-08-31 17:20:16 -07:00
Travis Plunk 7ac2ce4d07 Fix CI issues (#40) 2020-08-13 17:22:12 -07:00
6 changed files with 36 additions and 203 deletions
+10 -136
View File
@@ -20,145 +20,19 @@ resources:
stages: stages:
- stage: Build - stage: Build
displayName: Build PSDesiredStateConfiguration module displayName: Build PSDesiredStateConfiguration module
pool:
name: Package ES CodeHub Lab E
jobs: jobs:
- job: BuildPkg - job: BuildPkg
displayName: Build Package displayName: Build Package
variables:
- group: ESRP
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: NuGetToolInstaller@1
displayName: 'Install NuGet 5.9.1'
inputs:
checkLatest: false
version: 5.9.1
- pwsh: |
Get-ChildItem -Path env:
displayName: Capture environment for build
condition: succeededOrFailed()
- pwsh: |
$modulePath = Join-Path -Path $env:AGENT_TEMPDIRECTORY -ChildPath 'TempModules'
if (Test-Path -Path $modulePath) {
Write-Verbose -Verbose "Deleting existing temp module path: $modulePath"
Remove-Item -Path $modulePath -Recurse -Force -ErrorAction Ignore
}
if (! (Test-Path -Path $modulePath)) {
Write-Verbose -Verbose "Creating new temp module path: $modulePath"
$null = New-Item -Path $modulePath -ItemType Directory
}
displayName: Create temporary module path
- pwsh: |
$modulePath = Join-Path -Path $env:AGENT_TEMPDIRECTORY -ChildPath 'TempModules'
Write-Verbose -Verbose "Install PowerShellGet V3 to temp module path"
Save-Module -Name PowerShellGet -Path $modulePath -MinimumVersion 3.0.0-beta10 -AllowPrerelease -Force
Write-Verbose -Verbose "Install PlatyPS to temp module path"
Save-Module -Name "platyPS" -Path $modulePath -Force
Write-Verbose -Verbose "Install PSScriptAnalyzer to temp module path"
Save-Module -Name "PSScriptAnalyzer" -Path $modulePath -RequiredVersion 1.18.0 -Force
Write-Verbose -Verbose "Install Pester 4.X to temp module path"
Save-Module -Name "Pester" -MaximumVersion 4.99 -Path $modulePath -Force
Write-Verbose -Verbose "Install PSPackageProject to temp module path"
Save-Module -Name PSPackageProject -Path $modulePath -Force
displayName: Install PSPackageProject and dependencies
- pwsh: |
$modulePath = Join-Path -Path $env:AGENT_TEMPDIRECTORY -ChildPath 'TempModules'
$env:PSModulePath = $modulePath + [System.IO.Path]::PathSeparator + $env:PSModulePath
$modPath = Join-Path -Path $modulePath -ChildPath PSPackageProject
Write-Verbose -Verbose "Importing PSPackageProject from: $modPath"
Import-Module -Name $modPath -Force
#
$(Build.SourcesDirectory)/build.ps1 -Build -Clean
displayName: Execute build
- pwsh: |
$signSrcPath = "$(Build.SourcesDirectory)\out\PSDesiredStateConfiguration"
# Set signing src path variable
$vstsCommandString = "vso[task.setvariable variable=signSrcPath]${signSrcPath}"
Write-Host "sending " + $vstsCommandString
Write-Host "##$vstsCommandString"
$signOutPath = "$(Build.SourcesDirectory)\signed\PSDesiredStateConfiguration"
$null = New-Item -ItemType Directory -Path $signOutPath
# Set signing out path variable
$vstsCommandString = "vso[task.setvariable variable=signOutPath]${signOutPath}"
Write-Host "sending " + $vstsCommandString
Write-Host "##$vstsCommandString"
# Set path variable for guardian codesign validation
$vstsCommandString = "vso[task.setvariable variable=GDN_CODESIGN_TARGETDIRECTORY]${signOutPath}"
Write-Host "sending " + $vstsCommandString
Write-Host "##$vstsCommandString"
displayName: Setup variables for signing
- template: EsrpSign.yml@ComplianceRepo
parameters:
# the folder which contains the binaries to sign
buildOutputPath: $(signSrcPath)
# the location to put the signed output
signOutputPath: $(signOutPath)
# the certificate ID to use
certificateId: "CP-230012"
# the file pattern to use, comma separated
pattern: '*.psm1,*.psd1'
- pwsh: |
$repoName = [guid]::newGuid().ToString("N")
$packageRoot = "$(Build.SourcesDirectory)\signed\PSDesiredStateConfiguration"
Register-PSRepository -Name $repoName -SourceLocation $packageRoot -InstallationPolicy Trusted
Publish-Module -Path $packageRoot -Repository $repoName
Unregister-PSRepository -Name $repoName
Get-ChildItem -Recurse -Path $packageRoot | Write-Verbose -Verbose
$nupkgPath = (Get-ChildItem -Recurse -Path $packageRoot -Filter "PSDesiredStateConfiguration*.nupkg" | select -First 1).FullName
Write-Host "##vso[artifact.upload containerfolder=nupkg;artifactname=nupkg]$nupkgPath"
displayName: Package and publish nupkg
name: ProduceNupkg
- publish: "$(signSrcPath)"
artifact: Build
displayName: Publish build
- publish: "$(signOutPath)"
artifact: SignedBuild
displayName: Publish signed build
- stage: Compliance
displayName: Compliance
dependsOn: Build
jobs:
- job: Compliance_Job
pool: pool:
name: Package ES CodeHub Lab E vmImage: windows-latest
steps: steps:
- checkout: self - template: templates/ci-build.yml
- checkout: ComplianceRepo
- download: current
artifact: SignedBuild
- pwsh: | - pwsh: |
Get-ChildItem -Path "$(Pipeline.Workspace)\SignedBuild" -Recurse Write-Verbose "BUILD_OUTPUT_PATH- $env:BUILD_OUTPUT_PATH" -Verbose
displayName: Capture downloaded artifacts Write-Verbose "SIGNED_OUTPUT_PATH- $env:SIGNED_OUTPUT_PATH" -Verbose
- template: ci-compliance.yml@ComplianceRepo Copy-Item $env:BUILD_OUTPUT_PATH $env:SIGNED_OUTPUT_PATH -Recurse -Force
parameters: displayName: Build Signing Placeholder
# component-governance - pwsh: |
sourceScanPath: '$(Pipeline.Workspace)\SignedBuild' $(Build.SourcesDirectory)/build.ps1 -Publish -Signed
# credscan displayName: Publish
suppressionsFile: '' timeoutInMinutes: 10
# TermCheck
optionsRulesDBPath: ''
optionsFTPath: ''
# tsa-upload
codeBaseName: 'PSDesiredStateConfiguration_20210423'
# selections
APIScan: false # set to false when not using Windows APIs.
+7 -26
View File
@@ -9,19 +9,11 @@ resources:
endpoint: ComplianceGHRepo endpoint: ComplianceGHRepo
name: PowerShell/compliance name: PowerShell/compliance
variables:
- name: PackageName
value: 'PSDesiredStateConfiguration'
- name: PackageVersion
value: '2.0.6'
stages: stages:
- stage: Build - stage: Build
displayName: Build PSDesiredStateConfiguration module displayName: Build PSDesiredStateConfiguration module
pool: pool:
name: PowerShell1ES name: Package ES CodeHub Lab E
demands:
- ImageOverride -equals PSMMS2019-Secure
jobs: jobs:
- job: BuildPkg - job: BuildPkg
displayName: Build Package displayName: Build Package
@@ -31,14 +23,14 @@ stages:
- powershell: | - powershell: |
$powerShellPath = Join-Path -Path $env:AGENT_TEMPDIRECTORY -ChildPath '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 Invoke-WebRequest -Uri https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.ps1 -outfile ./install-powershell.ps1
./install-powershell.ps1 -Preview -Destination $powerShellPath ./install-powershell.ps1 -Destination $powerShellPath
$vstsCommandString = "vso[task.setvariable variable=PATH]$powerShellPath;$env:PATH" $vstsCommandString = "vso[task.setvariable variable=PATH]$powerShellPath;$env:PATH"
Write-Host "sending " + $vstsCommandString Write-Host "sending " + $vstsCommandString
Write-Host "##$vstsCommandString" Write-Host "##$vstsCommandString"
displayName: Install PowerShell Core displayName: Install PowerShell Core
- task: NuGetToolInstaller@1 - task: NuGetToolInstaller@1
displayName: 'Install NuGet' displayName: 'Install NuGet 5.9.1'
inputs: inputs:
checkLatest: false checkLatest: false
version: 5.9.1 version: 5.9.1
@@ -113,13 +105,6 @@ stages:
# the file pattern to use, comma separated # the file pattern to use, comma separated
pattern: '*.psm1,*.psd1' pattern: '*.psm1,*.psd1'
- template: Sbom.yml@ComplianceRepo
parameters:
BuildDropPath: "$(Build.SourcesDirectory)/signed/PSDesiredStateConfiguration"
Build_Repository_Uri: 'https://github.com/PowerShell/PSDesiredStateConfiguration'
PackageName: $(PackageName)
PackageVersion: $(PackageVersion)
- pwsh: | - pwsh: |
$repoName = [guid]::newGuid().ToString("N") $repoName = [guid]::newGuid().ToString("N")
$packageRoot = "$(Build.SourcesDirectory)\signed\PSDesiredStateConfiguration" $packageRoot = "$(Build.SourcesDirectory)\signed\PSDesiredStateConfiguration"
@@ -146,9 +131,7 @@ stages:
jobs: jobs:
- job: Compliance_Job - job: Compliance_Job
pool: pool:
name: PowerShell1ES name: Package ES CodeHub Lab E
demands:
- ImageOverride -equals PSMMS2019-Secure
steps: steps:
- checkout: self - checkout: self
- checkout: ComplianceRepo - checkout: ComplianceRepo
@@ -181,9 +164,7 @@ stages:
- deployment: DeployPowerShellGallery - deployment: DeployPowerShellGallery
displayName: Deploy nupkg to PowerShell Gallery displayName: Deploy nupkg to PowerShell Gallery
pool: pool:
name: PowerShell1ES vmImage: windows-latest
demands:
- ImageOverride -equals PSMMS2019-Secure
environment: 'PSDesiredStateConfiguration-ReleaseApproval' environment: 'PSDesiredStateConfiguration-ReleaseApproval'
strategy: strategy:
runOnce: runOnce:
@@ -192,7 +173,7 @@ stages:
- download: current - download: current
artifact: 'nupkg' artifact: 'nupkg'
- task: NuGetToolInstaller@1 - task: NuGetToolInstaller@1
displayName: 'Install NuGet' displayName: 'Install NuGet 5.9.1'
inputs: inputs:
checkLatest: false checkLatest: false
version: 5.9.1 version: 5.9.1
@@ -202,4 +183,4 @@ stages:
command: push command: push
packagesToPush: '$(Pipeline.Workspace)\nupkg\PSDesiredStateConfiguration.*.nupkg' packagesToPush: '$(Pipeline.Workspace)\nupkg\PSDesiredStateConfiguration.*.nupkg'
nuGetFeedType: external nuGetFeedType: external
publishFeedCredentials: 'PowerShellGallery' publishFeedCredentials: 'PowerShellGallery'
-3
View File
@@ -1,3 +0,0 @@
# Changelogs
* [v2 changelog](v2.md)
-23
View File
@@ -1,23 +0,0 @@
# v2 Changelog
## [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
@@ -9,7 +9,7 @@
RootModule = 'PSDesiredStateConfiguration.psm1' RootModule = 'PSDesiredStateConfiguration.psm1'
# Version number of this module. # Version number of this module.
moduleVersion = '2.0.7' moduleVersion = '2.0.5'
# Supported PSEditions # Supported PSEditions
CompatiblePSEditions = @('Core') CompatiblePSEditions = @('Core')
@@ -100,11 +100,13 @@ HelpInfoURI = 'https://go.microsoft.com/fwlink/?linkid=2113535'
PrivateData = @{ PrivateData = @{
PSData = @{ PSData = @{
Tags = @('PSDesiredStateConfiguration', ExperimentalFeatures = @(
'Linux', @{
'Mac', Name = 'PSDesiredStateConfiguration.InvokeDscResource'
'Windows') Description = "Enables the Invoke-DscResource cmdlet and related features."
ProjectUri = 'https://github.com/PowerShell/PSDesiredStateConfiguration' }
)
}
} }
}
} }
@@ -71,7 +71,7 @@ data LocalizedData
Set-StrictMode -Off 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. # 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 Ignore Import-LocalizedData -BindingVariable LocalizedData -FileName PSDesiredStateConfiguration.Resource.psd1 -ErrorAction SilentlyContinue
Import-Module $PSScriptRoot/helpers/DscResourceInfo.psm1 Import-Module $PSScriptRoot/helpers/DscResourceInfo.psm1
@@ -3679,7 +3679,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 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 Ignore)) if (!$Force -and (Get-Item -Path $fileOutpath -ErrorAction SilentlyContinue))
{ {
Write-Log -Message ($LocalizedData.CheckSumFileExists -f $fileOutpath) Write-Log -Message ($LocalizedData.CheckSumFileExists -f $fileOutpath)
continue continue
@@ -4047,7 +4047,7 @@ function Get-DscResource
End End
{ {
$Resources = $Resources | Sort-Object -Property Module, Name -Unique $Resources = $Resources | Sort-Object -Property Module, Name
foreach ($resource in $Resources) foreach ($resource in $Resources)
{ {
# return formatted string if required # return formatted string if required
@@ -4140,8 +4140,7 @@ function GetResourceFromKeyword
$schemaToProcess = $classesFromSchema | ForEach-Object -Process { $schemaToProcess = $classesFromSchema | ForEach-Object -Process {
if(($_.CimSystemProperties.ClassName -ieq $keyword.ResourceName) -and ($_.CimSuperClassName -ieq 'OMI_BaseResource')) if(($_.CimSystemProperties.ClassName -ieq $keyword.ResourceName) -and ($_.CimSuperClassName -ieq 'OMI_BaseResource'))
{ {
$member = Get-Member -InputObject $_ -MemberType NoteProperty -Name 'ImplementationDetail' if ([ExperimentalFeature]::IsEnabled("PSDesiredStateConfiguration.InvokeDscResource"))
if ($null -eq $member)
{ {
$_ | Add-Member -MemberType NoteProperty -Name 'ImplementationDetail' -Value $implementationDetail -PassThru $_ | Add-Member -MemberType NoteProperty -Name 'ImplementationDetail' -Value $implementationDetail -PassThru
} }
@@ -4211,8 +4210,10 @@ function GetResourceFromKeyword
Ascending = $true Ascending = $true
} }
$resource.UpdateProperties($updatedProperties) $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 return $resource
} }
@@ -4646,6 +4647,7 @@ Export-ModuleMember -Function Get-DscResource, Configuration
function Invoke-DscResource function Invoke-DscResource
{ {
[Experimental("PSDesiredStateConfiguration.InvokeDscResource", "Show")]
[CmdletBinding(HelpUri = '')] [CmdletBinding(HelpUri = '')]
param ( param (
[Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory)] [Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory)]
@@ -4749,7 +4751,7 @@ function Invoke-DscClassBasedResource
$iss = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault2() $iss = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault2()
$powershell = [PowerShell]::Create($iss) $powershell = [PowerShell]::Create($iss)
$script = @" $script = @"
using module "$path" using module $path
Write-Host -Message ([$type]::new | out-string) Write-Host -Message ([$type]::new | out-string)
return [$type]::new() return [$type]::new()