CommonTasks icon indicating copy to clipboard operation
CommonTasks copied to clipboard

RequiredModulesDirectory Override Parameter in build.ps1 not working

Open beardjo opened this issue 3 years ago • 3 comments

Problem description

When trying to use the RequiredModulesDirectory parameter to override the default location of the RequireModules folder (output/RequiredModules) the path passed in never gets populated with the RequiredModule files, they continue to land in output/RequiredModules.

Verbose logs

No logs, just the resultant RequiredModules files are in the wrong place during build.

How to reproduce

Launch the build as follows: .\build.ps1 -ResolveDependency -RequiredModulesDirectory RequiredModules

Expected behavior

RequiredModules files should end up in ./RequiredModules.

Current behavior

RequiredModules files currently end up in the default location of./output/RequiredModules.

Suggested solution

Add Target parameter to the Invoke-PSDepend call as follows:

    if (Test-Path -Path $DependencyFile)
    {
        $psDependParameters = @{
            Force = $true
            Path  = $DependencyFile
            Target = $PSDependTarget
        }

        # TODO: Handle when the Dependency file is in YAML, and -WithYAML is specified.
        Invoke-PSDepend @psDependParameters
    }

Operating system the target node is running

OsName               : Microsoft Windows 10 Enterprise
OsOperatingSystemSKU : EnterpriseEdition
OsArchitecture       : 64-bit
WindowsVersion       : 2009
WindowsBuildLabEx    : 19041.1.amd64fre.vb_release.191206-1406
OsLanguage           : en-US
OsMuiLanguages       : {en-US}

PowerShell version and build the target node is running

Name                           Value
----                           -----
PSVersion                      5.1.19041.1682
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.19041.1682
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Module version used

0.7.0 (latest)

beardjo avatar Jul 13 '22 16:07 beardjo

that parameter changes where it looks for them. The RequiredModules.psd1 defines where to save them.

gaelcolas avatar Jul 13 '22 16:07 gaelcolas

Ok thanks...I guess I don't see the point of the -RequiredModulesDirectory parameter then.

beardjo avatar Jul 13 '22 16:07 beardjo

I tried your suggestion and changed the path for the output in RequiredModules.psd1.

Everything seems to work until the build tries to compress the modules:

ERROR: Cannot validate argument on parameter 'Name'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command 
again.
At C:\Users\beardjo\repos_local\BECU.DSCDatum.POCLocal\RequiredModules\DscBuildHelpers\0.2.1\DscBuildHelpers.psm1:367 char:27
+         $AllDscResource = Get-DscResource
+                           ~~~~~~~~~~~~~~~
At C:\Users\beardjo\repos_local\BECU.DSCDatum.POCLocal\RequiredModules\Sampler.DscPipeline\0.2.0\tasks\CompressModulesWithChecksum.build.ps1:35 char:1
+ task CompressModulesWithChecksum {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Build FAILED. 11 tasks, 1 errors, 0 warnings 00:12:05.8890476
Get-DscResource : Cannot validate argument on parameter 'Name'. The argument is null or empty. Provide an argument that is not null or empty, and then try 
the command again.
At C:\Users\beardjo\repos_local\BECU.DSCDatum.POCLocal\RequiredModules\DscBuildHelpers\0.2.1\DscBuildHelpers.psm1:367 char:27
+         $AllDscResource = Get-DscResource
+                           ~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Get-DscResource], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Get-DscResource

beardjo avatar Jul 13 '22 22:07 beardjo